Настройка сети с помощью утилиты ip в Debian linux
Команда ip используется для назначения адреса сетевому интерфейсу и/или конфигурирования параметров сетевого интерфейса в дистрибутивах Linux. Эта команда заменяет собой старую добрую и ныне устаревшую команду ifconfig в современных дистрибутивах Linux.
Команда ip может использоваться для следующих целей:
- Узнать какие интерфейсы сконфигурированы в системе.
- Запросить статус IP интерфейса.
- Сконфигурировать локальный, Ethernet и другие интерфейсы.
- Пометить интефейс как up или down.
- Сконфигурировать или изменить статическую маршрутизацию или маршрутизацию по умолчанию.
- Сконфигурировать туннель через IP.
- Сконфигурировать содержимое ARP или NDISC кэша.
- Назначить IP адресы, маршруты, подсети и другую IP информацию на интерфейс.
Синтаксис
ip OBJECT COMMAND ip [options] OBJECT COMMAND ip OBJECT help
Понимание синтаксиса OBJECTS в комманде ip
OBJECTS может быть одним из следующих и может записываться в полной или сокращенной форме:
Объект | Сокращенная форма | Задача |
---|---|---|
link | l | Сетевое устройство. |
address | a, addr | IP адрес на устройстве. |
addrlabel | addrl | Управление метками для выбора адреса. |
neighbour | n, neigh | Записи для ARP или NDISC кэшей. |
route | r | Управление записямя таблицы маршрутизации. |
rule | ru | Правила в базе политик маршрутизации. |
maddress | m, maddr | Мультикаст адрес. |
mroute | mr | Записи мультикастового кэша маршрутизации. |
tunnel | t | Туннель через IP. |
xfrm | x | Фреймворк для протокола IPsec. |
Чтобы получить информацию о каждом из объектов используйте команду help следующим образом:
ip OBJECT help ip OBJECT h ip a help ip r help
Предупреждение: команды описанные ниже должны выполняться с осторожностью, так как ошибка может привести к потере соединения с сервером. Вы должны быть особо аккуратны при работе в удаленной сессии по ssh.
Примеры использования команды ip
Не пугайтесь синтаксиса команды ip. Давайте сразу начнем с примеров.
Показать информацию обо всех сетевых интерфейсах
Введите следующую команду чтобы получить список всех ip адресов назначенных всем сетевым интерфейсам:
ip a
или
ip addr
Пример вывода:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
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 pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:8b:46:9a brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe8b:469a/64 scope link
valid_lft forever preferred_lft forever
Вы можете выбрать между IPv4 и IPv6 используя следующий синтаксис:
### Показывать только TCP/IP IPv4 ## ip -4 a ### Показывать только TCP/IP IPv6 ### ip -6 a
Также существует возможность вывести детали только об определенном сетевом интерфейсе:
### Показать только интерфейс eth0 ### ip a show eth0 ip a list eth0 ip a show dev eth0 ### Показать только поднятые интерфейсы ### ip link ls up
Назначить интерфейсу IP адрес
Для того чтобы добавить IP адрес используется синтаксис следующего вида:
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 не задает какой-либо широковещательный адрес до тех пор, пока это будет недвусмысленно указано. Таким образом следующий синтаксис задает широковещательный адрес ADDRESS:
ip addr add brd {ADDDRESS-HERE} dev {interface} ip addr add broadcast {ADDDRESS-HERE} dev {interface} ip addr add broadcast 172.20.10.255 dev dummy0
Существует возможность использовать специальные символы + и - вместо широковещательного адреса указывая хостовую часть адреса. В этом примере добавим адрес 192.168.1.50 с маской 255.255.255.0 (/24) со стандартным широковещательным адресом и зададим название eth0Work на интерфейс eth0:
ip a add 192.168.1.50/24 brd + dev eth0 label eth0Work
Вы можете задать лупбек адрес на лупбек интерфейсе lo следующим образом:
ip a add 127.0.0.1/8 dev lo brd + scope host
Удалить 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 адресов с интерфейса
Вы можете удалять IP адреса с интерфейса по одному, как показано выше. Однако команда flush может удалить набор адресов с интерфейса по указанному признаку. Например, вы можете удалить все адреса из частной сети 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 (Point-to-Point) интерфейсах:
ip -4 addr flush label "ppp*"
Еще один пример для всех Ethernet интерфейсов:
ip -4 addr flush label "eth0"
Как изменить состояние интерфейса на UP или DOWN
Синтаксис:
ip link set dev {DEVICE} {up|down}
К примеру, чтобы положить интерфейс eth1, используйте:
ip link set dev eth1 down
А чтобы поднять этот же интерфейс:
ip link set dev eth1 up
Как изменить txqueuelen устройства
Вы можете установить длину очереди передачи устройства с помощью ifconfig или команды ip следующим образом:
ip link set txqueuelen {NUMBER} dev {DEVICE}
В этом примере изменим txqueuelen со значения по умолчанию, равного 1000, на 10000 для интерфейса 10000:
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
Показать соседей (arp кэш)
Синтаксис:
ip 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 - пакет был отправлен соседу в состоянии STALE и ядро ждет подтверждения.
- 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
Где,
Состояние соседа | Значение |
---|---|
permanent | Состояние соседа занято навсегда и может быть удалено только администратором. |
noarp | Состояние соседа валидно. Попыток проверить состояние не будет, но может быть удалено, когда закончится время жизни. |
stale | Состояние соседа валидно, но подозрительно. Эта опция для ip neigh не меняет состояние соседа, если оно было валидно и адрес не был изменен этой командой. |
reachable | Состояние соседа валидно до окончания таймаута доступности. |
Удалить ARP запись
Синтаксис:
ip neigh del {IPAddress} dev {DEVICE}
Удалить запись для соседа 192.168.1.5 на интерфейсе eth1:
ip neigh del 192.168.1.5 dev eth1
Изменить состояние на reachable для соседа 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 -s -s n flush 192.168.1.5
ip route: команды управления таблицей маршрутизации
Используйте следующие команды для управления таблицей маршрутизации ядра.
Показать таблицу маршрутизации
Посмотреть таблицу маршрутизации:
ip r ip r list ip route
Пример вывода:
default via 192.168.1.254 dev eth1 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10
Показать роутинг для 192.168.1.0/24:
ip r list 192.168.1.0/24
Пример вывода:
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10
Добавить новый маршрут
Синтаксис:
ip route add {NETWORK/MASK} via {GATEWAYIP} ip route add {NETWORK/MASK} dev {DEVICE} 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
Опубликовано