On Thu, Jun 04, 2009 at 07:26:05PM +0200, Bernie Innocenti wrote:
Hello,
in a common scenario where there aren't enough public IPv4 addresses for
all domains, I have elaborated this workaround:
- the host operates a
sixxs.net IPv6 tunnel with aiccu.
- the virbr0 interface is manually configured an IPv6 address
within a /64 subnet delegated by
sixxs.net. (I do this from
/etc/rc.local for lack of a better place)
- radvd runs on the host to autoconfigure IPv6 for the guests
on virbr0 and advertise the host as a gateway
With this setup, all machines are globally addressable from the IPv6
internet, which is still quite useful for backstage services such as a
build farm.
In order to automate this setup, libvirt should support configuring an
IPv6 address on bridged interfaces, and possibly multiple addresses for
dual stack setups. Automatically running radvd would make a nice goodie.
I'm not sure that we should automatically run radvd, because this has
potential implications for the host as a whole. It is hard to restrict
scope to just the virbr0 interface, as we do with IPv4 using NAT.
We should definitely allow multiple <ip> elements, and allow both IPv4
and IPv6 and configure interfaces accordingly. Annoyingly we used the
attribute 'netmask'. We really should have used 'prefix', since netmask
as a concept is deprecated in IPv6 world. I'd suggest we allow continued
use of netmask for IPv4 addresses, but recommend use of 'prefix' in the
future. If they give a netmask, then automatically generate a prefix
attribute, and vica-verca.
<ip address="192.168.122.1" netmask="255.255.255.0">
<dhcp>
<range start="192.168.122.2" end="192.168.122.254" />
</dhcp>
</ip>
<ip address="2001:200:0:8002:203:47ff:fea5:3083"
prefix="64'/>
In theory we should also allow <dhcp> for IPv6, but I'm not sure that the
dnsmasq daemon supports offering of DHCPv6 addresses.
Todo this properly we'll need to
- Extend the parser to allow multiple addresses
- Change the string -> address code to use getaddrinfo, not inet_aton
- Change interface bring up code to add multiple addresses IPv4 & 6
- Add support for ip6tables
- Add rules for ip6tables as appropriate for the <forward/> rule
Daniel
--
|: Red Hat, Engineering, London -o-
http://people.redhat.com/berrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org -o-
http://ovirt.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|