当我尝试从虚拟机 ping 8.8.8.8 时出现此错误:
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 172.30.8.135: icmp_seq=1 Redirect Host(New nexthop: 172.30.8.254)
From 172.30.8.135: icmp_seq=2 Redirect Host(New nexthop: 172.30.8.254)
当我尝试 wget 时http://www.google.com我失败了:连接超时。
这是 route -n 的输出:
Destination Gateway Genmask Flags Metric Ref Use Iface
172.30.8.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 172.30.8.135 0.0.0.0 UG 0 100 0 eth0
我的网络如下所示:我创建了 br0 作为 eth0 上的桥接器来运行此 VM。主机的 IP 为 172.30.8.135。
主机通过 eth0 访问互联网,这是主机内部路由的输出:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.30.8.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
0.0.0.0 172.30.8.254 0.0.0.0 UG 100 0 0 br0
提前感谢有关此事的任何线索!
答案1
eth0 需要处于混杂模式才能将流量传递到网桥
我的设置是 promisc 中的物理 eth0,没有 ip 地址,br0 带有 dhcp ip,并使用桥接器作为硬件机器的“接口”,并从 dhcp 路由到网关,然后在桥接器上添加一个 tap 接口,并将其用作虚拟化产品中的“桥接”接口。有帮助吗?
使用 Tap 接口和可达性设置虚拟化的教程:http://www.blindhog.net/linux-bridging-for-gns3-lan-communications/
答案2
就我而言,路由器上的 iptables 有帮助:
iptables -A POSTROUTING --table nat ! -o tap0 -j MASQUERADE