Управление сетями и IP в Linux с помощью команды ip

Краткое определение: команда ip — часть пакета iproute2, предназначенная для управления сетевыми интерфейсами и маршрутами в ядре Linux.
Зачем использовать ip вместо старых утилит
Команда ip заменяет устаревший ifconfig/route/arp. Она предоставляет единый интерфейс для работы с интерфейсами, адресами, маршрутами и таблицами соседей (ARP), поддерживает сложные конфигурации (включая policy routing) и лучше отражает современную сетевую модель Linux.
Важно: на современных дистрибутивах ifconfig может отсутствовать по умолчанию; ip обычно предустановлен.
Найти IP-адрес в Linux
Чтобы просмотреть IP-адреса всех интерфейсов, используйте одну из этих форм команд:
ip address
ip addr
ip aВывод показывает все интерфейсы (lo — loopback, и физические/виртуальные интерфейсы). Включена информация по уровням:
- Уровень 1: состояние физической связи, MTU, qlen и статус (UP/DOWN).
- Уровень 2: MAC-адрес и параметры канального уровня.
- Уровень 3: IP-адреса (IPv4/IPv6), префиксы и метки (dynamic/static).
Для краткого вывода используйте флаг –brief:
ip --brief address showТолько IPv4:
ip -4 addrIP адрес конкретного интерфейса:
ip address show dev ens33Совет: если вы работаете на сервере без GUI, комбинируйте ip с grep для быстрого поиска:
ip -4 addr show | grep -w inet -A2Просмотр и изменение MAC-адреса
Просмотреть MAC-адрес всех интерфейсов:
ip --brief link showПросмотреть MAC конкретного интерфейса:
ip --brief link show dev ens33Изменение MAC (примерный рабочий порядок):
- Опустить интерфейс.
sudo ip link set dev ens33 down- Установить новый MAC:
sudo ip link set dev ens33 address 02:01:02:03:04:08- Поднять интерфейс.
sudo ip link set dev ens33 upВажно: некоторые аппаратные драйверы запрещают изменение MAC; в таких случаях команда завершится ошибкой. Также изменение MAC влияет на DHCP-динамику — сервер может выдать новый адрес.
Статистика сетевых интерфейсов
Показать статистику по всем интерфейсам:
ip -s linkПоказать статистику по конкретному интерфейсу:
ip -s link show dev ens33Вывод содержит: переданные/полученные байты и пакеты, ошибки, dropped, multicast и прочие счётчики. Эти данные полезны при поиске проблем с качеством канала и ошибок драйвера.
Управление свойствами линка
Поднять интерфейс:
sudo ip link set ens33 upОпустить интерфейс:
sudo ip link set ens33 downИзменить MTU:
sudo ip link set mtu 8000 dev ens33Примечание по MTU: увеличение MTU может повысить производительность для больших payload’ов (например, NFS, iSCSI), но требует поддержки на всем пути передачи.
Добавление и удаление IP-адресов
Добавить адрес к интерфейсу:
ip addr add 192.168.42.140/24 dev ens33Удалить адрес:
ip addr del 192.168.42.140/24 dev ens33Замечание: команды ip добавляют адрес в runtime-конфигурацию ядра. Чтобы изменения сохранились после перезагрузки, нужно прописать их в конфигурации сетевого менеджера (NetworkManager, systemd-networkd, /etc/network/interfaces и т.д.).
Критерии приёмки:
- Интерфейс имеет ожидаемый IP (ip addr).
- Шлюз доступен (ping, ip route get).
- Сетевые службы работают после изменения.
Просмотр таблицы маршрутизации
Показать таблицу маршрутов:
ip routeСтрока маршрута содержит: сеть назначения, next hop (шлюз), интерфейс и метрику. Поле proto показывает, как маршрут был установлен (dhcp, kernel, static).
APIPA (169.254.0.0/16) — автоконфигурация при отсутствии DHCP. Хосты с адресами APIPA видят друг друга в локальной сети, но не могут выйти в роутер.
ip route get 8.8.8.8Команда показывает, через какой интерфейс и шлюз пойдёт трафик к указанному адресу.
Изменение маршрутов
Добавить маршрут к сети через шлюз:
sudo ip route add 192.168.20.0/24 via 192.168.10.16Добавить маршрут по умолчанию:
sudo ip route add default via 192.168.10.1 dev ens33Удалить маршрут:
sudo ip route delete 192.168.20.0/24 via 192.168.10.16Проверка: после добавления маршрута выполните traceroute или curl для целевого адреса, чтобы убедиться в корректном следовании пакетов.
Управление таблицей соседей (ARP)
Посмотреть ARP/neighbor-таблицу:
ip neigh showДобавить статическую запись:
sudo ip neigh add 192.168.10.50 lladdr aa:bb:cc:dd:ee:ff dev ens33Удалить запись:
sudo ip neigh del 192.168.10.50 dev ens33Статические записи полезны при проблемах с ARP-spoofing или когда нужно принудительно назначить MAC для сервиса.
Подсветка вывода
Чтобы добавить цвета в вывод и быстрее различать поля, используйте:
ip -c aЦвета помогают быстро идентифицировать UP/DOWN, адреса и типы интерфейсов в интерактивной работе.
Быстрый набор команд (cheat sheet)
| Задача | Команда |
|---|---|
| Показать все адреса | ip a |
| Краткий список интерфейсов | ip -br a |
| Показать маршруты | ip route |
| Добавить IP | ip addr add 192.168.1.10/24 dev eth0 |
| Удалить IP | ip addr del 192.168.1.10/24 dev eth0 |
| Поднять интерфейс | sudo ip link set eth0 up |
| Опустить интерфейс | sudo ip link set eth0 down |
| Изменить MAC | sudo ip link set dev eth0 address 02:01:02:03:04:05 |
| Показать ARP | ip neigh show |
| Добавить статический ARP | sudo ip neigh add 192.168.1.5 lladdr aa:bb:cc:dd:ee:ff dev eth0 |
Типичные ошибки и как их избежать
- Изменил IP, потерял доступ по SSH — всегда имей второй канал управления (консоль, KVM, физический доступ) или настройте временный второй IP перед изменением основного.
- Изменил MTU и потерял связь с некоторыми хостами — верните MTU прежним значением и проверьте PMTUD (Path MTU Discovery).
- Добавил маршрут без указания dev — система может выбрать неверный интерфейс; лучше указывать dev явно.
- Ожидал сохранения после reboot — ip команды изменяют runtime; сохраняйте конфигурацию в системном сетевом менеджере.
Альтернативные инструменты и когда их использовать
- ifconfig/route/arp — устарел, оставлен для совместимости.
- nmcli — удобен при работе с NetworkManager и для сохранения конфигураций.
- ss/netstat — для просмотра сокетов и связей.
- iptables/nftables — управление фильтрацией трафика (не для просмотра адресов).
Рекомендуемая модель: используйте ip для runtime-диагностики и nmcli/systemd-networkd для декларативной (постоянной) конфигурации.
Ментальные модели и эвристики
- Разделяйте уровни: link (L2) — ip (L3) — route (L3+). Изменения на одном уровне могут влиять на другие.
- Всегда проверяйте источник (proto) маршрута — это подскажет, откуда он появился (dhcp/kernel/static).
- Префикс /32 означает один хост, /24 — сеть с 256 адресами и т.д.
Рекомендации по безопасности
- Не меняйте MAC и IP на производственных системах без подтверждённого плана отката.
- Ограничьте доступ по SSH через firewall и используйте ключи, а не пароли.
- Для критичных хостов используйте статические ARP-записи и мониторинг ARP-анализов на предмет spoofing.
Ролевые чеклисты
Сисадмин — быстрый чек перед изменением IP:
- Иметь доступ на консоль.
- Сохранить текущую конфигурацию (выписать ip addr, ip route, ip neigh).
- Оповестить заинтересованных (если сервер в production).
- Применить изменение, проверить локально и удалённо.
- Откатить при ошибке.
DevOps — деплой сетевых изменений в автоматизации:
- Описать изменения в коде конфигурации (Ansible/Cloud-Init).
- Прогнать в staging.
- Наблюдать SLI после результата (доступность, задержка).
- Автоматический откат при ошибках.
SOP: добавление IP с возможностью отката
- Сохранить текущие состояния:
ip addr show > /tmp/ip-addr-before.txt
ip route show > /tmp/ip-route-before.txt
ip neigh show > /tmp/ip-neigh-before.txt- Добавить IP:
sudo ip addr add 192.168.42.140/24 dev ens33- Проверить доступность шлюза и внешних ресурсов:
ping -c3 192.168.42.1
ip route get 8.8.8.8- Если всё в порядке, внести изменение в persistent-конфиг. Если нет — откат:
sudo ip addr del 192.168.42.140/24 dev ens33Примеры тест-кейсов
- Добавление IP: после добавления интерфейс должен отвечать на ICMP для нового адреса.
- Удаление IP: после удаления адрес не должен присутствовать в ip addr и не должен отвечать.
- Добавление маршрута: пакеты до подсети проходят через указанный шлюз (traceroute).
Краткий глоссарий
- IP: адрес сетевого уровня (L3).
- MTU: максимальный размер полезной нагрузки кадра.
- ARP/neighbor: таблица соответствий IP ↔ MAC в локальной сети.
- proto: источник маршрута (dhcp/kernel/static).
Когда команда ip не подходит
- Если нужен графический интерфейс для настройки (используйте NetworkManager GUI).
- Если требуется декларативная постоянная конфигурация — применяйте системные файлы конфигурации или инструменты управления конфигурацией.
Заключение
Команда ip — базовый и мощный инструмент для любой сетевой работы в Linux. Она покрывает все основные сценарии от простой диагностики до сложной ручной настройки маршрутизации и таблиц соседей. Всегда планируйте изменения, тестируйте в test-среде и обеспечивайте путь отката.
Короткий список действий для быстрого старта:
- ip a — посмотреть адреса;
- ip link set dev
up/down — управление интерфейсом; - ip addr add/del — добавление/удаление адреса;
- ip route — просмотр/добавление/удаление маршрутов;
- ip neigh — управление ARP.
И помните: чтобы изменения сохранились после перезагрузки, редактируйте системные конфигурационные файлы или используйте менеджер сети (NetworkManager, systemd-networkd).
Похожие материалы
Компенсация экспозиции на iPhone — как использовать
Отключить звонки iPhone на iPad
Отключить звук iPhone без рабочего переключателя
Shot on iPhone Macro — конкурс макро‑фото 2022
Оптический зум на iPhone: как пользоваться