![QEMU 虚拟网络 NAT](https://linux22.com/image/571462/QEMU%20%E8%99%9A%E6%8B%9F%E7%BD%91%E7%BB%9C%20NAT.png)
我正在尝试按照说明设置虚拟网络这里。这些是我的步骤:
ifup eth0 # uses DHCP
brctl addbr br0
ifconfig br0 up 192.168.0.1
kvm ... -device e1000,netdev=tap0 -netdev type=tap,id=tap0,sccript=/etc/qemu-ifup
qemu-ifup 的作用
ifconfig tap0 0.0.0.0 promisc up
brctl addif br0 tap0
最后,在虚拟机内部,
ifconfig eth0 192.168.0.2
route add default gw 192.168.0.1
这样我就可以从客户机内部 ping 192.168.0.1 和 10.42.42.127 (主机的 IP),也可以从主机内部 ping 客户机。
但是,我无法从另一个客户机内部 ping 通一个客户机,也无法 ping 通主机外部的任何其他 IP(例如 10.42.42.1 或 8.8.8.8)。
我该如何设置呢?
答案1
有两个问题:
1) 您是否允许 br0 和 eth0 之间的转发?您可以通过以下命令进行检查:
cat /proc/sys/net/ipv4/ip_forward
如果得到“0”,则必须将其更正为“1”:
echo "1" > /proc/sys/net/ipv4/ip_forward
您可以在 /etc/sysctl.conf 中永久允许它。
2)您必须通过 iptables 进行 NAT 设置,例如:
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE