Как прописать маршруты

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

Для такой сети:

  1. Машины сегментов должны быть подключены к выделенным сетям.
  2. Надо настроить на интерфейсах IP-адреса.
  3. Из сегмента 1 требуется маршрут в сеть b.b.b.b через GW (a.a.a.254).
  4. Из сегмента 2 требуется маршрут в сеть a.a.a.a через GW (b.b.b.254).

Пример для Windows

Чтобы прописать маршруты на сервере (выделенном сервере, виртуальной машине, облачном сервере), введите команду в консоли:

route ADD -p a.a.a.a MASK 255.255.255.0 b.b.b.254 METRIC_1

, где:

  • route — программа работы с маршрутами;
  • ADD – команда для добавления маршрута;
  • -p – этот ключ нужен, чтобы сохранить маршрут;
  • MASK – маски сети;
  • METRIC_1 – параметр, определяющий приоритет указанного выше шлюза, 1 — наивысший приоритет.

Проверить прописанные маршруты можно командой route print.

Пример для Ubuntu/Debian

Чтобы прописать маршруты в ОС Ubuntu, проверьте существующие маршруты командой route или netstat -nr:

route 
Kernel IP routing table 
Destination Gateway Genmask Flags Metric Ref Use Iface 
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0 
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 

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

Добавьте статический маршрут в подсеть 192.168.2.0 с 24 маской (255.255.255.0), в роли шлюза укажите, например, 192.168.0.100. Команда будет выглядеть следующим образом:

route add -net 192.168.2.0/24 gw 192.168.0.100 

Проверьте существующие маршруты:

route 
Kernel IP routing table 
Destination Gateway Genmask Flags Metric Ref Use Iface 
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0 
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 
192.168.2.0 192.168.0.100 255.255.255.0 UG 0 0 0 eth0 

Начиная с версии Ubuntu 17.10 Netplan используется по умолчанию как утилита для конфигурирования сетевых настроек.

В предыдущих версиях Ubuntu использовалась утилита ifconfig и конфигурационный файл /etc/network/interfaces.

В нашем случае все образы OS Linux используют систему Cloud-init для инициализации системы при первом запуске. В ОС Ubuntu утилита Netplan установлена, но не используется.

Обратите внимание! Если произойдет перезагрузка сервера, то маршрут пропадет, как и с семейством RHEL.

Сохранение маршрута при перезагрузке сервера

Чтобы при перезагрузке сервера маршрут не пропал, нужно для соответствующего сетевого интерфейса, в нашем случае это eth0, пропишите нужный маршрут в файле конфигурации /etc/network/interfaces.d/50-cloud-init.cfg:

  1. Отключите возможность настройки сети через Cloud-init и создайте файл:

    touch /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
  2. Добавьте в созданный файл необходимые параметры конфигурации Cloud-init, отключающие конфигурирование сети:

    echo "network: {config: disabled}" >> /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg 
  3. Добавьте в файл конфигурации маршрут up route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.0.100:

    vi /etc/network/interfaces.d/50-cloud-init.cfg 

    Пример:

    auto lo 
     iface lo inet loopback 
          dns-nameservers 188.93.16.19 188.93.17.19 
    auto eth0 
     iface eth0 inet static 
         address 192.168.0.2/24 
         mtu 1500 
         post-up route add default gw 192.168.0.1 || true 
         pre-down route del default gw 192.168.0.1 || true 
    
    up route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.0.100 
  4. Перезагрузите сервис:

    systemctl restart networking 

    Для Ubuntu 18 используйте команду:

     systemctl restart networking.service
  5. Проверьте существующие маршруты:

    route 
    Kernel IP routing table 
    Destination Gateway Genmask Flags Metric Ref Use Iface
    default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0 
    192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 
    192.168.2.0 192.168.0.100 255.255.255.0 UG 0 0 0 eth0 

Маршрут успешно прописался и не пропадет, если перезагрузить сервис.

Пример для CentOS/Fedora/RHEL

Проверьте существующие маршруты командой route или netstat -nr:

route 
Kernel IP routing table 
Destination Gateway Genmask Flags Metric Ref Use Iface 
default gateway 0.0.0.0 UG 0 0 0 eth0 
link-local 0.0.0.0 255.255.0.0 U 1002 0 0 eth0 
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 

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

Добавьте статический маршрут в подсеть 192.168.2.0 с 24 маской (255.255.255.0), в роли шлюза укажите, например, 192.168.0.100. Команда будет выглядеть следующим образом:

route add -net 192.168.2.0/24 gw 192.168.0.100 

Проверьте добавленные маршруты:

route 
Kernel IP routing table 
Destination Gateway Genmask Flags Metric Ref Use Iface 
default gateway 0.0.0.0 UG 0 0 0 eth0 
link-local 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.2.0 192.168.0.100 255.255.255.0 UG 0 0 0 eth0 

Маршрут успешно добавлен.

Обратите внимание! Если произойдет перезагрузка системы, то добавленный маршрут будет удален.

Сохранение маршрута при перезагрузке сервера

Чтобы при перезагрузке системы маршрут не был удален, в каталоге /etc/sysconfig/network-scripts создайте файл с именем route-eth0 (соответствует нужному интерфейсу eth0):

  1. Отключите возможность настройки сети через Cloud-init и создайте файл:

    touch /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
  2. Добавьте в созданный файл необходимые параметры конфигурации Cloud-init, отключающие конфигурирование сети:

    echo "network: {config: disabled}" >> /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg 
  3. Удалите текущий файл настроек:

    rm -f /etc/sysconfig/network-scripts/route-eth0
  4. Создайте новый файл:

    touch /etc/sysconfig/network-scripts/route-eth0 
  5. Добавьте новый нужный маршрут:

    echo "192.168.2.0/24 via 192.168.0.100" >> /etc/sysconfig/network-scripts/route-eth0 
  6. Перезапустите сетевые службы, чтобы изменения вступили в силу:

    systemctl restart network 
  7. Проверьте наличие маршрута:

    route 
    Kernel IP routing table 
    Destination Gateway Genmask Flags Metric Ref Use Ifaceа
    default gateway 0.0.0.0 UG 0 0 0 eth0 
    link-local 0.0.0.0 255.255.0.0 U 1002 0 0 eth0 
    192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 
    192.168.2.0 192.168.0.100 255.255.255.0 UG 0 0 0 eth0