Поиск по сайту:

Как использовать команду ip в Linux


Вы можете настроить IP-адреса, сетевые интерфейсы и правила маршрутизации на лету с помощью команды Linux ip. Мы покажем вам, как вы можете использовать эту современную замену классического (и теперь устаревшего) ifconfig.

Как работает команда ip

С помощью команды ip вы можете настроить способ обработки компьютером Linux IP-адресов, контроллеров сетевых интерфейсов (NIC) и правил маршрутизации. Изменения также вступают в силу немедленно — вам не нужно перезагружаться. Команда ip может сделать гораздо больше, но в этой статье мы сосредоточимся на наиболее распространенных вариантах ее использования.

Команда ip имеет множество подкоманд, каждая из которых работает с определенным типом объектов, например с IP-адресами и маршрутами. Есть, в свою очередь, множество вариантов для каждого из этих объектов. Именно это богатство функций дает команде ip детализацию, необходимую для выполнения деликатных задач. Это не работа топором — здесь нужен набор скальпелей.

Мы рассмотрим следующие объекты:

  • Адрес: IP-адреса и диапазоны.
  • Связь: сетевые интерфейсы, такие как проводное подключение и адаптеры Wi-Fi.
  • Маршрут: правила, управляющие маршрутизацией трафика, отправляемого на адреса через интерфейсы (ссылки).

Использование ip с адресами

Очевидно, что вам сначала нужно знать настройки, с которыми вы имеете дело. Чтобы узнать, какие IP-адреса есть у вашего компьютера, вы используете команду ip с объектом address. Действие по умолчанию — show, в котором перечислены IP-адреса. Вы также можете опустить show и сократить address до addr или даже a.

Все следующие команды эквивалентны:

ip address show
ip addr show
ip addr
ip a

Мы видим два IP-адреса вместе с большим количеством другой информации. IP-адреса связаны с контроллерами сетевых интерфейсов (NIC). Команда ip старается быть полезной и также предоставляет кучу информации об интерфейсе.

Первый IP-адрес — это (внутренний) петлевой адрес, используемый для связи внутри компьютера. Второй — фактический (внешний) IP-адрес компьютера в локальной сети (LAN).

Разберем всю полученную информацию:

  • lo: имя сетевого интерфейса в виде строки.
  • : это петлевой интерфейс. Это UP, что означает, что он работает. Физический сетевой уровень (первый) также работает.
  • mtu 65536: максимальная единица передачи. Это размер самого большого блока данных, который может передать этот интерфейс.
  • qdisc noqueue: qdisc — это механизм организации очереди. Он планирует передачу пакетов. Существуют различные методы организации очереди, называемые дисциплинами. Дисциплина noqueue означает «отправлять сразу, не стоять в очереди». Это дисциплина qdisc по умолчанию для виртуальных устройств, например петлевой адрес.
  • состояние UNKNOWN: это может быть DOWN (сетевой интерфейс не работает), UNKNOWN (сетевой интерфейс работает, но ничего не работает). подключено) или ВВЕРХ (сеть работает и соединение есть).
  • группа по умолчанию: интерфейсы могут быть сгруппированы логически. По умолчанию все они помещаются в группу под названием «по умолчанию».
  • qlen 1000: максимальная длина очереди передачи.
  • link/loopback: адрес управления доступом к среде (MAC) интерфейса.
  • inet 127.0.0.1/8: IP-адрес версии 4. Часть адреса после косой черты (/) представляет собой нотацию бесклассовой междоменной маршрутизации (CIDR), представляющую маску подсети. Он указывает, сколько начальных непрерывных битов установлено равным единице в маске подсети. Значение восемь означает восемь бит. Восемь битов, равных единице, представляют 255 в двоичном формате, поэтому маска подсети равна 255.0.0.0.
  • host host: область действия IP-адреса. Этот IP-адрес действителен только внутри компьютера («хост»).
  • lo: интерфейс, с которым связан этот IP-адрес.
  • valid_lft: действительный срок действия. Для IP-адреса версии 4, назначенного протоколом динамической конфигурации хоста (DHCP), это период времени, в течение которого IP-адрес считается действительным и может отправлять и принимать запросы на подключение.
  • preferred_lft: предпочитаемое время жизни. Для IP-адреса версии 4, выделенного DHCP, это время, в течение которого IP-адрес можно использовать без ограничений. Оно никогда не должно превышать значение valid_lft.
  • inet6: IP-адрес версии 6, scope , valid_lft и preferred_lft.

