On 18/04/2023 09:40, Daniel Farina wrote:
Hello everyone,

I have been trying to set up an IPv6-only network for a virtual machine with route advertisements and DHCP configuration. I've had some success, but I have a question.

I have a dnsmasq.conf that looks like this, to delegate a /80 chunk of a /64 network to a virtual machine:

interface=tapvm4qyj3a
enable-ra
dhcp-authoritative
leasefile-ro
ra-param=tapvm4qyj3a,mtu:1280,high,60,1200
dhcp-range=2a01:4f9:2b:35a:7df2::2,2a01:4f9:2b:35a:7df2::2,80

If I have an address configuration like this on the host outside the virtual machine, it works well:

3: tapvm4qyj3a: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
     link/ether 82:d6:93:69:72:82 brd ff:ff:ff:ff:ff:ff
     inet6 2a01:4f9:2b:35a:7df2::1/80 scope global
        valid_lft forever preferred_lft forever
     inet6 fe80::80d6:93ff:fe69:7282/64 scope link
        valid_lft forever preferred_lft forever

The thing I find dissatisfying about this is that the VM is not able to listen on 2a01:4f9:2b:35a:7df2::1 anymore once I've done this, is my understanding: the host will process the traffic, right? If I remove the address on the guest's network, dnsmasq warns me repeatedly, and does not work:

ip addr del 2a01:4f9:2b:35a:7df2::1/80  dev tapvm4qyj3a

dnsmasq-dhcp: no address range available for DHCPv6 request via tapvm4qyj3a
dnsmasq-dhcp: no address range available for DHCPv6 request via tapvm4qyj3a
dnsmasq-dhcp: no address range available for DHCPv6 request via tapvm4qyj3a
...

My question is partially that of norms: is it normal to squat on a bit of the guest's address space like this? Is there a preferred way that avoids this, or does something different still? I know that a number of non-SLAAC configurations tend to sit on ::2 as the first unicast address, is this related to the reason why?

I will be expanding my use of dnsmasq to DNS, so this may figure in the answer.


Interesting question.

The short answer is no. Dnsmasq relies on matching the addresses in a dhcp-range with the address on an interface to map from an arrival interface to a suitable address range. This design started when the DHCP support only handled IPv4, and DHCPv4 requires that the server has a globally routable address, so there was no conflict. The same system was adopted for IPv6 for consistency.

DHCPv6 uses link-local multicast, so I think you're right, a DHCPv6 server can issue leases for addresses on a subnet without having an address on that subnet. Dnsmasq can't do it because it has no way to associate the subnet with the address on which the request arrived, because of the configuration design inherited from the DHCPv4 server.

I'm not sure there's much incentive to change this: it's not as if addresses are scarce in the IPv6 world.


Cheers,


Simon.


Thank you for considering my question.

_______________________________________________
Dnsmasq-discuss mailing list
Dnsmasq-discuss@lists.thekelleys.org.uk
https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss

_______________________________________________
Dnsmasq-discuss mailing list
Dnsmasq-discuss@lists.thekelleys.org.uk
https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss

Reply via email to