Настройка маршрутизации в Linux 2026: ip route, netplan и systemd-networkd — пошаговые инструкции | AdminWiki

Настройка маршрутизации в Linux 2026: ip route, netplan и systemd-networkd — пошаговые инструкции

15 июля 2026 8 мин. чтения
Содержание статьи

Настройка маршрутизации - это базовая задача для любого системного администратора или DevOps-инженера, работающего с Linux-серверами. В 2026 году актуальны три основных инструмента: классический iproute2 (ip route), декларативный netplan и интегрированный systemd-networkd. Это руководство даёт готовые, проверенные на практике конфигурации для каждого инструмента, методы диагностики проблем и рекомендации по безопасному внедрению изменений в рабочей среде. Вы научитесь добавлять статические маршруты, управлять метриками для приоритизации трафика и быстро находить ошибки с помощью ip route get и traceroute.

Выбор инструмента для маршрутизации в 2026 году: iproute2, netplan или systemd-networkd?

Первый шаг - понять, какой инструмент использовать. Выбор зависит от дистрибутива, задачи и уровня контроля, который вам нужен.

Когда использовать классический iproute2 (ip route) в 2026 году

Утилита ip из пакета iproute2 остаётся универсальным низкоуровневым инструментом. Её применяют для:

  • Отладки в реальном времени: добавление или удаление маршрутов без перезагрузки служб.
  • Написания скриптов автоматизации, где нужен прямой контроль.
  • Работы в минимальных окружениях: Docker-контейнеры, recovery mode, встроенные системы.
  • Тонкой настройки метрик и политик маршрутизации (routing policy).

Пример: вам нужно быстро проверить доступность подсети 10.10.20.0/24 через временный маршрут. Команда sudo ip route add 10.10.20.0/24 via 192.168.1.254 dev eth0 добавит маршрут немедленно. После перезагрузки он исчезнет - это идеально для диагностики.

Netplan: декларативная настройка для Ubuntu и современных серверов

Netplan стал стандартом де-факто для серверных дистрибутивов, особенно Ubuntu Server, начиная с 18.04. Его преимущества:

  • Человекочитаемый YAML-синтаксис: конфигурация собрана в одном файле в /etc/netplan/.
  • Абстракция от бэкенда: один конфиг работает с systemd-networkd или NetworkManager (указывается как renderer).
  • Идемпотентность: применение конфига (sudo netplan apply) даёт предсказуемый результат.
  • Поддержка новых функций ядра и сетевых пространств имён.

Важно понимать, какой renderer используется. Для серверов обычно это networkd. Проверить можно командой netplan get all.

Systemd-networkd: глубоко интегрированное сетевое управление

Демон systemd-networkd - это низкоуровневое сетевое управление, глубоко встроенное в экосистему systemd. Он идеален для:

  • Контейнеризированных сред и облачных образов (CoreOS, Flatcar, Arch Linux).
  • Администраторов, которые хотят управлять сетью через systemctl и unit-файлы.
  • Сценариев с systemd-nspawn и сетевой изоляцией.

Конфигурация разбита на файлы в /etc/systemd/network/ с расширениями .network, .netdev, .link. Такой же низкоуровневый контроль, как в примере с оптимизацией UDP-стека для игровых серверов, где важен каждый пакет, но в рамках systemd.

Инструмент Основные дистрибутивы Плюсы Минусы Рекомендуемый use-case
iproute2 (ip route) Все Мгновенное применение, полный контроль, работает везде Изменения не сохраняются после перезагрузки Диагностика, скрипты, экстренные правки
Netplan Ubuntu Server, Debian 12+, некоторые образы RHEL Простой YAML, один конфиг для всех интерфейсов, idempотентность Требует понимания renderer, меньше прямого контроля Базовая настройка серверов, инфраструктура как код
Systemd-networkd Arch, CoreOS, Flatcar, дистрибутивы на systemd Глубокая интеграция с systemd, управление через systemctl, мощные возможности Сложнее для новичков, конфигурация разбита на файлы Контейнеры, облачные образы, минималистичные системы

Рекомендация на 2026 год: используйте netplan для простой и декларативной настройки серверов, iproute2 для скриптов и отладки, systemd-networkd для глубокой интеграции со systemd в контейнерных средах.

Практические сценарии настройки статической маршрутизации

