
Команда ip — мощный инструмент настройки сетевых интерфейсов, который должен знать любой системный администратор Linux. Она используется для включения и выключения интерфейсов, назначения и удаления адресов и маршрутов, управления ARP-кешем и многого другого.
В этой статье объясняется, как использовать команду ip, с помощью практических примеров и подробных объяснений наиболее распространенных опций.
Как использовать команду ip
Утилита ip является частью пакета iproute2, который установлен во всех современных дистрибутивах Linux.
Синтаксис команды ip следующий:
ip [ OPTIONS ] OBJECT { COMMAND | help }

ОБЪЕКТ — тип объекта, которым вы хотите управлять. Наиболее часто используемые объекты (или подкоманды):
-
link(l) — отображение и изменение сетевых интерфейсов. -
address(a) — отображение и изменение IP-адресов. -
route(r) — Отображение и изменение таблицы маршрутизации. -
neigh(n) — отображение и управление соседними объектами (таблица ARP).
Объект можно указать в полной или сокращённой форме. Чтобы отобразить список команд и аргументов для каждого объекта, введите ip OBJECT help .
При настройке сетевых интерфейсов команды необходимо выполнять от имени пользователя root или пользователя с привилегиями sudo . В противном случае команда выведет RTNETLINK answers: Operation not permitted .
Конфигурации, установленные с помощью команды ip , не сохраняются. После перезапуска системы все изменения теряются. Чтобы сделать изменения постоянными, необходимо отредактировать файлы конфигурации, специфичные для дистрибутива, или добавить команды в скрипт запуска.
Отображение и изменение IP-адресов
При работе с объектом addr команды имеют следующий вид:
ip addr [ COMMAND ] ADDRESS dev IFNAME
Наиболее часто используемые КОМАНДЫ объекта addr : show , add и del .
Отобразить информацию обо всех IP-адресах
Чтобы отобразить список всех сетевых интерфейсов и связанных с ними IP-адресов, введите следующую команду:
ip addr show
Вывод будет выглядеть примерно так:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:8c:62:44 brd ff:ff:ff:ff:ff:ff inet 192.168.121.241/24 brd 192.168.121.255 scope global dynamic eth0 valid_lft 2900sec preferred_lft 2900sec inet6 fe80::5054:ff:fe8c:6244/64 scope link valid_lft forever preferred_lft forever
Вы получите тот же результат, если пропустите команду show и введете: ip addr .
Если вы хотите отобразить только IP-адреса IPv4 или IPv6 , используйте ip -4 addr или ip -6 addr .
Отображение информации об одном сетевом интерфейсе
Чтобы получить информацию о конкретном сетевом интерфейсе, используйте ip addr show dev а затем имя устройства. Например, чтобы запросить информацию eth0 , введите:
ip addr show dev eth0
Назначение IP-адресов интерфейсу
Чтобы назначить IP-адрес интерфейсу, используйте следующий синтаксис:
ip addr add ADDRESS dev IFNAME
Где IFNAME — имя интерфейса, а ADDRESS — IP-адрес, который вы хотите назначить интерфейсу.
Чтобы добавить адрес 192.168.121.45 с сетевой маской 24 к устройству eth0 , введите:
sudo ip address add 192.168.121.45/24 dev eth0
В случае успешного выполнения команда не выведет никаких данных. Если интерфейс не существует, вы получите Cannot find device "eth0" .
Назначить несколько IP-адресов одному интерфейсу
С помощью ip можно назначить несколько адресов одному интерфейсу. Например:
sudo ip address add 192.168.121.241/24 dev eth0sudo ip address add 192.168.121.45/24 dev eth0
Чтобы подтвердить назначение IP-адресов, ip -4 addr show dev eth0 или ip -4 a show dev eth0 :
2: eth0: mtu 1500 qdisc fq_codel state UP group default qlen 1000 inet 192.168.121.241/24 brd 192.168.121.255 scope global dynamic eth0 valid_lft 3515sec preferred_lft 3515sec inet 192.168.121.45/24 scope global secondary eth0 valid_lft forever preferred_lft forever
Удалить IP-адрес из интерфейса
Синтаксис удаления IP-адреса из интерфейса следующий:
ip addr dev ADDRESS dev IFNAME
IFNAME — имя интерфейса, а ADDRESS — IP-адрес, который вы хотите удалить из интерфейса.
Чтобы удалить адрес 192.168.121.45/24 с устройства eth0, введите:
sudo ip address del 192.168.121.45/24 dev eth0
Отображение и изменение сетевых интерфейсов
Для управления и просмотра состояния сетевых интерфейсов используйте объект link .
При работе с объектами link наиболее часто используются команды: show , set , add и del .
Отображение информации о сетевых интерфейсах
Чтобы отобразить список всех сетевых интерфейсов, введите следующую команду:
ip link show
1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:8c:62:44 brd ff:ff:ff:ff:ff:ff
В отличие от ip addr show , ip link show не выводит информацию об IP-адресах, связанных с устройством.
Чтобы получить информацию о конкретном сетевом интерфейсе, используйте ip link show dev а затем имя устройства. Например, чтобы запросить информацию eth0 , введите:
ip link show dev eth0
2: eth0: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:8c:62:44 brd ff:ff:ff:ff:ff:ff
Изменить статус интерфейса UP/DOWN
Чтобы включить или отключить интерфейсы, используйте команду ip link set dev а затем имя устройства и желаемое состояние:
ip link set dev { DEVICE } { up | down }
Например, чтобы включить интерфейс eth0 , введите:
ip link set eth0 up
И принести если офлайн
ip link set eth0 down
Отображение и изменение таблицы маршрутизации
Для назначения, удаления и отображения таблицы маршрутизации ядра используйте объект route . Наиболее часто используемые команды при работе с объектами route: list , add и del .
Показать таблицу маршрутизации
Чтобы получить список записей маршрутов ядра, используйте одну из следующих команд:
ip route ip route list ip route list SELECTOR
При использовании без SELECTOR команда выведет список всех записей маршрутов в ядре:
ip route list
default via 192.168.121.1 dev eth0 proto dhcp src 192.168.121.241 metric 100 192.168.121.0/24 dev eth0 proto kernel scope link src 192.168.121.241 192.168.121.1 dev eth0 proto dhcp scope link src 192.168.121.241 metric 100
Чтобы отобразить маршрутизацию только для определенной сети, например, 172.17.0.0/16 , введите:
ip r list 172.17.0.0/16
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
Добавить новый маршрута
Чтобы добавить новую запись в таблицу маршрутизации, используйте команду route add за которой укажите имя сети или устройства.
Добавьте маршрут к 192.168.121.0/24 через шлюз 192.168.121.1
ip route add 192.168.121.0/24 via 192.168.121.1
Добавьте маршрут к 192.168.121.0/24, к которому можно получить доступ с устройства eth0.
ip route add 192.168.121.0/24 dev eth0
Чтобы добавить маршрут по умолчанию, используйте ключевое слово default . Следующая команда добавит маршрут по умолчанию через локальный шлюз 192.168.121.1 , доступный через устройство eth0 .
ip route add default via 192.168.121.1 dev eth0
Удалить маршрута
Чтобы удалить запись из таблицы маршрутизации, используйте команду route add . Синтаксис удаления маршрута такой же, как и при его добавлении.
Следующая команда удалит маршрут по умолчанию:
ip route del default
Удалить маршрут для 192.168.121.0/24 через шлюз 192.168.121.1
ip route add 192.168.121.0/24 via 192.168.121.1
Заключение
К настоящему моменту вы должны хорошо понимать, как использовать команду ip в Linux. Для получения дополнительной информации о других параметрах ip посетите страницу руководства по команде ip или введите man ip в терминале.
Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.
Связанные руководства