Thank you for reading this post, don't forget to subscribe!
Как использовать команду 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 |