Команда ip – это мощный инструмент для настройки сетевых интерфейсов, который должен знать любой системный администратор Linux. Его можно использовать для повышения или понижения интерфейсов, назначения и удаления адресов, маршрутов, управления кешем ARP и многого другого.
В этой статье мы покажем вам, как использовать команду ip, на практических примерах и подробных объяснениях наиболее распространенных параметров ip.
Как использовать команду ip
Утилита ip является частью пакета iproute2, который устанавливается во всех современных дистрибутивах Linux.
Синтаксис команды ip следующий:
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT – это тип объекта, которым вы хотите управлять. Наиболее часто используемые объекты (или подкоманды):
- 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: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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.113.241/24 brd 192.168.113.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.101.12 с сетевой маской 24 на устройство eth0, введите:
sudo ip address add 192.168.101.12/24 dev eth0
В случае успеха команда не будет отображать никаких выходных данных. Если интерфейс не существует, вы получите Cannot find device “eth0”.
Назначьте несколько IP-адресов одному интерфейсу
С помощью утилиты ip вы можете назначить несколько адресов одному интерфейсу. Например:
sudo ip address add 192.168.113.241/24 dev eth0 sudo ip address add 192.168.101.12/24 dev eth0
Для подтверждения назначенного IP-адреса введите ip -4 addr show dev eth0 или ip -4 a show dev eth0:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 inet 192.168.113.241/24 brd 192.168.113.255 scope global dynamic eth0 valid_lft 3515sec preferred_lft 3515sec inet 192.168.101.12/24 scope global secondary eth0 valid_lft forever preferred_lft forever
Удалить IP-адрес из интерфейса
Синтаксис для удаления IP-адреса из интерфейса, как показано ниже:
ip addr del ADDRESS dev IFNAME
IFNAME – это имя интерфейса, а ADDRESS – это IP-адрес, который вы хотите удалить из интерфейса.
Для удаления адреса 192.168.101.12/24 из устройства eth0 введите:
sudo ip address del 192.168.101.12/24 dev eth0
Отображение и изменение сетевых интерфейсов
Для управления и отображения состояния сетевых интерфейсов используется объект link.
Наиболее часто используемые команды при работе с link объектами являются show, set, add и del.
Отображение информации о сетевых интерфейсах
Чтобы отобразить список всех сетевых интерфейсов, введите следующую команду:
ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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 DEVICE и желаемое состояние:
ip link set dev {DEVICE} {up|down}
Например, чтобы вывести интерфейс eth0 в онлайн, вы должны набрать:
ip link set eth0 up
И вывести если офлайн
ip link set eth0 down
Отображение и изменение таблицы маршрутизации
Для назначения, удаления и отображения таблицы маршрутизации ядра используйте объект route. Наиболее часто используемые команды при работе с объектами маршрутов list, addи del.
Показать таблицу маршрутизации
Используйте список записей маршрута ядра, используя одну из следующих команд:
ip route ip route list ip route list SELECTOR
При использовании без SELECTOR команда выведет список всех записей маршрута в ядре:
ip route list
default via 192.168.113.1 dev eth0 proto dhcp src 192.168.113.241 metric 100 192.168.113.0/24 dev eth0 proto kernel scope link src 192.168.113.241 192.168.113.1 dev eth0 proto dhcp scope link src 192.168.113.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.113.0/24 через шлюз в 192.168.113.1
ip route add 192.168.113.0/24 via 192.168.113.1
Добавьте маршрут к 192.168.113.0/24, который может быть достигнут на устройстве eth0.
ip route add 192.168.113.0/24 dev eth0
Чтобы добавить маршрут по умолчанию, используйте ключевое слово default. Следующая команда добавит маршрут по умолчанию через локальный шлюз 192.168.113.1, который может быть достигнут на устройстве eth0.
ip route add default via 192.168.113.1 dev eth0
Удалить маршрут
Чтобы удалить запись из таблицы маршрутизации, используйте команду route add: Синтаксис для удаления маршрута такой же, как и при добавлении.
Следующая команда удалит маршрут по умолчанию:
ip route del default
Удалите маршрут для 192.168.113.0/24 через шлюз в 192.168.113.1
ip route del 192.168.113.0/24 via 192.168.113.1
Заключение
К настоящему времени вы должны хорошо понимать, как использовать команду ip в Linux. Для получения дополнительной информации о других параметрах ip посетите страницу руководства команды ip
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.