为什么两个虚拟机无法通过第三个虚拟机互相 ping 通?

为什么两个虚拟机无法通过第三个虚拟机互相 ping 通?

我正在创建一个由三个虚拟机组成的本地网络(所有虚拟机都是 Ubuntu 14.04,刚开箱即用)。第一个连接到第三个,第二个也连接到第三个。

就是这样:comp1 (5.9.10.10) --- (5.9.10.20) comp3 (5.9.20.20) --- (5.9.20.10) comp2

这就是我设置地址和路由的方式:

vm1:
ip link set eth0 up
ip a add 5.9.10.10/24 dev eth0

ip ro add 5.9.20.0/24 via 5.9.10.20

vm2:
ip link set eth0 up
ip a add 5.9.20.10/24 dev eth0

ip ro add 5.9.10.0/24 via 5.9.20.20

vm3:
ip link set eth0 up
ip link set eth1 up
ip a add 5.9.10.20/24 dev eth0
ip a add 5.9.20.20/24 dev eth1

计算机 1 和 3 可以互相 ping 通(从 5.9.10.10 到 5.9.10.20,再到 5.9.20.20 并返回),计算机 2 和 3 也是如此。

但是,当我尝试从计算机 2 ping 计算机 1 或从 1 台 ping 计算机 2 时,数据包会丢失。

PING 5.9.20.10 (5.9.20.10) 56(84) bytes of data.
--- 5.9.20.10 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3049ms

为什么会发生这种情况以及我做错了什么?

答案1

据我所知,你的配置是正确的,你只需要告诉路由器启用IP转发即可。从来没有用 ufw 做过,但为了测试你可以禁用防火墙。

为了IP转发你只需要在 /etc/sysctl.conf 中添加/编辑这一行

net.ipv4.ip_forward=1

UFW 详细信息https://www.cyberciti.biz/faq/how-to-configure-ufw-to-forward-port-80443-to-internal-server-hosted-on-lan/

相关内容