Физический интерфейс более интересен, как мы покажем ниже:

  • enp0s3: имя сетевого интерфейса в виде строки. «en» означает Ethernet, «p0» — номер шины карты Ethernet, а «s3» — номер слота.
  • : этот интерфейс поддерживает широковещательную и многоадресную рассылку, а интерфейс UP (рабочий и подключенный). Аппаратный уровень сети (первый уровень) также находится в состоянии UP.
  • mtu 1500: максимальная единица передачи, поддерживаемая этим интерфейсом.
  • qdisc fq_codel: планировщик использует дисциплину под названием «Справедливая постановка в очередь, контролируемая задержка». Он предназначен для предоставления справедливой доли пропускной способности всем потокам трафика, использующим очередь.
  • состояние UP: интерфейс работает и подключен.
  • группа по умолчанию. Этот интерфейс входит в группу интерфейсов по умолчанию.
  • qlen 1000: максимальная длина очереди передачи.
  • link/ether: MAC-адрес интерфейса.
  • inet 192.168.4.26/24: IP-адрес версии 4. «/24» говорит нам, что в маске подсети 24 смежных начальных бита равны единице. Это три группы по восемь бит. Восьмибитное двоичное число равно 255; поэтому маска подсети — 255.255.255.0.
  • brd 192.168.4.255: широковещательный адрес для этой подсети.
  • глобальная область действия: IP-адрес действителен везде в этой сети.
  • динамический: IP-адрес теряется, когда интерфейс выходит из строя.
  • noprefixroute: не создавать маршрут в таблице маршрутов при добавлении этого IP-адреса. Кто-то должен добавить маршрут вручную, если он хочет использовать его с этим IP-адресом. Аналогичным образом, если этот IP-адрес будет удален, не ищите маршрут для удаления.
  • enp0s3: интерфейс, с которым связан этот IP-адрес.
  • valid_lft: действительный срок действия. Время, когда IP-адрес будет считаться действительным; 86 240 секунд – это 23 часа 57 минут.
  • preferred_lft: предпочитаемое время жизни. Время, в течение которого IP-адрес будет работать без каких-либо ограничений.
  • inet6: IP-адрес версии 6, scope, valid_lft и preferred_lft.

Отображать только адреса IPv4 или IPv6

Если вы хотите ограничить вывод IP-адресами версии 4, вы можете использовать параметр -4 следующим образом:

ip -4 addr

Если вы хотите ограничить вывод IP-адресами версии 6, вы можете использовать параметр -6 следующим образом:

ip -6 addr

Отображение информации для одного интерфейса

Если вы хотите просмотреть информацию об IP-адресе для одного интерфейса, вы можете использовать параметры show и dev и назвать интерфейс, как показано ниже:

ip addr show dev lo
ip addr show dev enp0s3

Вы также можете использовать флаг -4 или -6 для дальнейшего уточнения вывода, чтобы вы видели только то, что вас интересует.

Если вы хотите просмотреть информацию IP версии 4, связанную с адресами на интерфейсе enp0s3, введите следующую команду:

ip -4 addr show dev enp0s3

Добавление IP-адреса

Вы можете использовать параметры add и dev, чтобы добавить IP-адрес к интерфейсу. Вам просто нужно указать команде ip, какой IP-адрес добавить и к какому интерфейсу его добавить.

Мы собираемся добавить IP-адрес 192.168.4.44 к интерфейсу enp0s3. Мы также должны предоставить нотацию CIDR для маски подсети.

Набираем следующее:

sudo ip addr add 192.168.4.44/24 dev enp0s3

