К основному содержимому

Настройка маршрутизации Linux: команды ip route и netplan

VDS / VPS · 19.04.2026 · 4 мин чтения
Иллюстрация к статье «Настройка маршрутизации Linux: команды ip route и netplan»

Маршрутизация Linux определяет, через какой сетевой интерфейс и шлюз отправлять пакеты. Современный инструмент — команда ip из пакета iproute2.

Основные команды ip

# Показать все IP-адреса
ip addr show
ip a  # краткая форма

# Показать таблицу маршрутизации
ip route show
ip r  # краткая форма

# Показать маршрут до конкретного хоста
ip route get 8.8.8.8

# ARP-таблица (соответствие IP → MAC)
ip neigh show

Временные изменения (до перезагрузки)

# Добавить IP-адрес на интерфейс
sudo ip addr add 192.168.1.100/24 dev eth0

# Удалить IP-адрес
sudo ip addr del 192.168.1.100/24 dev eth0

# Добавить маршрут через конкретный шлюз
sudo ip route add 10.0.0.0/8 via 192.168.1.1

# Добавить дефолтный шлюз
sudo ip route add default via 192.168.1.1

# Удалить маршрут
sudo ip route del 10.0.0.0/8

# Включить/выключить интерфейс
sudo ip link set eth0 up
sudo ip link set eth0 down

Постоянные маршруты через Netplan (Ubuntu 22.04+)

# /etc/netplan/01-netcfg.yaml
network:
  version: 2
  ethernets:
    eth0:
      dhcp4: false
      addresses:
        - 192.168.1.10/24
      routes:
        - to: default
          via: 192.168.1.1
        - to: 10.0.0.0/8
          via: 10.0.0.1
          metric: 100
      nameservers:
        addresses: [8.8.8.8, 8.8.4.4]
sudo netplan apply

Два интерфейса с разными шлюзами

# /etc/netplan/01-netcfg.yaml
network:
  version: 2
  ethernets:
    eth0:                          # Основной (интернет)
      dhcp4: false
      addresses: [1.2.3.4/24]
      routes:
        - to: default
          via: 1.2.3.1
    eth1:                          # Приватная сеть
      dhcp4: false
      addresses: [10.0.0.10/24]
      routes:
        - to: 10.0.0.0/8
          via: 10.0.0.1
💡 ip vs ifconfig: Команда ifconfig устарела и не установлена по умолчанию в Ubuntu 20.04+. Используйте ip addr и ip route — они поддерживают IPv6 и современные возможности ядра.

Разбор типичных ошибок маршрутизации

"RTNETLINK answers: Network is unreachable" при добавлении маршрута через шлюз — означает, что указанный шлюз недостижим напрямую, то есть не находится в одной подсети с адресом интерфейса.

sudo ip route add 10.0.0.0/8 via 192.168.1.1
RTNETLINK answers: Network is unreachable

Проверьте, что на интерфейсе уже есть адрес из той же подсети, что и шлюз: ip addr show dev eth0. Если шлюз 192.168.1.1, а на интерфейсе только адрес 10.0.0.5/24, маршрут добавить не получится, пока не появится адрес из сети 192.168.1.0/24.

После netplan apply интернет пропадает полностью — почти всегда синтаксическая ошибка отступов в YAML (YAML критичен к пробелам) либо конфликт с NetworkManager/systemd-networkd, который управляет тем же интерфейсом.

sudo netplan apply
Error in network definition //etc/netplan/01-netcfg.yaml: invalid indentation

Проверьте синтаксис перед применением: sudo netplan try — команда покажет ошибку и автоматически откатит изменения через 120 секунд, если вы не подтвердите их, что спасает от потери SSH-доступа при опечатке.

Способы настройки маршрутов: сравнение

СпособПостоянствоГде применяетсяСинтаксис
ip route addДо перезагрузкиЛюбой Linux с iproute2Команда CLI
Netplan (YAML)ПостоянноUbuntu 18.04+YAML-декларация
/etc/network/interfacesПостоянноDebian, старый UbuntuКлюч-значение
NetworkManager (nmcli)ПостоянноDesktop-дистрибутивы, RHEL/CentOSCLI или GUI

Когда статических маршрутов недостаточно

  • Топология сети часто меняется (несколько провайдеров, резервные каналы) — нужна динамическая маршрутизация (BGP, OSPF) через FRRouting или Bird, а не список статических записей.
  • Нужен автоматический failover между провайдерами — статический маршрут не переключится сам при падении линка, для этого нужны специальные механизмы мониторинга и скрипты или протоколы маршрутизации.
  • Сервер обслуживает десятки VLAN с независимой маршрутизацией — ручное управление через ip route или Netplan становится трудноподдерживаемым, стоит смотреть в сторону выделенного роутера или FRRouting.

Проверка результата

  1. Проверьте применённые маршруты: ip route show должен содержать нужную запись с правильным шлюзом и метрикой.
  2. Проверьте связность через конкретный маршрут: ip route get 10.0.0.5 должен показать, через какой интерфейс и шлюз пойдёт пакет.
  3. Убедитесь, что настройки переживут перезагрузку: sudo netplan generate && sudo reboot, затем повторите ip route show.
  4. Проверьте оба интерфейса при мультигоминге: ping -I eth0 8.8.8.8 и ping -I eth1 10.0.0.1 должны проходить независимо друг от друга.

Перед настройкой маршрутов полезно разобраться с масками подсетей — см. статью про CIDR, а общий механизм трансляции адресов описан в статье про NAT.

Статья помогла?
← Назад в базу знаний Задать вопрос поддержке