Inconsistent interface configuration behavior between DHCPv4 and DHCPv6
If I have an interface configuration as shown:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:c0:5f:3d brd ff:ff:ff:ff:ff:ff
altname enp2s0
inet 192.168.115.128/24 brd 192.168.115.255 scope global dynamic noprefixroute ens160
valid_lft 1405sec preferred_lft 1405sec
inet6 fe80::20c:29ff:fec0:5f3d/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens161: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:c0:5f:51 brd ff:ff:ff:ff:ff:ff
altname enp3s0
4: ens256: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:c0:5f:47 brd ff:ff:ff:ff:ff:ff
altname enp26s0
inet 10.1.2.2/24 brd 10.1.2.255 scope global ens256
valid_lft forever preferred_lft forever
inet6 2001:db8::2/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fec0:5f47/64 scope link
valid_lft forever preferred_lft forever
and use this simple DHCPv6 configuration:
{
"Dhcp6": {
"interfaces-config": {
"interfaces": [ "*" ]
}
}
}
kea-dhcp6
does not listen on all IP addresses on all (non-loopback) interfaces as shown by ss -ln | grep 547 | grep udp
udp UNCONN 0 0 [fe80::20c:29ff:fec0:5f3d]%ens160:547 [::]:*
udp UNCONN 0 0 [ff02::1:2]%ens160:547 [::]:*
udp UNCONN 0 0 [fe80::20c:29ff:fec0:5f47]%ens256:547 [::]:*
udp UNCONN 0 0 [ff02::1:2]%ens256:547 [::]:*
I must extend the DHCPv6 configuration to pick up the globally routable (not really but ...) address: 2001:db8::2/64
:
{
"Dhcp6": {
"interfaces-config": {
"interfaces": [ "*", "ens256/2001:db8::2" ]
}
}
}
It is now listening on all of the appropriate IP adddreses as shown by output from ss -ln | grep 547 | grep udp
udp UNCONN 0 0 [fe80::20c:29ff:fec0:5f3d]%ens160:547 [::]:*
udp UNCONN 0 0 [ff02::1:2]%ens160:547 [::]:*
udp UNCONN 0 0 [2001:db8::2]:547 [::]:*
udp UNCONN 0 0 [fe80::20c:29ff:fec0:5f47]%ens256:547 [::]:*
udp UNCONN 0 0 [ff02::1:2]%ens256:547 [::]:*
Perhaps this one example from the ARM "9.2.4. Interface Configuration" section is meant to describe the behavior?
Note that Kea requires a link-local address (which does not exist on all systems) or a specified unicast address, as in:
"Dhcp6": {
"interfaces-config": {
"interfaces": [ "enp0s2/2001:db8::1234:abcd" ]
},
...
}
If so, I think that could use some clarification. See this mailing list message for my inspiration: https://lists.isc.org/mailman/htdig/kea-users/2024-April/004776.html