2 个 NIC 2 个网关 一个路由器 一个互联网网关

2 个 NIC 2 个网关 一个路由器 一个互联网网关

我有一个带两个网络的路由器

eth0:192.168.1.0/24,默认网关是192.168.1.1

eth2:10.0.88.0/24,默认网关为10.0.88.1

两个网络均使用网关 192.168.2.1 连接到 Internet,并通过第三个接口连接到路由器。两个网络中的所有服务器各有一个网卡,可以正确 ping 任何地址。

我现在需要设置几个带有 2 个网卡的 ubuntu 服务器,每个网络各一个分支(eno1 在 192.168.1.0 中,eno4 在 10.0.88.0 中)。因此,我使用了 iproute2 并具有以下配置:

ip route show
default via 192.168.1.1 dev eno1 onlink
10.0.88.0/24 dev eno4  proto kernel  scope link  src 10.0.88.11
192.168.1.0/24 dev eno1  proto kernel  scope link  src 192.168.1.14

ip route show table mng
default via 10.0.88.1 dev eno4 
10.0.88.0/24 dev eno4  scope link  src 10.0.88.11

规则如下

ip rule show
0:  from all lookup local 
32760:  from all to 10.0.88.11 lookup mng
32761:  from 10.0.88.11 lookup mng 
32762:  from all lookup main
32763:  from all lookup default 

此外,我还将所有网络/nic 的 rp_filter 设置为 1。

现在的问题是:我可以成功 ping 两个接口上的默认网关。

我可以从 eno1 网络成功 ping 我的互联网网关

ping 192.168.2.1
PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.
64 bytes from 192.168.2.1: icmp_seq=1 ttl=63 time=0.572 ms
(...)

但我无法从 eno4 网络 ping 通 Internet 网关:

ping -I eno4 192.168.2.1
PING 192.168.2.1 (192.168.2.1) from 10.0.88.11 eno4: 56(84) bytes of data.
From 10.0.88.11 icmp_seq=1 Destination Host Unreachable

这也是命令所确认的:

ip neigh show
(...)
192.168.2.1 dev eno4  FAILED
(...)

我需要进行什么配置才能使 eno4 也能通过其默认网关到达我的互联网网关(以及任何其他互联网地址)?

非常感谢您的回答

此致

br

答案1

有两点需要考虑,只要我理解正确就行。

  1. 您的主网关192.168.2.1需要知道如何访问10.0.88.0/24192.168.1.0/24网络。
    这可以通过使用具有两个网络的路由器上的 和 或使用简单的路由表来建立。iptables在 的情况下,您的网关只会从第三个接口 ( ) 的路由器(具有两个网络)接收数据包,因为地址被重写并且一切正常。 如果您不使用,则您的网关会直接从和获取数据包。如果 的网关没有到这些子网的路由,那么它将选择默认路由。 因此,这取决于您在具有两个网络的路由器上的配置。masquerading
    masquerading192.168.2.1192.168.2.???
    masquerading192.168.2.1192.168.1.0/2410.0.88.0/24192.168.2.1

  2. 在您的 Ubuntu 服务器上,表default via 10.0.88.1 dev eno4中的条目mng应该足够了。然后您需要告诉mng从子网接收的流量要使用的路由规则10.0.88.0/24

    ip rule add from 10.0.88.0/24 table mng
    

    接下来,添加一条规则,将mng表格用于任何应该离开的东西eno4

    ip rule add oif eno4 table mng
    

相关内容