SCROLL
Среднее время на прочтение: 1 мин.

Два шлюза по умолчанию в Linux

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

По умолчанию в системе Linux есть только одна таблица маршрутизации, в которую можно внести записи только для одного шлюза по умолчанию. С помощью iproute2 можно настроить дополнительную таблицу маршрутизации и разрешить системе использовать эту таблицу на основе правил.

К примеру есть два интерфейса и для каждого должен использоваться свой шлюз.

  • ens192 — 192.168.0.0/24
    • gateway — 192.168.0.1
  • ens224 — 10.10.0.0/24
    • gateway — 10.10.0.1

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

/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface

auto lo
iface lo inet loopback

# The primary network interface

allow-hotplug ens192
iface ens192 inet static
    address 192.168.0.10
    netmask 255.255.255.0
    gateway 192.168.0.1

# The secondary network interface
allow-hotplug ens224
iface ens224 inet static
    address 10.10.0.10
    netmask 255.255.255.0

Добавление таблицы маршрутизации

Чтобы добавить новую таблицу маршрутизации, необходимо отредактировать файл /etc/iproute2/rt_tables. Назовём таблицу маршрутизации rt2 и установим для неё приоритет 1.

/etc/iproute2/rt_tables
#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
1 rt2

Настройка таблицы маршрутизации

Заполним новую таблицу маршрутизации, выполняем следующие команды.

ip route add 10.10.0.0/24 dev ens224 src 10.10.0.10 table rt2
ip route add default via 10.10.0.1 dev ens224 table rt2
  • Первая команда сообщает, что сеть 10.10.0.0/24 доступна через интерфейс ens224.
  • Вторая команда устанавливает шлюз по умолчанию.

Правила маршрутизации

Чтобы система знала, когда использовать новую таблицу маршрутизации, настроим два правила.

ip rule add from 10.10.0.10/32 table rt2
ip rule add to 10.10.0.10/32 table rt2

Эти правила гласят, что трафик с IP-адреса 10.10.0.10, а также трафик, направленный на этот IP-адрес или проходящий через него, должны использовать таблицу маршрутизации rt2.

Создание постоянной конфигурации

Команды ip rule и ip route станут недействительными после перезагрузки, поэтому их следует прописать непосредственно в файл /etc/network/interfaces, чтобы они выполнялись после запуска сети после перезагрузки.

Вот так будет выглядеть описание команд.

/etc/network/interfaces
iface ens224 inet static
    address 10.10.0.10
    netmask 255.255.255.0
    post-up ip route add 10.10.0.0/24 dev ens224 src 10.10.0.10 table rt2
    post-up ip route add default via 10.10.0.1 dev ens224 table rt2
    post-up ip rule add from 10.10.0.10/32 table rt2
    post-up ip rule add to 10.10.0.10/32 table rt2

Тестирование конфигурации

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

ip route list table rt2
ip rule show
 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

Обсуждение

0 комментариев

Нет комментариев.