Два шлюза по умолчанию в 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
Исходная конфигурация выглядит следующим образом:
# 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
.
#
# 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
, чтобы они выполнялись после запуска сети после перезагрузки.
Вот так будет выглядеть описание команд.
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
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Обсуждение
Нет комментариев.