我正在尝试使用 3 个虚拟 debian jessie 机器设置简单的 enogh 系统:第一个连接到第二个,第二个连接到第三个。我希望第一个能够 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(第三个节点)。
如果我执行 traceroute,我会看到路由中有一个跃172.28.11.1
点(因此它尝试连接那里)但没有运气。
我错过了什么?
PS 我的配置:windows 10 作为主机,vmware player 作为虚拟化,debian 8 作为所有来宾
由于您没有提到您在第三个系统上添加了一条路由,我猜问题是第三个系统不知道如何将返回数据包路由到 172.28.11.0/24。所以你需要在那里添加一条路线。
请注意,该
route
命令在 linux 中已被弃用很长时间了。你应该熟悉这个ip
命令,它非常强大,你可以用它做各种有趣的路由技巧。因此,您可以在第三个系统上添加所需的路由: