我有一个带两个网络的路由器
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
有两点需要考虑,只要我理解正确就行。
您的主网关
192.168.2.1
需要知道如何访问10.0.88.0/24
和192.168.1.0/24
网络。
这可以通过使用具有两个网络的路由器上的 和 或使用简单的路由表来建立。iptables
在 的情况下,您的网关只会从第三个接口 ( ) 的路由器(具有两个网络)接收数据包,因为地址被重写并且一切正常。 如果您不使用,则您的网关会直接从和获取数据包。如果 的网关没有到这些子网的路由,那么它将选择默认路由。 因此,这取决于您在具有两个网络的路由器上的配置。masquerading
masquerading
192.168.2.1
192.168.2.???
masquerading
192.168.2.1
192.168.1.0/24
10.0.88.0/24
192.168.2.1
在您的 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