QEMU虚拟networkingNAT

我正在尝试按照此处所述设置虚拟networking。 这些是我的步骤:

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 

最后,在vm里面,

 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客户机。

但是,我不能在另一个guest虚拟机中ping一个guest,也不能在主机之外(例如10.42.42.1或8.8.8.8)ping任何其他的IP。

我应该如何设置?

有两个问题:

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