Can't assign a DHCP reservation because DUID keeps changing?

I’m having a bit of a problem with three Volumio instances, one on an RPI3B and two on RPI4B, all using Ethernet connectivity, and this is occurring on all three. After using them for a while, I now need to assign them a static IP, and of course being the sort of person who was bitten by static IPs in the past, I went to set up a DHCP reservation. Volumio hands my DHCP server a what the /dev page calls a Device Unique Identification Code, which is a bit annoying but whatever, not my first time adding one, so I add the reservation and reboot…

And then something interesting happens. It does not get the reservation, instead Volumio hands off a new never before seen DUID to my DHCP server and goes merrily off handing it a new address. What’s even weirder, the page at http:///dev shows the original DUID, and that list ID doesn’t change through multiple restarts despite it no longer matching what it’s sending the DHCP server.

Anybody have any idea what the heck is going on, and how I can keep Volumio from floating its DUIC, or even just sending its MAC instead?

Can you kindly provide:

  • Volumio build number

From your IP addressing device authority:

  • Device model
  • DHCPD version
  • DNS version
  • IPv4 or IPv6

When connecting to your RPi with ssh client - in the /etc/dhcpcd.conf do you see clientid or duid active?
Should you disable in /etc/dhcpcd.conf persistent mode does the behaviour change?

  • Volumio 3.616
  • DHCP is on Windows Server 2019, IPv4 only, AD integrated.
  • Persistent mode isn’t enabled.
  • dhcpcd.conf is straight out of the box unmodified
hostname
duid
option rapid_commit
option domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes
option ntp_servers
require dhcp_server_identifier
nohook lookup-hostname

This seems to be changed from the shipped config RFC2131.

duid - Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361.
clientid - Use the hardware address of the interface for the Client ID.

Since you have duid instead of clientid it explains the enforced incomplete RFC4361 behaviour.

Update your /etc/dhcpcd.conf as follows:

hostname
clientid
option rapid_commit
option domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes
option interface_mtu
option ntp_servers
require dhcp_server_identifier
slaac hwaddr # Generate SLAAC address using the Hardware Address of the IPv6 interface if in use

Please update this thread with your test result.