Введение
Команда 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
для каждой подкоманды, например:
ip link help
Вы должны увидеть выходное сообщение, подобное следующему:
Usage: ip link add [link DEV] [ name ] NAME
[ txqueuelen PACKETS ]
[ address LLADDR ]
[ broadcast LLADDR ]
[ mtu MTU ] [index IDX ]
[ numtxqueues QUEUE_COUNT ]
[ numrxqueues QUEUE_COUNT ]
type TYPE [ ARGS ]...
TYPE:= { vlan | veth | vcan | vxcan | dummy | ifb | macvlan | macvtap |
bridge | bond | team | ipoib | ip6tnl | ipip | sit | vxlan |
gre | gretap | erspan | ip6gre | ip6gretap | ip6erspan |
vti | nlmon | team_slave | bond_slave | ipvlan | geneve |
bridge_slave | vrf | macsec }
При настройке сетевых интерфейсов вам необходимо запускать команды от имени пользователя 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
inet6::1/128 scope host
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 96:00:00:19:12:df brd ff:ff:ff:ff:ff:ff
inet 195.201.18.78/32 brd 195.201.18.78 scope global eth0
valid_lft forever preferred_lft forever
inet6 2a01:4f8:1c1c:c73d::1/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::9400:ff:fe19:12df/64 scope link
valid_lft forever preferred_lft forever
Вы получите тот же результат, если наберете команду «Опустить команды show
» и наберете: ip addr
.
Если вы хотите отображать только IP-адреса IPv4
или IPv6
, используйте ip -4 addr
или ip -6 addr
.
ip -4 addr
Вывод будет выглядеть следующим образом:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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
inet 195.201.18.78/32 brd 195.201.18.78 scope global eth0
valid_lft forever preferred_lft forever
Просмотр информации об одном сетевом интерфейсе
Чтобы получить информацию о конкретном сетевом интерфейсе, используйте ip addr show dev
, за которым следует имя устройства. Например, чтобы запросить eth0
, введите:
ip addr show dev eth0
Вывод будет выглядеть следующим образом:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 96:00:00:19:12:df brd ff:ff:ff:ff:ff:ff
inet 195.201.18.78/32 brd 195.201.18.78 scope global eth0
valid_lft forever preferred_lft forever
inet6 2a01:4f8:1c1c:c73d::1/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::9400:ff:fe19:12df/64 scope link
valid_lft forever preferred_lft forever
Назначение IP-адресов интерфейсу
Чтобы назначить IP-адрес интерфейсу, используйте следующий синтаксис:
ip addr add ADDRESS dev IFNAME
Где IFNAME
— это имя интерфейса, а ADDRESS
— это IP-адрес, который вы хотите назначить интерфейсу.
Чтобы добавить адрес 192.168.111.111
с сетевой маской 24 на устройство eth0
, введите:
sudo ip address add 192.168.111.111/24 dev eth0
В случае успеха команда не покажет никаких результатов. Если интерфейс не существует, вы получите Cannot find device "eth0"
.
Назначение нескольких IP-адресов одному и тому же интерфейсу
С помощью ip
одному и тому же интерфейсу может быть назначено несколько адресов. Например:
sudo ip address add 192.168.111.111/24 dev eth0
sudo ip address add 192.168.111.22/24 dev eth0
Чтобы подтвердить назначение IP-адресов, введите ip -4 addr show dev eth0
или ip -4 a show dev eth0
:
ip -4 addr show dev eth0
Вывод будет выглядеть следующим образом:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
inet 195.201.18.78/32 brd 195.201.18.78 scope global eth0
valid_lft forever preferred_lft forever
inet 192.168.111.111/24 scope global eth0
valid_lft forever preferred_lft forever
inet 192.168.111.22/24 scope global secondary eth0
valid_lft forever preferred_lft forever
Удалить /Удалить IP-адрес из интерфейса
Синтаксис удаления IP-адреса из интерфейса следующий:
ip addr dev ADDRESS dev IFNAME
IFNAME
— это имя интерфейса, а ADDRESS
— это IP-адрес, который вы хотите удалить из интерфейса.
Чтобы удалить адрес 192.168.111.111/24
с устройства eth0, введите:
sudo ip address del 192.168.111.111/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 96:00:00:19:12:df 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 96:00:00:19:12:df 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
для назначения, удаления и просмотра таблицы маршрутизации ядра. Команды, наиболее часто используемые при работе с объектами маршрута: list
, add
и del
.
Посмотреть таблицу маршрутизации
Чтобы получить список записей маршрута ядра, используйте одну из следующих команд:
ip route
ip route list SELECTOR
ip route list SELECTOR
Если использовать без команды SELECTOR
, она выведет список всех записей маршрута в ядре:
ip route list
default via 172.31.1.1 dev eth0
172.31.1.1 dev eth0 scope link
192.168.111.0/24 dev eth0 proto kernel scope link src 192.168.111.22
Чтобы просмотреть маршрутизацию только для определенной сети, например, 172.17.0.0/16
, введите:
ip r list 192.168.111.0/24
192.168.111.0/24 dev eth0 proto kernel scope link src 192.168.111.22
Добавить новый маршрут
Чтобы добавить новую запись в таблицу маршрутизации, используйте команду route add
, за которой следует имя сети или устройства.
Добавьте маршрут на 192.168.111.0/24
через шлюз на 192.168.111.1
ip route add 192.168.111.0/24 via 192.168.111.1
Добавьте путь к 192.168.111.0/24
, до которого можно добраться на устройстве eth0.
ip route add 192.168.111.0/24 dev eth0
Чтобы добавить путь по умолчанию, используйте ключевое слово по default
. Следующая команда добавит маршрут по умолчанию через локальный шлюз 192.168.111.1
, доступный на устройстве eth0
.
ip route add default via 192.168.111.1 dev eth0
Удалить маршрут
Чтобы удалить запись из таблицы маршрутизации, используйте команду route del
del.Синтаксис удаления маршрута такой же, как и при его добавлении.
Следующая команда удалит маршрут по умолчанию:
ip route del default
Удалить путь для 192.168.111.0/24 через шлюз 192.168.111.1
ip route del 192.168.111.0/24 via 192.168.111.1
Вывод
К настоящему времени вы должны хорошо понимать, как использовать команду ip
в Linux. Для получения дополнительной информации о других параметрах команды ip
введите:
man ip
Чтобы выйти из экрана справки, введите q
:
q