** Description changed: ===== DESCRIPTION ===== dhcpcd does not provide the netmask the the initramfs dhcpcd hook. Therefore, the initramfs dhcpcd hook hardcodes the IPv6 prefix length to 128 when generating /run/net6-*.conf. $ grep "IPV6NETMASK=" /usr/share/initramfs-tools/dhcpcd-hooks/70-net-conf IPV6NETMASK='128' This value is currently hardcoded because dhcpcd does not provide an IPv6 prefix length in the initramfs hook environment. As a result, the hook defaults to 128, and downstream initramfs-tools logic consumes this value. This 128 value is written into the initramfs-generated network configuration for IPv6 addresses, regardless of the prefix length provided by upstream configuration sources. In environments where a different prefix length is expected (e.g. /64), this can lead to a mismatch between the configured IPv6 address and the effective network prefix. For example, systemd-networkd logs show: May 26 15:25:47 kajgm-3-00435091 systemd-networkd[5020]: ens300np0: Ignoring DHCPv6 address xxxx:xxxx:xxxx:xxxx:x:xxxx:xxxx:xxxx/128 (valid for 1d 59min 59s, preferred for 23h 59min 59s) which conflicts with xxxx:xxxx:xxxx:xxxx:x:xxxx:xxxx:xxxx/64. In this scenario, if a prefix conflict occurs, SSH will be lost once the /64 lease expires and SSH access to the machine will not come back until dhcp runs again and applies the /128 address. It is also possible that the issue is not solely the hardcoded value, but a broader problem in how IPv6 prefix information is propagated through the initramfs networking stack. ===== EXPECTED BEHAVIOR ===== dhcpcd needs to expose the netmask value to the initramfs dhcpcd hook. Then initramfs-tools to use that netmask. No prefix length conflicts should occur between initramfs-generated configuration and systemd-networkd. ===== ACTUAL BEHAVIOR ===== The initramfs dhcpcd hook hardcodes IPv6 prefix length to /128 (because dhcpcd does not provide the netmask), which results in conflicting network configuration and causes systemd-networkd to ignore DHCPv6-provided addresses. ===== ENVIRONMENT INFORMATION ===== Reproduced on Oracle Cloud Instances on Noble (24.04) and Questing (25.10) ===== ADDITIONAL INFORMATION ===== As an experiment, I hardcoded IPV6NETMASK='64' to see what would happen. It was correctly written to /run/net6-ens300np0.conf as seen below: sudo cat /run/net6-ens300np0.conf DEVICE6='ens300np0' IPV6PROTO='dhcp6' IPV6ADDR='xxxx:xxxx:xxxx:xxxx:x:xxxx:xxxx:xxxx' IPV6NETMASK='64' IPV6DNS0='fd00:c1::a9fe:a9fe' IPV6DOMAINSEARCH='kajgmipv6only.oraclevcn.com.' However, I still saw the "Ignoring DHCPv6 address xxxx:xxxx:xxxx:xxxx:x:xxxx:xxxx:xxxx/128 [...] which conflicts with xxxx:xxxx:xxxx:xxxx:x:xxxx:xxxx:xxxx/64" error. This indicates /128 is also coming from somewhere else. ===== ADDITIONAL LINKS ===== - Related upstream discussion: https://github.com/canonical/cloud- - init/issues/6867 + Related upstream discussions: https://github.com/canonical/cloud- + init/issues/6867, + https://github.com/NetworkConfiguration/dhcpcd/issues/616
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2154301 Title: dhcpcd initramfs hook hardcodes IPV6NETMASK to 128 for IPv6 To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/dhcpcd/+bug/2154301/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