Мы вводим следующее, чтобы еще раз взглянуть на IP-адреса версии 4 на этом интерфейсе:

ip -4 addr show dev enp0s3

Новый IP-адрес присутствует на этом сетевом интерфейсе. Мы переходим на другой компьютер и используем следующую команду, чтобы узнать, можем ли мы ping новый IP-адрес:

ping 192.168.4.44

IP-адрес отвечает и отправляет подтверждения на эхо-запросы. Наш новый IP-адрес настроен и работает после одной простой команды ip.

Удаление IP-адреса

Команда для удаления IP-адреса почти такая же, как и для добавления, за исключением того, что вы заменяете add на del, как показано ниже:

sudo ip addr del 192.168.4.44/24 dev enp0s3

Если мы введем следующее для проверки, мы увидим, что новый IP-адрес был удален:

ip -4 addr show dev enp0s3

Использование ip с сетевыми интерфейсами

Вы используете объект link для проверки и работы с сетевыми интерфейсами. Введите следующую команду, чтобы увидеть интерфейсы, установленные на вашем компьютере:

ip link show

Чтобы увидеть один сетевой интерфейс, просто добавьте его имя в команду, как показано ниже:

ip link show enp0s3

Запуск и остановка ссылок

Вы можете использовать параметр set с помощью up или down , чтобы остановить или запустить параметр сетевого интерфейса. Вы также должны использовать sudo, как показано ниже:

sudo ip link set enp0s3 down

Мы вводим следующее, чтобы взглянуть на сетевой интерфейс:

ip link show enp0s3

Состояние сетевого интерфейса — DOWN. Мы можем использовать опцию up для перезапуска сетевого интерфейса, как показано ниже:

sudo ip link set enp0s3 up

Мы вводим следующее, чтобы сделать еще одну быструю проверку состояния сетевого интерфейса:

ip link show enp0s3

Сетевой интерфейс был перезапущен, и его состояние отображается как UP.

Использование ip с маршрутами

С помощью объекта route вы можете проверять маршруты и управлять ими. Маршруты определяют, куда перенаправляется сетевой трафик на разные IP-адреса и через какой сетевой интерфейс.

Если компьютер или устройство назначения совместно используют сеть с компьютером-отправителем, компьютер-отправитель может переслать пакет непосредственно ему.

Однако, если целевое устройство не подключено напрямую, компьютер-отправитель перенаправляет пакет на маршрутизатор по умолчанию. Затем маршрутизатор решает, куда отправить пакет.

Чтобы просмотреть маршруты, определенные на вашем компьютере, введите следующую команду:

ip route

Давайте посмотрим на полученную информацию:

  • по умолчанию – правило по умолчанию. Этот маршрут используется, если ни одно из других правил не соответствует отправляемому.
  • через 192.168.4.1: направляет пакеты через устройство с адресом 192.168.4.1. Это IP-адрес маршрутизатора по умолчанию в этой сети.
  • dev enp0s3: используйте этот сетевой интерфейс для отправки пакетов на маршрутизатор.
  • proto dhcp: идентификатор протокола маршрутизации. DHCP означает, что маршруты будут определяться динамически.
  • показатель 100: показатель предпочтения маршрута по сравнению с другими. Маршруты с более низкими показателями используются предпочтительно, чем маршруты с более высокими показателями. Вы можете использовать это, чтобы отдать предпочтение проводному сетевому интерфейсу, а не Wi-Fi.

Второй маршрут управляет трафиком в диапазоне IP-адресов 169.254.0.0/16. Это сеть с нулевой конфигурацией, что означает, что она пытается самостоятельно настроиться для связи внутри сети. Однако вы не можете использовать его для отправки пакетов за пределы непосредственной сети.

Принцип сетей с нулевой конфигурацией заключается в том, что они не полагаются на наличие и активность DHCP и других служб. Им нужно только видеть TCP/IP, чтобы идентифицировать себя для каждого из других устройств в сети.