Рассмотрим конкретный сценарий. Сервер имеет два сетевых интерфейса:

  • eth0: IP 192.168.1.10/24, шлюз по умолчанию 192.168.1.1
  • eth1: IP 10.0.0.2/24, без шлюза по умолчанию

Задача 1: направить весь трафик в подсеть 172.16.0.0/16 через шлюз 10.0.0.1 на интерфейсе eth1.
Задача 2: установить шлюз по умолчанию через eth0.

Добавление маршрута к удаленной подсети: три способа

Через ip route:

sudo ip route add 172.16.0.0/16 via 10.0.0.1 dev eth1

Команда сработает немедленно. Проверить: ip route show | grep 172.16.0.0.

Через netplan: Добавьте в файл /etc/netplan/01-netcfg.yaml (имя может отличаться):

network:
  version: 2
  renderer: networkd
  ethernets:
    eth1:
      addresses:
        - 10.0.0.2/24
      routes:
        - to: 172.16.0.0/16
          via: 10.0.0.1
          metric: 100

Примените: sudo netplan apply.

Через systemd-networkd: Создайте файл /etc/systemd/network/80-eth1-routes.network:

[Match]
Name=eth1

[Network]
Address=10.0.0.2/24

[Route]
Destination=172.16.0.0/16
Gateway=10.0.0.1
Metric=100

Перезапустите демон: sudo systemctl restart systemd-networkd.

Настройка шлюза по умолчанию (default gateway)

Ошибка в настройке шлюза по умолчанию ведёт к потере удалённого доступа к серверу. Всегда имейте резервный доступ (консоль IPMI/ILO, открытую сессию screen/tmux) перед изменениями.

Через ip route: Удалите старый шлюз (если есть) и добавьте новый с метрикой.

sudo ip route del default
sudo ip route add default via 192.168.1.1 dev eth0 metric 100

Через netplan: В конфигурацию интерфейса eth0 добавьте:

    eth0:
      addresses:
        - 192.168.1.10/24
      gateway4: 192.168.1.1
      gateway4-metric: 100

Или, для IPv6, используйте gateway6 и gateway6-metric.

Через systemd-networkd: В файле для eth0 (например, /etc/systemd/network/10-eth0.network):

[Route]
Gateway=192.168.1.1
GatewayOnLink=yes
Metric=100

Метрика (metric) критически важна, если у сервера несколько шлюзов. Ядро выбирает маршрут с меньшей метрикой.

Динамическая маршрутизация и управление метриками

Метрика маршрута - это числовой приоритет. Чем меньше число, тем выше приоритет. Это основной инструмент для управления несколькими сетевыми путями, например, основным Ethernet-каналом и резервным 4G/LTE модемом.

Настройка метрик для управления приоритетом маршрутов

Сценарий: eth0 (основной, метрика 100), wlan0 (резервный, метрика 200). При падении eth0 трафик автоматически пойдёт через wlan0.

В ip route: метрика задаётся ключом metric.

sudo ip route add default via 192.168.1.1 dev eth0 metric 100
sudo ip route add default via 10.0.0.1 dev wlan0 metric 200

В netplan: используйте параметр metric в секции routes: или gateway4-metric.

В systemd-networkd: параметр Metric= в секции [Route].

Проверить приоритеты можно командой ip route show. Маршруты сортируются по метрике.

Введение в динамическую маршрутизацию (краткий обзор)

Netplan и systemd-networkd управляют только статическими маршрутами. Для динамической маршрутизации (OSPF, BGP) используют специализированные демоны: FRR (Free Range Routing) или Bird 2. Эти протоколы автоматически обновляют таблицы маршрутизации при изменениях в сети.

Роль статической маршрутизации в такой схеме - указать next-hop до соседа по протоколу. Например, чтобы установить BGP-сессию с маршрутизатором 10.0.0.1, вам нужен статический маршрут до этого адреса или прямое подключение в одной подсети.

Для глубокого погружения в тему динамической маршрутизации рекомендуем наше руководство по протоколам OSPF, BGP и EIGRP для отказоустойчивых сетей в 2026 году.

Диагностика и отладка сетевых проблем: ip route get и traceroute

Вы настроили маршруты, но трафик не идёт. Две ключевые команды для диагностики.

Мастер-команда для диагностики: ip route get

Команда ip route get <целевой_IP> показывает, какой именно маршрут ядро выберет для пакета до указанного адреса. Это первый шаг при любой проблеме.

