Since this change
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=906894
ifupdown had been adding the -i parameter to dhclient.
-i Use a DUID with DHCPv4 clients.
But here is a fix: this change
https://salsa.debian.org/debian/ifupdown/-/commit/40eb51499fe71e4fb20c27beea23045c62e9ba07
went to ifupdown 0.8.36 and makes the -i option optional.
This is kind of documented in the (new enough) manpage for /etc/network/interfaces:
man interfaces / INET ADDRESS FAMILY / "The dhcp Method" / Options / client
client client_id
Client identifier (dhcpcd), or "no" (dhclient)
So, for my case the practical solution was to add "client no" to my /etc/network/interfaces, like
.....
iface eno1 inet dhcp
client no
which brings the old behaviour, which is: ifup calls dhclient without "-i", as seen here:
https://salsa.debian.org/debian/ifupdown/-/blob/40eb51499fe71e4fb20c27beea23045c62e9ba07/inet.defn#L101
For the record, I look at the command line parameters for confirmation: ps aux | grep dhclient
(By the way, to see the logs one can go like: sudo journalctl | grep -i dhcp | less
)
This way it can talk to a DHCP server that is scared of RFC 4361.
This comes with a bit of fine print:
for Debian 10, I had to backport the ifupdown package.
I have followed https://unix.stackexchange.com/a/112160/203082
to obtain locally a ifupdown_0.8.36~bpo10+1_amd64.deb
package.
After installation, I wasn't able to cleanly restart my networking (probably due to some systemd-related complexities).
So I had to reboot, unfortunately. Then it was able to obtain the IP address as expected.