ip: сетевая настройка и диагностика в CLI
Когда привычный ifconfig выдаёт пустую строку, а настройка маршрута через route требует отдельной команды — это не баг системы. Это iproute2, который в современных дистрибутивах вытеснил net-tools. Утилита ip из пакета iproute2 — стандартный интерфейс управления сетевым стеком Linux. Она покрывает интерфейсы, адреса, маршруты, ARP-кеш, правила маршрутизации и изоляцию через namespace.
Зачем iproute2 заменил net-tools
net-tools (ifconfig, route, arp, netstat, nameif) появились в BSD и перешли в Linux в 90-х. К 2000-м стало очевидно: они не поддерживают VLAN, IPsec, QoS, multicast-маршрутизацию и Policy Routing. Каждая задача требовала отдельной команды с несвязанным синтаксисом.
iproute2 объединил всё в одну утилиту ip с подкомандами. Ядро Linux взаимодействует с сетевой подсистемой через netlink-сокеты — ip работает напрямую с ними, тогда как ifconfig парсит вывод /proc/net/. В дистрибутивах на базе systemd (RHEL 7+, Ubuntu 16.04+, Debian 9+) ip установлена по умолчанию. net-tools остаётся в репозиториях для совместимости, но разработчики ядра не добавляют в него новые функции с 2001 года.
Установка, если потребовалась: apt install iproute2 или yum install iproute.
ip link: состояние и управление интерфейсами
ip link оперирует уровнем L2 — выводит список и управляет состоянием интерфейсов.
Вывод показывает индекс, имя, MAC-адрес, MTU, состояние (UP/DOWN) и счётчики ошибок/пакетов.
Поднять или опустить интерфейс:
Опускание интерфейса разрывает соединение. При удалённой работе лучше обернуть в скрипт с таймаутом и автовосстановлением.
Установить MTU, сменить MAC или переименовать:
Создать виртуальный интерфейс (VETH-пара для namespace или моста):
Удалить интерфейс:
| Флаг | Назначение |
|---|---|
| show | отобразить интерфейсы (краткая форма: ip l) |
| set | изменить параметры интерфейса |
| add / del | создать или удалить виртуальный интерфейс |
| master | привязать интерфейс к мосту |
ip addr: привязка и диагностика адресов
ip addr управляет IP-адресами (L3).
Добавить адрес:
Добавить вторичный адрес (алиас) на тот же интерфейс:
Вторичные адреса в Linux — не алиасы в понимании ifconfig, а часть одной адресной сущности. Команда ifconfig eth0:0 создавала псевдоним с отдельным именем; ip работает иначе.
Удалить адрес:
Очистить все адреса с интерфейса:
Полезно при перенастройке: сбросить старые адреса и назначить новые без перезагрузки сервиса.
Указать scope и label:
scope host — адрес только для локальных сокетов, scope global — маршрутизируемый.
| Подкоманда | Действие |
|---|---|
| add | назначить адрес |
| del | удалить адрес |
| show | отобразить адреса |
| flush | очистить адреса интерфейса |
ip route: маршруты по умолчанию и static
ip route работает с таблицей маршрутизации.
Добавить маршрут по умолчанию (gateway):
Добавить конкретный маршрут:
Маршрут к хосту через прямой ARP (no route, только L2):
Удалить маршрут:
Заменить маршрут (если существует — изменит, если нет — создаст):
Получить маршрут, который ядро выберет для адреса:
Добавить маршрут в другую таблицу (по умолчанию таблица 254):
| Подкоманда | Назначение |
|---|---|
| show / list | показать таблицу маршрутов |
| add | добавить маршрут |
| del | удалить маршрут |
| replace | изменить или создать маршрут |
| get | показать маршрут до адреса |
| flush | очистить кэш маршрутов |
ip neigh: ARP/NDP-кеш
ip neigh управляет таблицей соседей — ARP для IPv4, NDP для IPv6.
Добавить статическую ARP-запись:
nud (Neighbour Unreachability Detection) определяет состояние:
- permanent — запись не устаревает
- noarp — управляется протоколом, но не удаляется
- reachable / stale / delay / probe — автоматические состояния
Удалить запись:
Очистить весь кеш соседей на интерфейсе:
После смены MAC-адреса шлюза очистка ARP-кеша ускоряет восстановление связности: ip neigh flush dev eth0.
ip rule: политики маршрутизации
ip rule определяет, какая таблица маршрутизации используется для пакета.
Стандартный вывод:
Добавить правило для source IP:
Правило для исходящего интерфейса:
Удалить правило:
Правила проверяются по порядку (приоритет). Низкий номер — высокий приоритет. Добавляйте правила с приоритетом между существующими, если важна очерёдность.
| Действие | Назначение |
|---|---|
| from | source IP или CIDR |
| to | destination IP или CIDR |
| iif | входящий интерфейс |
| lookup | таблица маршрутизации |
| prio | числовой приоритет |
ip maddr: multicast-адреса
ip maddr выводит и управляет multicast-группами интерфейса.
Добавить интерфейс в multicast-группу:
Удалить:
В отличие от unicast, multicast-адресация используется для broadcast-доменов, протоколов маршрутизации (OSPF, RIP), сервисов обнаружения и стриминга. В большинстве задач эта команда не нужна, но при настройке кластеров или мониторинга через специфичные протоколы — потребуется.
ip netns: изоляция сетевых стеков
ip netns создаёт изолированные сетевые namespace. Каждый namespace имеет собственные интерфейсы, адреса, маршруты, ARP-таблицу и правила.
Создать namespace:
Запустить процесс внутри namespace:
Поднять интерфейс в namespace:
Переместить VETH-интерфейс в namespace:
Удалить namespace:
Список namespace:
Контейнеры (docker, podman, LXC) используют именно netns. Если контейнер не получает сеть — проверьте namespace хоста: ip netns exec <container_pid> ip addr.
ifconfig, arp, route — что осталось для совместимости
net-tools формально доступны в репозиториях всех major-дистрибутивов. Исходный код не развивается, но пакеты поддерживаются для совместимости.
| Старая команда | Эквивалент ip | Статус |
|---|---|---|
| ifconfig | ip addr, ip link | deprecated |
| route -n | ip route | deprecated |
| arp -a | ip neigh | deprecated |
| netstat -tulpn | ss -tulpn | deprecated |
| nameif | ip link name | deprecated |
ss из iproute2 заменяет netstat — работает быстрее, выводит больше информации о сокетах.
Скрипты инициализации сети в старых дистрибутивах могут опираться на ifconfig. На новых системах systemd-networkd, NetworkManager и cloud-init используют ip напрямую или через свои абстракции.
Если в новом дистрибутиве ifconfig не найден — это нормально. Настройка через ip покрывает все актуальные сценарии: от назначения адреса до сложных политик маршрутизации и изоляции сервисов через namespace.