背景:服务器编号为 100、101、102 和 103。NIC 编号为 20、30、40 和 50。例如,第二台服务器的第三个 NIC 的地址为192.168.40.101/24
。第一台路由器的每个端口的地址为 254,用于支持四个网络中的每一个,再加上第二个路由器的上游地址。服务器运行 Ubuntu 18.04 并使用 NetworkManager。
第一个路由器是 8 端口 Ubiquiti 型号。第二个是可访问互联网的有线调制解调器。第二个路由器的地址为192.168.0.1/24
。由于第一个路由器物理上连接了所有 5 个网络(192.168.0.0
、192,168.20.0
、192.168.30.0
、192.168.40.0
和192.168.50.0
),因此第一个路由器上的路由表相当简单,有 5 个直接连接的条目和一个用于0.0.0.0
下一跳192.168.0.1
(第二个路由器)的静态路由。
该/etc/netplan/01-netcfg.yaml
文件是根据互联网上的 Netplan 示例中的“配置源路由”仿照的。DHCP4=NO。
问题:我可以从服务器 100 ping 第一个路由器,但不能 ping 第二个路由器。我可以从第一个路由器 ping 第二个路由器。尝试一下,我可以从 ping 中得到“网络不可达”或无响应(使用 YAML 文件中的 gateway4: 规范)。注意:根据指导,我只定义了一个网关。对于网关定义为192.168.20.254
foreth0
并且 ping 挂起的情况,我认为返回数据包找不到返回的路径。
我错过了什么?我以为基于多个 NIC 的路由表和路由策略可以解决这个多 NIC 问题,但事实并非如此。
答案1
毕竟这是件相对简单的事情。与社区分享,希望对其他人有帮助。
第二个路由器是我的互联网提供商提供的电缆调制解调器路由器。它在 WAN 端有一个私有 IP 地址,并在 LAN 端将所有流量 NAT 到 192.168.0 网络。据我所知,它无法了解其他网络。我可以尝试使用端口转发,也许可以让它工作,但我决定不这样做。解决我的问题的方法是将服务器上的 192.168.10 网络替换为 192.168.0,这样它们就是电缆调制解调器已知的一个网络的参与者。这不是我想要的,但最终的解决方案是使用不同的电缆调制解调器以更高的月费从我的服务提供商那里获得更多的私有 IP。我会及时到达那里,但就目前而言,我实施的解决方案是可行的。
下图所示: 网络图