Как использовать команду ip
Утилита ip является частью пакета iproute2, который устанавливается во всех современных дистрибутивах Linux.
Синтаксис команды ip следующий:
1 |
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 принимают следующую форму:
1 |
ip addr [ COMMAND ] ADDRESS dev IFNAME |
Наиболее часто используемые команды объекта addr – это show, add и del.
Показать информацию обо всех IP-адресах
Для отображения списка всех сетевых интерфейсов и связанного с ним IP-адреса введите следующую команду:
1 |
ip addr show |
Вывод будет выглядеть примерно так:
1 2 3 4 5 6 7 8 9 10 |
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, введите:
1 |
ip addr show dev eth0 |
Назначьте IP-адреса интерфейсу
Чтобы назначить IP-адрес интерфейсу, используйте следующий синтаксис:
1 |
ip addr add ADDRESS dev IFNAME |
Где IFNAME – это имя интерфейса, а ADDRESS – это IP-адрес, который вы хотите назначить интерфейсу.
Чтобы добавить адрес 192.168.101.12 с сетевой маской 24 на устройство eth0, введите:
1 |
sudo ip address add 192.168.101.12/24 dev eth0 |
В случае успеха команда не будет отображать никаких выходных данных. Если интерфейс не существует, вы получите Cannot find device “eth0”.
Назначьте несколько IP-адресов одному интерфейсу
С помощью утилиты ip вы можете назначить несколько адресов одному интерфейсу. Например:
1 2 |
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:
1 2 3 4 5 |
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-адреса из интерфейса, как показано ниже:
1 |
ip addr dev ADDRESS dev IFNAME |
IFNAME – это имя интерфейса, а ADDRESS – это IP-адрес, который вы хотите удалить из интерфейса.
Для удаления адреса 192.168.101.12/24 из устройства eth0 введите:
1 |
sudo ip address del 192.168.101.12/24 dev eth0 |
Отображение и изменение сетевых интерфейсов
Для управления и отображения состояния сетевых интерфейсов используется объект link.
Наиболее часто используемые команды при работе с link объектами являются show, set, add и del.
Отображение информации о сетевых интерфейсах
Чтобы отобразить список всех сетевых интерфейсов, введите следующую команду:
1 |
ip link show |
1 2 3 4 |
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, введите:
1 |
ip link show dev eth0 |
1 2 |
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 и желаемое состояние:
1 |
ip link set dev {DEVICE} {up|down} |
Например, чтобы вывести интерфейс eth0 в онлайн, вы должны набрать:
1 |
ip link set eth0 up |
И вывести если офлайн
1 |
ip link set eth0 down |
Отображение и изменение таблицы маршрутизации
Для назначения, удаления и отображения таблицы маршрутизации ядра используйте объект route. Наиболее часто используемые команды при работе с объектами маршрутов list, addи del.
Показать таблицу маршрутизации
Используйте список записей маршрута ядра, используя одну из следующих команд:
1 2 3 |
ip route ip route list ip route list SELECTOR |
При использовании без SELECTOR команда выведет список всех записей маршрута в ядре:
1 |
ip route list |
1 2 3 |
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:
1 |
ip r list 172.17.0.0/16 |
1 |
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
1 |
ip route add 192.168.113.0/24 via 192.168.113.1 |
Добавьте маршрут к 192.168.113.0/24, который может быть достигнут на устройстве eth0.
1 |
ip route add 192.168.113.0/24 dev eth0 |
Чтобы добавить маршрут по умолчанию, используйте ключевое слово default. Следующая команда добавит маршрут по умолчанию через локальный шлюз 192.168.113.1, который может быть достигнут на устройстве eth0.
1 |
ip route add default via 192.168.113.1 dev eth0 |
Удалить маршрут
Чтобы удалить запись из таблицы маршрутизации, используйте команду route add: Синтаксис для удаления маршрута такой же, как и при добавлении.
Следующая команда удалит маршрут по умолчанию:
1 |
ip route del default |
Удалите маршрут для 192.168.113.0/24 через шлюз в 192.168.113.1
1 |
ip route add 192.168.113.0/24 via 192.168.113.1 |