** 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

Reply via email to