CentOS 8:两个外部网络适配器、两个 ISP - 路由问题

CentOS 8:两个外部网络适配器、两个 ISP - 路由问题

鉴于:一台搭载 CentOS 8 且配有三个网络适配器的计算机。

eth0、eth2:外部,连接两个不同的ISP
eth1:面向家庭网络(内联网)

任务:允许从任一 ISP 访问某些内部服务。有几种服务,下面我仅提到 SSH。

在以下配置中:
IP1:第一个 ISP(ISP1)的外部 IP,分配给 eth0
网关 1:ISP1 提供的网关 IP
网络 1、网络掩码 1:与 IP1 相关
IP2:第二个 ISP(ISP2)的外部 IP,分配给 eth2
网关 2:ISP2 提供的网关 IP
网络 2、网络掩码 2:与 IP2 相关
LocalSSHIP:运行 SSH 服务器的内联网(eth1)中的 IP

当前配置如下。路由表:

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

对来自 eth1 的流量应用 SNAT:

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

现在的情况:

  1. 从eth0转发的所有服务均正常运行。
  2. 所有来自内联网的流量均正常传出和返回。
  3. 所有从 eth2 访问服务的尝试均超时。

/var/log/messages 中没有明显的提示(例如有关“火星 IP”的投诉)。

我在这里有点茫然,非常欢迎大家提供建议。

相关内容