$ ip route get 8.8.8.8
8.8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.10 uid 1000
    cache

Разберём вывод:

  • via 192.168.1.1 - шлюз (next-hop).
  • dev eth0 - исходящий интерфейс.
  • src 192.168.1.10 - исходный IP-адрес, который будет подставлен в пакет.

Если вывод показывает неожиданный интерфейс или шлюз - ошибка в таблице маршрутизации. Например, трафик в локальную подсеть 10.0.0.0/24 уходит через шлюз по умолчанию, а не напрямую. Значит, отсутствует или некорректно настроен маршрут к этой подсети.

Использование traceroute для поиска "пробки" на пути

Команда traceroute (или tracepath) показывает путь пакета от вашего сервера до цели, перечисляя все промежуточные маршрутизаторы (хосты).

$ traceroute -n 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  192.168.1.1  0.5 ms  0.3 ms  0.2 ms
 2  10.100.0.1  5.2 ms  5.1 ms  5.0 ms
 3  95.167.92.1  10.1 ms  10.0 ms  9.9 ms
 ...

Ключ -n отключает DNS-запросы, показывая только IP-адреса - это быстрее.

Типичные проблемы:

  • Звёздочки (* * *) на определённом хопе: пакеты теряются на этом участке сети.
  • Неожиданный поворот трафика: после хопа 2 пакеты идут в другую сеть, а не к цели. Возможна ошибка маршрутизации у провайдера или на вашем сервере (неверная метрика, недоступен next-hop).

Анализ пути пакета - это та же задача, которую решали разработчики FiveM для GTA V Enhanced, оптимизируя UDP-стек для снижения задержек. Системный администратор должен уметь анализировать путь служебного трафика.

Безопасное внедрение и гарантии актуальности (2026)

Все примеры в этой статье проверены на актуальных на 2026 год дистрибутивах: Ubuntu 24.04 LTS, Debian 12, RHEL 9 и их обновлениях. Устаревшие инструменты route и ifconfig не рассматриваются - они не поддерживают современные функции и могут давать неполную информацию.

План отката: как быстро вернуть сеть в рабочее состояние

Перед любыми изменениями создайте резервную копию конфигурационных файлов:

sudo cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.backup
# Или для systemd-networkd
sudo cp -r /etc/systemd/network/ /etc/systemd/network.backup/

План отката для каждого инструмента:

  1. ip route: Заранее запишите команду удаления добавленного маршрута: sudo ip route del 172.16.0.0/16 via 10.0.0.1.
  2. Netplan: Верните старый конфиг: sudo cp /etc/netplan/01-netcfg.yaml.backup /etc/netplan/01-netcfg.yaml && sudo netplan apply.
  3. Systemd-networkd: Удалите или переименуйте добавленный .network файл и перезапустите демон.

Практический совет: сначала добавляйте тестовые маршруты с очень высокими метриками (например, 1000). Они не повлияют на основной трафик, но позволят проверить корректность конфигурации командой ip route get.

Будущее сетевого стека Linux: io_uring и перспективы оптимизации

Контекст из индустрии показывает вектор развития. Проект FiveM для GTA V Enhanced достиг сетевого тика 120 обновлений в секунду, отказавшись от сторонних библиотек в пользу сырых UDP-сокетов. Это дало полный контроль над сетевым стеком. В качестве следующего шага оптимизации для Linux рассматривается технология io_uring.

io_uring - это новая асинхронная модель ввода-вывода в ядре Linux, представленная в версии 5.1. Она устраняет накладные расходы традиционных системных вызовов, что критично для высокопроизводительных сетевых операций. В будущем io_uring может значительно ускорить обработку сетевых пакетов, снизить задержки (latency) и увеличить пропускную способность (throughput) для таких задач, как маршрутизация в высоконагруженных приложениях и балансировка нагрузки.

Понимание основ маршрутизации, изложенных в этой статье, - необходимая база для работы с подобными низкоуровневыми оптимизациями. Для настройки продвинутой маршрутизации и управления трафиком на уровне приложений вам пригодится руководство по политикам маршрутизации, iptables, nftables и firewalld в 2026 году.

Для развертывания и тестирования сетевых конфигураций в изолированной среде вы можете использовать облачную инфраструктуру, например, Timeweb Cloud, которая предоставляет VPS и серверы с гибкой конфигурацией сети.

Поделиться:
Сохранить гайд? В закладки браузера