Давайте взглянем:

  • 169.254.0.0/16: диапазон IP-адресов, на который распространяется это правило маршрутизации. Если компьютер обменивается данными в этом диапазоне IP-адресов, это правило вступает в силу.
  • dev enp0s3: сетевой интерфейс, который будет использовать трафик, управляемый этим маршрутом.
  • ссылка на область. Областью действия является ссылка, что означает, что область ограничена сетью, к которой этот компьютер напрямую подключен.
  • Показатель 1000. Это высокий показатель, поэтому его не рекомендуется использовать.

Третий маршрут управляет трафиком в диапазоне IP-адресов 192.168.4.0/24. Это диапазон IP-адресов локальной сети, к которой подключен этот компьютер. Это для связи внутри этой сети.

Давайте разберем это:

  • 192.168.4.1/24: диапазон IP-адресов, на который распространяется это правило маршрутизации. Если компьютер обменивается данными в пределах этого диапазона IP-адресов, это правило запускает и контролирует маршрутизацию пакетов.
  • dev enp0s3: интерфейс, через который этот маршрут будет отправлять пакеты.
  • proto kernel: маршрут, созданный ядром во время автоматической настройки.
  • Ссылка на область. Область действия — link, что означает, что область ограничена непосредственной сетью, к которой подключен этот компьютер.
  • src 192.168.4.26: IP-адрес, с которого отправляются пакеты по этому маршруту.
  • показатель 100: этот низкий показатель указывает на предпочтительный маршрут.

Отображение информации для одного маршрута

Если вы хотите сосредоточиться на деталях конкретного маршрута, вы можете добавить в команду параметр list и диапазон IP-адресов маршрута следующим образом:

ip route list 192.168.4.0/24

Добавление маршрута

Мы только что добавили новую сетевую карту на этот компьютер. Мы вводим следующее и видим, что оно отображается как enp0s8:

ip link show

Мы добавим новый маршрут к компьютеру для использования этого нового интерфейса. Сначала мы вводим следующее, чтобы связать IP-адрес с интерфейсом:

sudo ip addr add 192.168.121.1/24 dev enp0s8

В новый интерфейс добавляется маршрут по умолчанию, использующий существующий IP-адрес. Мы используем параметр delete, как показано ниже, чтобы удалить маршрут и указать его детали:

sudo ip route delete default via 192.168.4.1 dev enp0s8

Теперь мы воспользуемся опцией add, чтобы добавить наш новый маршрут. Новый интерфейс будет обрабатывать сетевой трафик в диапазоне IP-адресов 192.168.121.0/24. Мы дадим ему метрику 100; поскольку это будет единственный маршрут, обрабатывающий этот трафик, метрика в значительной степени академическая.

Набираем следующее:

sudo ip route add 192.168.121.0/24 dev enp0s8 metric 100

Теперь мы набираем следующее, чтобы увидеть, что он нам дает:

ip route

Наш новый маршрут готов. Однако у нас все еще есть маршрут 192.168.4.0/24, который указывает на интерфейс enp0s8 — мы набираем следующее, чтобы удалить его:

sudo ip route delete 192.168.4.0/24 dev enp0s8

Теперь у нас должен быть новый маршрут, который направляет весь трафик, предназначенный для диапазона IP-адресов 192.168.121.0/24, через интерфейс enp0s8. Это также должен быть единственный маршрут, использующий наш новый интерфейс.

Мы вводим следующее для подтверждения:

ip route

Пройденный маршрут, не укоренившийся

Самое замечательное в этих командах то, что они не являются постоянными. Если вы хотите очистить их, просто перезагрузите систему. Это означает, что вы можете экспериментировать с ними, пока они не будут работать так, как вы хотите. И очень хорошо, если вы устроите ужасный беспорядок в своей системе — простая перезагрузка восстановит порядок.

С другой стороны, если вы хотите, чтобы изменения были постоянными, вам придется проделать дополнительную работу. Что именно зависит от семейства дистрибутивов, но все они связаны с изменением файлов конфигурации.

Тем не менее, таким образом вы можете протестировать команды, прежде чем делать что-либо постоянным.

RELATED: Best Linux Laptops for Developers and Enthusiasts