QEMU 虚拟网络 NAT

QEMU 虚拟网络 NAT

我正在尝试按照说明设置虚拟网络这里。这些是我的步骤:

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

相关内容