Команда ip
— это мощный инструмент для настройки сетевых интерфейсов, который должен знать любой системный администратор Linux. Он используется для включения или выключения интерфейсов, назначения и удаления адресов и маршрутов, управления кешем ARP и многого другого.
В этой статье объясняется, как использовать команду 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.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 eth0
sudo 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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: <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
Измените статус интерфейса ВВЕРХ / ВНИЗ
Чтобы вывести интерфейсы вверх или вниз, используйте ip link set dev
за которым следует имя устройства и желаемое состояние:
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.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
Выводы
К настоящему времени вы должны хорошо понимать, как использовать команду Linux ip
. Для получения дополнительной информации о других параметрах ip
посетите страницу руководства по команде ip или введите man ip
в терминале.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.