Hey,
So, the latest patches are at:
http://www.gnome.org/~markmc/code/libvirt-networking/
I'm pretty happy with how things are at the moment. I've more or less
cleared out my todo list on this[1], but I'm left with a big fat
elephant sitting in the corner looking quite guilty ... iptables :-)
Basically, once you create a virtual network, you need the following
iptables rules:
- Allow bridging across the vnet's bridge - e.g. just allow all
bridging:
$> iptables -D FORWARD 1
$> iptables -A FORWARD -m physdev ! --physdev-is-bridged
-j REJECT --reject-with icmp-host-prohibited
- Allow DHCP and DNS requests from guests:
$> iptables -I INPUT -p tcp -m tcp --dport 53 -j ACCEPT
$> iptables -I INPUT -p udp -m udp --dport 53 -j ACCEPT
$> iptables -I INPUT -p udp -m udp --dport 67 -j ACCEPT
- Enable forwarding and SNAT:
$> echo 1 > /proc/sys/net/ipv4/ip_forward
$> iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
- And any DNAT rules to e.g. re-direct port 8080 on the host to port
80 on a specific guest.
Figuring out what the rules should be and adding them isn't a
problem ... the problem is how to interact with the underlying
distributions iptables infrastructure.
e.g. in Fedora, if you just go ahead and add these rules, they'd be
wiped out by "service iptables restart", or overwritten by the firewall
config tool or saved and applied at boot if you used "service iptables
save". Bit of a mess :/
Cheers,
Mark.
[1] - Well, networks for unprivileged users is another big todo item