Команда «ip» используется для настройки параметров сетевого интерфейса и назначения ему адреса в ОС Linux. Эта команда заменяет старую добрую и устаревшую команду «ifconfig» в современных дистрибутивах Linux. В статье описываются её различные способы применения.
Как использовать команду IP
Команда"ip"
имеет следующий синтаксис:ip [OPTION] OBJECT {COMMAND | help}
Примеры объектов (OBJECT) приведены ниже. Их можно использовать в полной или сокращённой форме.
Объект |
Сокращенная форма |
Назначение |
link | l | Отображение и изменение сетевых интерфейсов. |
address |
a addr |
Адрес протокола (IP или IPv6) на устройстве. |
addrlabel | addrl | Конфигурация метки для выбора адреса протокола. |
neighbour |
n neigh |
Отображение и управление соседними объектами (таблица ARP). |
route | r | Запись таблицы маршрутизации. |
rule | ru | Правило в базе данных политик маршрутизации. |
maddress |
m maddr |
Многоадресный адрес. |
mroute | mr | Запись кэша многоадресной маршрутизации. |
tunnel | t | Туннель через IP. |
xfrm | x | Фреймворк для протокола IPsec. |
Для получения подробной информации о каждом объекте примените команду справки:
ip OBJECT help
ip OBJECT h
ip a help
ip r help
Внимание: Приведённые ниже команды необходимо выполнять с осторожностью, по ошибке есть риск потерять связь с сервером. Будьте внимательны при работе с удалённым сеансом по протоколу ssh.
Примеры команд «ip»
Напишите следующую команду, чтобы вывести список и посмотреть все IP адреса сетевых интерфейсов:ip a
или
ip addr
Пример вывода команды
Отображение IP-адреса с помощью команды «ip»
Можно посмотреть только адрес IPv4 или IPv6, для этого используется команда:### Only show TCP/IP IPv4 ##
ip -4 a
### Only show TCP/IP IPv6 ###
ip -6 a
Также можно посмотреть информацию конкретного интерфейса:
### Only show eth0 interface ###
ip a show eth0
ip a list eth0
ip a show dev eth0
### Only show running interfaces ###
ip link ls up
Пример вывода команды
Назначить IP-адрес интерфейсу
Чтобы добавить адреса IPv4/IPv6 используется синтаксис:
ip a add {ip_addr/mask} dev {interface}
Например, назначаем 192.168.1.200/255.255.255.0 для eth0
ip a add 192.168.1.200/255.255.255.0 dev eth0
или ip a add 192.168.1.200/24 dev eth0
Добавление широковещательного адреса на интерфейс
По умолчанию команда "ip" не добавляет широковещательных адресов, если они явно не заданы. Для назначения широковещательного адреса используется следующий синтаксис:
ip addr add brd {ADDESS-HERE} dev {interface}
ip addr add broadcast {ADDESS-HERE} dev {interface}
ip addr add broadcast 172.20.10.255 dev dummu0
Удалить / Удалить IP-адрес с интерфейса
Для удаления IPv4/IPv6-адреса из интерфейса используется синтаксис:
ip a del {ipv6_addr_OR_ipv4_addr} dev {interface}
Чтобы удалить адрес 192.168.1.200/24 с устройства eth0, введите:
ip a del 192.168.1.200/24 dev eth0
Сбросить IP-адрес с интерфейса
Можно удалить IPv4/IPv6-адреса последовательно, как описано выше. Но есть еще один способ – использовать команду «flush». С помощью неё можно удалить ip-адрес в соответствии с заданным условием. Например, вы можете удалить все IP-адреса из частной сети 192.168.2.0/24, используя следующую команду:ip -s -s a f to 192.168.2.0/24
Примеры результатов:
2: eth0 inet 192.168.2.201/24 scope global secondary eth0
2: eth0 inet 192.168.2.200/24 scope global eth0
*** Round 1, deleting 2 addresses ***
*** Flush is complete after 1 round ***
Возможно отключить IP-адрес на всех интерфейсах PPP (точка-точка):
ip -4 addr flush label "ppp*"
И еще пример для всех интерфейсов Ethernet:
ip -4 addr flush label "eth*"
Изменяем статус интерфейса UP/DOWN
Синтаксис:ip link set dev {DEVICE} {up|down}
Чтобы перевести устройство eth1 в состояние down, введите:
ip lnk set dev eth1 down
Чтобы перевести устройство eth1 в состояние up, введите:
ip link set dev eth1 up
Как изменить txqueuelen устройства?
Вы можете установить длину очереди передачи устройства с помощью команды "ifconfig" или команды "ip" следующим образом:ip link set txqueuelen {NUMBER} dev {DEVICE}
В примере изменяем значение txqueuelen по умолчанию с 1000 на 10000 для eth0:
ip link set txqueuelen 10000 dev eth0
ip a list eth0
Как изменить MTU устройства?
Для гигабитных сетей можно установить максимальный размер передачи (MTU) с целью повышения производительности сети.Синтаксис:
ip link set mtu {NUMBER} dev {DEVICE}
В примерах рассматривается изменение MTU устройства eth0 на 9000:
ip link set mtu 9000 dev eth0
ip a list eth0
2: eth0: mtu 9000 qdisc pfifo_fast state UP qlen 1000
link/ether 00:08:9b:c4:30:30 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.10/24 brd 192.168.1.255 scope global eth1
inet6 fe80::208:9bff:fec4:3030/64 scope link
valid_lft forever preferred_lft forever
Посмотреть ip-адреса соседних устройств
Синтаксис:in n show
ip neigh show
Примеры выходных данных (некоторые данные скрыты алфавитным набором букв):
74.xx.yy.zz dev eth1 lladdr 00:30:48:yy:zz:ww REACHABLE
10.10.29.66 dev eth0 lladdr 00:30:48:c6:0a:d8 REACHABLE
74.ww.yyy.xxx dev eth1 lladdr 00:1a:30:yy:zz:ww REACHABLE
10.10.29.68 dev eth0 lladdr 00:30:48:33:bc:32 REACHABLE
74.fff.uu.cc dev eth1 lladdr 00:30:48:yy:zz:ww STALE
74.rr.ww.fff dev eth1 lladdr 00:30:48:yy:zz:ww DELAY
10.10.29.65 dev eth0 lladdr 00:1a:30:38:a8:00 REACHABLE
10.10.29.74 dev eth0 lladdr 00:30:48:8e:31:ac REACHABLE
STALE - означает действительную, но недоступную запись.
DELAY - означает, что ядро всё еще ожидает проверки из устаревшей записи.
REACHABLE - означает действительную запись до истечения таймаута.
Добавить новую ARP- запись
Синтаксис:ip neigh add {IP-HERE} lladdr {MAC/LLADDRESS} dev {DEVICE} nud {STATE}
В этом примере мы добавляем постоянную запись ARP для соседнего устройства 192.168.1.5 на eth0:
ip neigh add 192.168.1.5 lladdr 00:1a:30:38:a8:00 dev eth0 nud perm
Удалить ARP- запись
Синтаксис удаления записи ARP-таблицы для устройства 192.168.1.5 на eth1:ip neigh del {IPAddress} dev {DEVICE}
ip neigh del 192.168.1.5 dev eth1
Изменить статус на «доступен» для соседнего устройства 192.168.1.100 на интерфейсе eth1
ip neigh chg 192.168.1.100 dev eth1 nud reachable
Сбросить запись ARP
Команда «flush» или «f» очищает arp-таблицы с заданным условием.
Синтаксис:
ip -s -s n f {IPAddress}
или
ip -s -s n f 192.168.1.5
IP route: команды отображения и изменения таблицы маршрутизации
Для просмотра таблицы маршрутизации введите следующую команду:ip r
ip r list
ip route list
ip r list [options] ip route
В качестве примера отобразим маршрутизацию для 192.168.1.0/24:
ip r list 192.168.1.0/24
Добавить новый маршрут
Синтаксис:ip route add {NETWORK/MASK} via {GATEWAYIP}
ip route add {NETWORK/MASK} dev {DEVICE}
## Add default route using ip ##
ip route add default {NETWORK/MASK} dev {DEVICE}
ip route add default {NETWORK/MASK} via {GATEWAYIP}
Пример:
Добавляем маршрут к сети 192.168.1.0/24 через шлюз 192.168.1.254
ip route add 192.168.1.0/24 via 192.168.1.254
и направляем весь трафик через шлюз 192.168.1.254 на eth0:
ip route add 192.168.1.0/24 dev eth0
Удалить маршрут
Следующая команда удалит маршрут по умолчанию:ip route del default
В примере удаляем маршрут, созданный ранее:
ip route del 192.168.1.0/24 dev eth0
Изменить MAC-адрес в Linux
MAC-адрес – это физический идентификатор, назначаемый каждому интерфейсу. Его можно изменить следующим образом:NIC="eno1" ## <-- My NIC name ##
ip link show $NIC
ip link set dev $NIC down
## set new MAC address ##
ip link set dev $NIC address XX:YY:ZZ:AA:BB:CC
ip link set dev $NIC up
Вывод сервера будет примерно таким. Он будет содержать параметры (mac - адреса всех ваших интерфейсов):
Настройка цветного вывода
Можно сделать вывод команды ip цветным и удобным для восприятия, для этого добавляем опцию:"-c"
.Также для удобства можно создать постоянный псевдоним, тогда вывод команды можно будет запускать более простой командой.
alias ip='ip -c'
alias ipc='ip -c'
# run it #
ipc route
ip link
Примеры алиасов
Посмотреть IP-адреса всех сетевых интерфейсов
Команда:$ sudo ip -br -c addr show
$ sudo ip -br -c link show
Пример вывода
Устаревшие и новые заменяющие их команды в Linux:
Устарела |
Новая |
ifconfig enp6s0 down |
ip link set enp6s0 down |
ifconfig enp6s0 up |
ip link set enp6s0 up |
ifconfig enp6s0 192.168.2.24 |
ip addr add 192.168.2.24/24 dev enp6s0 |
ifconfig enp6s0 netmask 255.255.255.0 |
ip addr add 192.168.1.1/24 dev enp6s0 |
ifconfig enp6s0 mtu 9000 |
ip link set enp6s0 mtu 9000 |
ifconfig enp6s0:0 192.168.2.25 |
ip addr add 192.168.2.25/24 dev enp6s0 |
netstat |
ss |
netstat -tulpn |
ss -tulpn |
netstat -neopa |
ss -neopa |
netstat -g |
ip maddr |
route |
ip r |
route add -net 192.168.2.0 netmask 255.255.255.0 dev enp6s0 |
ip route add 192.168.2.0/24 dev enp6s0 |
route add default gw 192.168.2.254 |
ip route add 192.168.2.0/24 dev enp6s0 |
route add default gw 192.168.2.254 |
ip route add default via 192.168.2.254 |
arp -a |
ip neigh |
arp -v |
ip -s neigh |
arp -s 192.168.2.33 1:2:3:4:5:6 |
ip neigh add 192.168.3.33 lladdr 1:2:3:4:5:6 dev enp6s0 |
arp -i enp6s0 -d 192.168.2.254 |
ip neigh del 192.168.2.254 dev wlp7s0 |