[Dnsmasq-discuss] multiple dhcp6 servers
Gene Czarcinski
gene at czarc.net
Fri Oct 12 13:56:40 BST 2012
On 10/12/2012 06:44 AM, Simon Kelley wrote:
>> >OK, it is what is. Is there some practical way to "tell" dnsmasq an
>> >association for a hostname and an IPv6 address? I cannot see something
>> >like that used to update an authoritative name server but it would be
>> >useful to have some kind of an update capability with dnsmasq.
> If I've understood your question right, that's what dhcp-host does.
I guess I am not making myself clear.
First of all, my problem is running qemu/kvm/libvirt virtual
networks/guests and will not likely occur in a real/hardware-only
situation. It is also possible that my problem is unique but then, it
may or may not be ... I might be just out front and getting some arrows
in my back.
With the cost and availability of today's hardware, it is possible to
create large networks (multiple networks) of virtual guests ... my
virtualization host runs Fedora 17 on hardware consisting of an 8-core
AMD processor, 16GB memory, an SDD for root and home, and a couple of
large SATA-III disks for data storage [those virtual systems run faster
than real systems did a few years ago].
So, I wanted to run some IPv6 virtual networks (currently, I have 16
virtual networks defined). Now, if dns was invented because those
little IPv4 numbers were hard to remember, then trying to remember IPv6
addresses is impossible. One of the things I want to do is access some
of those guests from the virtualization host and (sometimes) from other
hosts. Host names are much easier to remember and, using dnsmasq, it
all works for IPv4. Well, I wanted the same thing for IPv6.
One of the things libvirt does is to start a dnsmasq process for every
virtual network -- you have 10 virtual networks started, you have 10
separate dnsmasqs started. If you add an IPv6 address to your virtual
network definition, then libvirt adds a --listen-address=<ip6-address>
to the dnsmasq command line and also starts radvd for that network (yes,
you now have lots of radvd processes running too).
I wanted libvirt to support dhcp6 for virtual networks. Before
investing a lot of time into adding this support to libvirt, I thought I
would run a little test to see how things worked. I created a little
patch to modify the radvd parameters to use "AdvManagedFlag on" and a
test-only kludge to add --dhcp-range <ip6-address-range> to the dnsmasq
command line. Installed the modified libvirt and started the first
virtual IPv6 network ... looks good. Started the second IPv6 network
... bang! The dnsmasq did not start because it could not get exclusive
use of server port 547. [BTW, the first dnsmasq did not work because of
the listen-address=/interface= which I covered in another message]
Now if the networks were pretty static then it is possible to have one,
"big" dnsmasq service all of the virtual networks. I do not know about
others but I am bringing networks up and down. defining new networks,
etc. in my test/research environment (like I said, maybe my situation is
unique). A single dnsmasq is not practical and would be a significant
change to libvirt.
As things currently exist, I am using SLAAC IPv6 addresses and radvd for
the default route. This works in that, via IPv6, I can access the
virtualization host as well as other systems on my local network. But,
I cannot go the other way because I have no idea what the IPv6 address
are for individual virtual systems. Yes, I can use manual configuration
for IPv6 and add entries in the /etc/hosts file for each of those
systems but this does not scale.
Note -- On second and third level virtual networks, I run my own virtual
services with radvd and dnsmasq and that works fine.
So, as i see it, here are the alternatives:
1. Get multiple copies of dnsmasq to run on a single hardware system so
that I can use dhcp6.
2. Have some way to update the dnsmasq cache with the hostname and
related IPv6 address.
Any suggestions/comments?
Gene
More information about the Dnsmasq-discuss
mailing list