CentOS 8: два внешних сетевых адаптера, два интернет-провайдера — проблемы с маршрутизацией

CentOS 8: два внешних сетевых адаптера, два интернет-провайдера — проблемы с маршрутизацией

Данный: компьютер под управлением CentOS 8 с тремя сетевыми адаптерами.

eth0, eth2: внешний, подключен к двум разным интернет-провайдерам
eth1: выходит на домашнюю сеть (интранет)

Задание: разрешить доступ к определенным внутренним сервисам от любого провайдера. Есть несколько сервисов, я упоминаю только SSH ниже.

В конфигурациях ниже:
IP1: внешний IP у первого интернет-провайдера (ISP1), назначенный eth0
Gateway1: IP шлюза, предоставленного ISP1
Network1,Netmask1: относится к IP1
IP2: внешний IP у второго интернет-провайдера (ISP2), назначенный eth2
Gateway2: IP шлюза, предоставленного ISP2
Network2,Netmask2: относится к IP2
LocalSSHIP: IP в интрасети (eth1), где работает сервер SSH

Текущие конфигурации приведены ниже. Таблицы маршрутизации:

echo "200 isp1" >> /etc/iproute2/rt_tables
echo "201 isp2" >> /etc/iproute2/rt_tables

Политики маршрутизации:
/etc/sysconfig/network-scripts/route-eth0

Network1 dev eth0 src IP1 table isp1
default via Gateway1 dev eth0 table isp1

/etc/sysconfig/network-scripts/route-eth2

Network2 dev eth2 src IP2 table isp2
default via Gateway2 dev eth2 table isp2

Правила маршрутизации:
/etc/sysconfig/network-scripts/rule-eth0

from IP1/32 table isp1

/etc/sysconfig/network-scripts/rule-eth2

from IP2/32 table isp2

Фрагменты iptables. Внешний трафик, перенаправленный на локальный SSH-сервер с обоих интерфейсов:

iptables -A PREROUTING -t nat -i eth0 -p tcp -d IP1 --dport 22 -j DNAT --to LocalSSHIP:22
iptables -A PREROUTING -t nat -i eth2 -p tcp -d IP2 --dport 22 -j DNAT --to LocalSSHIP:22
iptables -A FORWARD -p tcp -d LocalSSHIP --dport 22 -j ACCEPT

eth0 — шлюз по умолчанию:
$ ip route

default via Gateway1 dev eth0 proto static metric 100 
default via Gateway2 dev eth2 proto static metric 101 
...

$ ip правило

0:  from all lookup local
32764:  from IP2 lookup isp2
32765:  from IP1 lookup isp1
32766:  from all lookup main
32767:  from all lookup default

SNAT применяется к трафику, исходящему от eth1:

iptables -t nat -A POSTROUTING -i eth1 -o eth0 -j SNAT --to-source IP1

Текущая ситуация:

  1. Все службы, перенаправленные с eth0, работают нормально.
  2. Весь трафик, исходящий из интрасети, проходит и возвращается нормально.
  3. Все попытки доступа к сервисам из eth2 завершаются тайм-аутом.

В /var/log/messages нет никаких явных намеков (вроде жалоб на «марсианские IP-адреса»).

Я немного растерялся, буду очень рад любым советам.

Связанный контент