我正在尝试设置一个包含 3 个虚拟 debian jessie 机器的简单系统:第一台连接到第二台,第二台连接到第三台。我希望第一台能够 ping 第三台。
为了实现这一点,我设置了静态 IP 地址(通过 /etc/network/interfaces),如下所示:
#FIRST:
eth0 inet static address 172.28.11.2 netmask 255.255.255.0
#SECOND:
eth0 inet static address 172.28.11.1 netmask 255.255.255.0
eth1 inet static address 172.28.18.2 netmask 255.255.255.0
#THIRD:
eth0 inet static address 172.28.18.1 netmask 255.255.255.0
另外,我在所有这些机器上都启用了 ipv4_forward 选项:
net.ipv4.ip_forward=1 # /etc/sysctl.conf, all machines
并检查它是否有效(通过调用 cat /proc/...../ip_forward 并确保输出中有1
)
第一个可以 ping 第二个 (已检查,有效)。第二个可以 ping 第三个 (已检查,有效)。
现在,我正在尝试设置简单的路由表:我在第一个节点上添加此路由:
route add -net 172.28.18.0 netmask 255.255.255.0 dev eth0 gw 172.28.11.1
之后我可以 ping 172.28.11.2(其他网络掩码中的第二个节点),但仍然无法到达 172.28.11.1(第三个节点)。
如果我进行跟踪路由,我会看到是路由中的一个172.28.11.1
跳跃(因此它尝试连接到那里)但没有运气。
我错过了什么?
PS 我的配置:Windows 10 作为主机,VMware Player 作为虚拟化,Debian 8 作为所有客户机
答案1
由于您没有提到您在第三个系统上添加了路由,我猜问题是第三个系统不知道如何将返回数据包路由到 172.28.11.0/24。因此您需要在那里添加路由。
请注意,该route
命令在 Linux 中已弃用很长时间。您应该熟悉该ip
命令,它非常强大,您可以使用它执行各种有趣的路由技巧。
您可以按如下方式在第三个系统上添加所需的路由:
ip route add 172.28.11.0/24 via 172.28.18.2