dhcpcd icon indicating copy to clipboard operation
dhcpcd copied to clipboard

dhcpcd not getting ACK on REQUEST after OFFER is reseived

Open e-pirate opened this issue 7 months ago • 67 comments

Bug report is fallowing this post on Gentoo forum.

Problem description: dhcpcd is not getting a lease while dhclient work perfectly in all tested conditions.

Testcase: ethernet interface under test is directly connected to the LAN port of the PON-terminal (D-Link DPN-101 in that particular case) configured as a bridge. No other DHCP-servers except that one provided by the ISP on the net, no virtual machines or whatever.

This is what I'm getting from dhcpcd in debug mode:

dhcpcd --debug --ipv4only  --noipv4ll eth0
dhcpcd-10.2.2 starting
spawned manager process on PID 5531
DUID 00:01:00:01:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
eth0: executing: /lib/dhcpcd/dhcpcd-run-hooks PREINIT
eth0: executing: /lib/dhcpcd/dhcpcd-run-hooks CARRIER
eth0: IAID XX:XX:XX:XX
eth0: delaying IPv4 for 0.3 seconds
eth0: reading lease: /var/lib/dhcpcd/eth0.lease
eth0: soliciting a DHCP lease
eth0: sending DISCOVER (xid 0x84a14922), next in 4.0 seconds
eth0: offered 100.67.3.53 from 100.67.0.1
eth0: sending REQUEST (xid 0x84a14922), next in 3.2 seconds
eth0: sending REQUEST (xid 0x84a14922), next in 7.0 seconds
eth0: sending REQUEST (xid 0x84a14922), next in 16.8 seconds
eth0: sending REQUEST (xid 0x84a14922), next in 31.2 seconds
timed out
eth0: executing: /lib/dhcpcd/dhcpcd-run-hooks STOPPED
dhcpcd exited 

And this is what tcpdump shows:

# tcpdump -i eth0 -nnn port 67 or port 68
dropped privs to pcap
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
20:35:02.750746 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from xx:xx:xx:xx:xx:xx, length 351
20:35:02.774793 IP 100.67.0.1.67 > 255.255.255.255.68: BOOTP/DHCP, Reply, length 290
20:35:02.774913 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from xx:xx:xx:xx:xx:xx, length 361
20:35:06.788579 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from xx:xx:xx:xx:xx:xx, length 361
20:35:14.896239 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from xx:xx:xx:xx:xx:xx, length 361
20:35:29.927574 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from xx:xx:xx:xx:xx:xx, length 361 

So, after sending initial DISCOVER dhcpcd receives a valid OFFER from the ISP's DHCP-server, looks like dhcpcd is satisfied by this OFFER and then sends several REQUESTs to get an offered lease, but receives no ACK and finally gave up with timeout. tcpdump conforms that no ACK received while valid OFFER is present. It may look like the DHCP-server is not sending ACKs, but this is not true. I've seen at least two different devices (one is dhclient run after failed dhcpcd in equal condition and another is Android-based special palm unit) that having no problem in both getting a new lease after DISCOVER and prolongation of existing lease. I've switched this interface to dhclient and having no problem with DHCP since that.

Trying to troubleshoot this, I've changed duid to clientid, disabled hostname, disabled require dhcp_server_identifier and whitelisted the ISPs DHCP server IP - nothing changed.

From that point of view, it looks like that dhcpcd is forming REQUEST in the way that DHCP server is ignoring it and not sending any ACKs (since we also see nothing in tcpdump output) while two other clients form REQUESTs that make DHCP-server respond with an ACKs.

This may be (most likely it is) a custom DHCP server developed by the ISP (a big national company having millions and millions of cellular, fixed and also commercial customers including trunks), but this does not change the fact, that two other clients work and also people on related forum report wifi routers having no problems receiving IP-addresses from that DHCP-server with this PON-terminal.

e-pirate avatar Jun 15 '25 07:06 e-pirate

# tcpdump -i eth0 -nnn port 67 or port 68
dropped privs to pcap
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
20:35:02.750746 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from xx:xx:xx:xx:xx:xx, length 351
20:35:02.774793 IP 100.67.0.1.67 > 255.255.255.255.68: BOOTP/DHCP, Reply, length 290
20:35:02.774913 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from xx:xx:xx:xx:xx:xx, length 361
20:35:06.788579 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from xx:xx:xx:xx:xx:xx, length 361
20:35:14.896239 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from xx:xx:xx:xx:xx:xx, length 361
20:35:29.927574 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from xx:xx:xx:xx:xx:xx, length 361 

Trying to troubleshoot this, I've changed duid to clientid, disabled hostname, disabled require dhcp_server_identifier and whitelisted the ISPs DHCP server IP - nothing changed.

From that point of view, it looks like that dhcpcd is forming REQUEST in the way that DHCP server is ignoring it and not sending any ACKs (since we also see nothing in tcpdump output) while two other clients form REQUESTs that make DHCP-server respond with an ACKs.

This may be (most likely it is) a custom DHCP server developed by the ISP (a big national company having millions and millions of cellular, fixed and also commercial customers including trunks), but this does not change the fact, that two other clients work and also people on related forum report wifi routers having no problems receiving IP-addresses from that DHCP-server with this PON-terminal.

So we need to make the dhcpcd REQUEST look like whatever the others are doing. It's likely just one option that's causing this. Ideally a full tcpdump showing which DHCP options are being sent and requested. You could try commenting out both clientid and duid, along with option rapid_commit. Or put it another way, just have the persistent keyword uncommented (optionally slaac as well as it's not related) and see how that works.

Roy

rsmarples avatar Jun 15 '25 10:06 rsmarples

You could try commenting out both clientid and duid, along with option rapid_commit. Or put it another way, just have the persistent keyword uncommented (optionally slaac as well as it's not related) and see how that works.

Non of this helped. But I've collected traffic dumps for both successful communication of dhclient and failed of dhcpcd. Since this dumps has private data I don't want to go on public, I've sent it to e-mail stated in your account. The dhcpcd used is of on old version, but 10.2.2-r1 I have on my actual Gentoo behaves exactly the same.

P.S. Some guy from ISP-related forum confirmed that in his setup dhcpcd also fails to get ACK while other clients have no problem. He suggested that option order may be the key. I believe we have client-server incompatibility here. Hope dump of successful exchange of dhclient will help to see the difference.

e-pirate avatar Jun 15 '25 20:06 e-pirate

RFC 7844

3.1. Avoiding Fingerprinting The client intending to protect its privacy SHOULD randomize the ordering of options before sending any DHCPv4 message. If this random ordering cannot be implemented, the client MAY order the options by option code number (lowest to highest).

Option ordering should never be in any fixed order.

rsmarples avatar Jun 15 '25 21:06 rsmarples

Option ordering should never be in any fixed order.

That is true, but unfortunately change nothing. Very little chance that ISP will update its server only because problems with some client. Hope this is not the case.

e-pirate avatar Jun 15 '25 21:06 e-pirate

I should have put these in a feature branch, but oh well.

Commits b1c17c30adf5737e9319b42cd59322fec5ef7877, 1d88866d5015691c3f294d4d628be304eb755893 and 226a68edb9ac8b8178378e069eee82f6366ee329 change the default's so that dhcpcd can match dhclient a little better with an edited config.

Option ordering should never be in any fixed order.

That is true, but unfortunately change nothing. Very little chance that ISP will update its server only because problems with some client. Hope this is not the case.

And if another ISP has a different ordering requirement, what then?

rsmarples avatar Jun 16 '25 23:06 rsmarples

And if another ISP has a different ordering requirement, what then?

It was just a guess that order may make sense from a random guy. Personally, I don't think it is a trouble because to many other clients work while dhcpcd do not. The probability that several different clients send options in same order that match ISP DHCP-server requirement is very low. It more likely that your suggested commits will solve the problem. Can you merge them to some branch and provide config options to enable all needed and I test with this ISP?

e-pirate avatar Jun 17 '25 10:06 e-pirate

Can you merge them to some branch and provide config options to enable all needed and I test with this ISP?

They have all been merged to master. They just provide one extra config option static_routes which now sits alongside classless_static_routes in dhcpcd,conf So basically you don't need to change your config.

If it fails, please provide another capture which should show the only things that are different now is the ordering of the options and the ordering of the options in the Option Request Option.

rsmarples avatar Jun 17 '25 17:06 rsmarples

So, I should build dhcpcd from master and then enable static_routes in config? Any other options that should be enabled/disabled?

e-pirate avatar Jun 18 '25 10:06 e-pirate

Yes, build from master. Don't enable static_routes in config though as the idea is not to request that option so we more match what dhclient is sending.

The last config you used should be fine.

rsmarples avatar Jun 18 '25 10:06 rsmarples

Version built from master didn't work either. Dump and config sent to Roy.

e-pirate avatar Jun 18 '25 19:06 e-pirate

It's really close now :)

To save time, run this config and nothing else:

persistent
vendorclassid
nooption forcerenew_nonce_capable, dhcp_max_message_size
option domain_name_servers, domain_name
option host_name
option ntp_servers
option time_offset

You should now be sending exactly the same options and requested options as your dhclient and the only difference left should be the ordering. Let me know, and send another dhcpcd tcpdump if it still fails.

rsmarples avatar Jun 18 '25 20:06 rsmarples

Some guy from ISP-related forum ...

would be me. I apologize for taking long time to find opportunity to submit my findings.

He suggested that option order may be the key.

There is a miscommunication.

After initial compare between dhclient and dhcpcd dumps, matching the option set in DHCPREQUEST was my second thought (after all combinations of ClientID & DUID), so I did. As a result the only meaningful difference in a packet body was option order. Honestly not being familiar with related RFCs but using a common sense, I concluded that order should not matter and gave up, since I could not spot other differences in Wireshark.

Even packet headers, padding is the same, checksums verified. Only exceptions:

  • DCSP field: dhclient=16, dhcpcd=0, server=48
  • TTL field is 128 in case of dhclient compared to dhcpcd, which produced TTL of 64 (according to net.ipv4.ip_default_ttl ?) and probably plenty anyway.
  • ip.id from dhclient was 0x0, while value from dhcpcd was non-zero
Spoiler: dhcpcd log & dhcpdump
root@deb:~# dhcpcd -dL4 -C resolv.conf -h "deb" -O 145,61,57,33,51,54,58,59 -o 2,42,44,47 enp6s19
dhcpcd-9.4.1 starting
chrooting as dhcpcd to /usr/lib/dhcpcd
sandbox: seccomp
spawned manager process on PID 927
spawned privileged proxy on PID 928
spawned controller proxy on PID 929
DUID 00:04:5b:92:3f:d4:24:6d:46:92:b2:47:63:f5:f1:86:fa:7f
enp6s19: executing: /usr/lib/dhcpcd/dhcpcd-run-hooks PREINIT
enp6s19: executing: /usr/lib/dhcpcd/dhcpcd-run-hooks CARRIER
enp6s19: delaying IPv4 for 0.3 seconds
enp6s19: using hwaddr 00:1b:21:a0:b1:c2
enp6s19: reading lease: /var/lib/dhcpcd/enp6s19.lease
enp6s19: soliciting a DHCP lease
enp6s19: spawned BPF BOOTP on PID 932
enp6s19: sending DISCOVER (xid 0x84159030), next in 3.3 seconds
enp6s19: offered 95.165.xxx.xxx from 95.165.0.1
enp6s19: sending REQUEST (xid 0x84159030), next in 3.7 seconds
enp6s19: sending REQUEST (xid 0x84159030), next in 8.7 seconds
enp6s19: sending REQUEST (xid 0x84159030), next in 16.8 seconds
enp6s19: sending REQUEST (xid 0x84159030), next in 31.4 seconds
timed out
enp6s19: executing: /usr/lib/dhcpcd/dhcpcd-run-hooks STOPPED
root@deb:~#
root@deb:~# clear && dhcpdump -i enp6s19
  TIME: 2025-06-15 07:45:44.677
    IP: 0.0.0.0 (0:1b:21:a0:b1:c2) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
    OP: 1 (BOOTPREQUEST)
 HTYPE: 1 (Ethernet)
  HLEN: 6
  HOPS: 0
   XID: ddae132e
  SECS: 0
 FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 00:1b:21:a0:b1:c2:00:00:00:00:00:00:00:00:00:00
 SNAME: .
 FNAME: .
OPTION:  53 (  1) DHCP message type         1 (DHCPDISCOVER)
OPTION:  55 ( 13) Parameter Request List      1 (Subnet mask)
                                            121 (Classless Static Route)
                                              2 (Time offset)
                                              3 (Routers)
                                              6 (DNS server)
                                             12 (Host name)
                                             15 (Domainname)
                                             26 (Interface MTU)
                                             28 (Broadcast address)
                                             42 (NTP servers)
                                             44 (NetBIOS name server)
                                             47 (NetBIOS scope)
                                            119 (Domain Search)

OPTION:  80 (  0) Naming Authority
OPTION:  12 (  3) Host name                 deb
---------------------------------------------------------------------------

  TIME: 2025-06-15 07:45:44.678
    IP: 95.165.0.1 (20:ab:48:bc:c8:fa) > 255.255.255.255 (0:1b:21:a0:b1:c2)
    OP: 2 (BOOTPREPLY)
 HTYPE: 1 (Ethernet)
  HLEN: 6
  HOPS: 0
   XID: ddae132e
  SECS: 0
 FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 95.165.xxx.xxx
SIADDR: 0.0.0.0
GIADDR: 95.165.0.1
CHADDR: 00:1b:21:a0:b1:c2:00:00:00:00:00:00:00:00:00:00
 SNAME: .
 FNAME: .
OPTION:  53 (  1) DHCP message type         2 (DHCPOFFER)
OPTION:   1 (  4) Subnet mask               255.255.240.0
OPTION:   3 (  4) Routers                   95.165.0.1
OPTION:   6 (  8) DNS server                62.112.113.170,62.112.106.130
OPTION:  51 (  4) IP address leasetime      300 (5m)
OPTION:  58 (  4) T1                        150 (2m30s)
OPTION:  59 (  4) T2                        262 (4m22s)
OPTION:  54 (  4) Server identifier         95.165.0.1
---------------------------------------------------------------------------

  TIME: 2025-06-15 07:45:44.678
    IP: 0.0.0.0 (0:1b:21:a0:b1:c2) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
    OP: 1 (BOOTPREQUEST)
 HTYPE: 1 (Ethernet)
  HLEN: 6
  HOPS: 0
   XID: ddae132e
  SECS: 0
 FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 00:1b:21:a0:b1:c2:00:00:00:00:00:00:00:00:00:00
 SNAME: .
 FNAME: .
OPTION:  50 (  4) Request IP address        95.165.xxx.xxx
OPTION:  53 (  1) DHCP message type         3 (DHCPREQUEST)
OPTION:  54 (  4) Server identifier         95.165.0.1
OPTION:  55 ( 13) Parameter Request List      1 (Subnet mask)
                                            121 (Classless Static Route)
                                              2 (Time offset)
                                              3 (Routers)
                                              6 (DNS server)
                                             12 (Host name)
                                             15 (Domainname)
                                             26 (Interface MTU)
                                             28 (Broadcast address)
                                             42 (NTP servers)
                                             44 (NetBIOS name server)
                                             47 (NetBIOS scope)
                                            119 (Domain Search)

OPTION:  12 (  3) Host name                 deb
---------------------------------------------------------------------------

  TIME: 2025-06-15 07:45:48.941
    IP: 0.0.0.0 (0:1b:21:a0:b1:c2) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
    OP: 1 (BOOTPREQUEST)
 HTYPE: 1 (Ethernet)
  HLEN: 6
  HOPS: 0
   XID: ddae132e
  SECS: 4
 FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 00:1b:21:a0:b1:c2:00:00:00:00:00:00:00:00:00:00
 SNAME: .
 FNAME: .
OPTION:  50 (  4) Request IP address        95.165.xxx.xxx
OPTION:  53 (  1) DHCP message type         3 (DHCPREQUEST)
OPTION:  54 (  4) Server identifier         95.165.0.1
OPTION:  55 ( 13) Parameter Request List      1 (Subnet mask)
                                            121 (Classless Static Route)
                                              2 (Time offset)
                                              3 (Routers)
                                              6 (DNS server)
                                             12 (Host name)
                                             15 (Domainname)
                                             26 (Interface MTU)
                                             28 (Broadcast address)
                                             42 (NTP servers)
                                             44 (NetBIOS name server)
                                             47 (NetBIOS scope)
                                            119 (Domain Search)

OPTION:  12 (  3) Host name                 deb
---------------------------------------------------------------------------

  TIME: 2025-06-15 07:45:57.885
    IP: 0.0.0.0 (0:1b:21:a0:b1:c2) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
    OP: 1 (BOOTPREQUEST)
 HTYPE: 1 (Ethernet)
  HLEN: 6
  HOPS: 0
   XID: ddae132e
  SECS: 13
 FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 00:1b:21:a0:b1:c2:00:00:00:00:00:00:00:00:00:00
 SNAME: .
 FNAME: .
OPTION:  50 (  4) Request IP address        95.165.xxx.xxx
OPTION:  53 (  1) DHCP message type         3 (DHCPREQUEST)
OPTION:  54 (  4) Server identifier         95.165.0.1
OPTION:  55 ( 13) Parameter Request List      1 (Subnet mask)
                                            121 (Classless Static Route)
                                              2 (Time offset)
                                              3 (Routers)
                                              6 (DNS server)
                                             12 (Host name)
                                             15 (Domainname)
                                             26 (Interface MTU)
                                             28 (Broadcast address)
                                             42 (NTP servers)
                                             44 (NetBIOS name server)
                                             47 (NetBIOS scope)
                                            119 (Domain Search)

OPTION:  12 (  3) Host name                 deb
---------------------------------------------------------------------------

  TIME: 2025-06-15 07:46:12.861
    IP: 0.0.0.0 (0:1b:21:a0:b1:c2) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
    OP: 1 (BOOTPREQUEST)
 HTYPE: 1 (Ethernet)
  HLEN: 6
  HOPS: 0
   XID: ddae132e
  SECS: 28
 FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 00:1b:21:a0:b1:c2:00:00:00:00:00:00:00:00:00:00
 SNAME: .
 FNAME: .
OPTION:  50 (  4) Request IP address        95.165.xxx.xxx
OPTION:  53 (  1) DHCP message type         3 (DHCPREQUEST)
OPTION:  54 (  4) Server identifier         95.165.0.1
OPTION:  55 ( 13) Parameter Request List      1 (Subnet mask)
                                            121 (Classless Static Route)
                                              2 (Time offset)
                                              3 (Routers)
                                              6 (DNS server)
                                             12 (Host name)
                                             15 (Domainname)
                                             26 (Interface MTU)
                                             28 (Broadcast address)
                                             42 (NTP servers)
                                             44 (NetBIOS name server)
                                             47 (NetBIOS scope)
                                            119 (Domain Search)

OPTION:  12 (  3) Host name                 deb
---------------------------------------------------------------------------
root@deb:~# 
Spoiler: dhclient log & dhcpdump
root@deb:~#  dhclient -v -4 enp6s19
Internet Systems Consortium DHCP Client 4.4.3-P1
Copyright 2004-2022 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/enp6s19/00:1b:21:a0:b1:c2
Sending on   LPF/enp6s19/00:1b:21:a0:b1:c2
Sending on   Socket/fallback
DHCPDISCOVER on enp6s19 to 255.255.255.255 port 67 interval 3
DHCPOFFER of 95.165.xxx.xxx from 95.165.0.1
DHCPREQUEST for 95.165.xxx.xxx on enp6s19 to 255.255.255.255 port 67
DHCPACK of 95.165.xxx.xxx from 95.165.0.1
bound to 95.165.xxx.xxx -- renewal in 119 seconds.
root@deb:~#
root@deb:~#  dhclient -r enp6s19
Killed old client process
root@deb:~#
root@deb:~# clear && dhcpdump -i enp6s19
  TIME: 2025-06-15 06:55:20.045
    IP: 0.0.0.0 (0:1b:21:a0:b1:c2) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
    OP: 1 (BOOTPREQUEST)
 HTYPE: 1 (Ethernet)
  HLEN: 6
  HOPS: 0
   XID: b2cd481c
  SECS: 0
 FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 00:1b:21:a0:b1:c2:00:00:00:00:00:00:00:00:00:00
 SNAME: .
 FNAME: .
OPTION:  53 (  1) DHCP message type         1 (DHCPDISCOVER)
OPTION:  12 (  3) Host name                 deb
OPTION:  55 ( 13) Parameter Request List      1 (Subnet mask)
                                             28 (Broadcast address)
                                              2 (Time offset)
                                              3 (Routers)
                                             15 (Domainname)
                                              6 (DNS server)
                                            119 (Domain Search)
                                             12 (Host name)
                                             44 (NetBIOS name server)
                                             47 (NetBIOS scope)
                                             26 (Interface MTU)
                                            121 (Classless Static Route)
                                             42 (NTP servers)

---------------------------------------------------------------------------

  TIME: 2025-06-15 06:55:20.046
    IP: 95.165.0.1 (20:ab:48:bc:c8:fa) > 255.255.255.255 (0:1b:21:a0:b1:c2)
    OP: 2 (BOOTPREPLY)
 HTYPE: 1 (Ethernet)
  HLEN: 6
  HOPS: 0
   XID: b2cd481c
  SECS: 0
 FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 95.165.xxx.xxx
SIADDR: 0.0.0.0
GIADDR: 95.165.0.1
CHADDR: 00:1b:21:a0:b1:c2:00:00:00:00:00:00:00:00:00:00
 SNAME: .
 FNAME: .
OPTION:  53 (  1) DHCP message type         2 (DHCPOFFER)
OPTION:   1 (  4) Subnet mask               255.255.240.0
OPTION:   3 (  4) Routers                   95.165.0.1
OPTION:   6 (  8) DNS server                62.112.113.170,62.112.106.130
OPTION:  51 (  4) IP address leasetime      300 (5m)
OPTION:  58 (  4) T1                        150 (2m30s)
OPTION:  59 (  4) T2                        262 (4m22s)
OPTION:  54 (  4) Server identifier         95.165.0.1
---------------------------------------------------------------------------

  TIME: 2025-06-15 06:55:20.046
    IP: 0.0.0.0 (0:1b:21:a0:b1:c2) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
    OP: 1 (BOOTPREQUEST)
 HTYPE: 1 (Ethernet)
  HLEN: 6
  HOPS: 0
   XID: b2cd481c
  SECS: 0
 FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 00:1b:21:a0:b1:c2:00:00:00:00:00:00:00:00:00:00
 SNAME: .
 FNAME: .
OPTION:  53 (  1) DHCP message type         3 (DHCPREQUEST)
OPTION:  54 (  4) Server identifier         95.165.0.1
OPTION:  50 (  4) Request IP address        95.165.xxx.xxx
OPTION:  12 (  3) Host name                 deb
OPTION:  55 ( 13) Parameter Request List      1 (Subnet mask)
                                             28 (Broadcast address)
                                              2 (Time offset)
                                              3 (Routers)
                                             15 (Domainname)
                                              6 (DNS server)
                                            119 (Domain Search)
                                             12 (Host name)
                                             44 (NetBIOS name server)
                                             47 (NetBIOS scope)
                                             26 (Interface MTU)
                                            121 (Classless Static Route)
                                             42 (NTP servers)

---------------------------------------------------------------------------

  TIME: 2025-06-15 06:55:20.046
    IP: 95.165.0.1 (20:ab:48:bc:c8:fa) > 255.255.255.255 (0:1b:21:a0:b1:c2)
    OP: 2 (BOOTPREPLY)
 HTYPE: 1 (Ethernet)
  HLEN: 6
  HOPS: 0
   XID: b2cd481c
  SECS: 0
 FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 95.165.xxx.xxx
SIADDR: 0.0.0.0
GIADDR: 95.165.0.1
CHADDR: 00:1b:21:a0:b1:c2:00:00:00:00:00:00:00:00:00:00
 SNAME: .
 FNAME: .
OPTION:  53 (  1) DHCP message type         5 (DHCPACK)
OPTION:   1 (  4) Subnet mask               255.255.240.0
OPTION:   3 (  4) Routers                   95.165.0.1
OPTION:   6 (  8) DNS server                62.112.113.170,62.112.106.130
OPTION:  51 (  4) IP address leasetime      300 (5m)
OPTION:  58 (  4) T1                        150 (2m30s)
OPTION:  59 (  4) T2                        262 (4m22s)
OPTION:  54 (  4) Server identifier         95.165.0.1
---------------------------------------------------------------------------

  TIME: 2025-06-15 06:55:50.309
    IP: 95.165.xxx.xxx (0:1b:21:a0:b1:c2) > 95.165.0.1 (20:ab:48:bc:c8:fa)
    OP: 1 (BOOTPREQUEST)
 HTYPE: 1 (Ethernet)
  HLEN: 6
  HOPS: 0
   XID: 1bfdee76
  SECS: 0
 FLAGS: 0
CIADDR: 95.165.xxx.xxx
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 00:1b:21:a0:b1:c2:00:00:00:00:00:00:00:00:00:00
 SNAME: .
 FNAME: .
OPTION:  53 (  1) DHCP message type         7 (DHCPRELEASE)
OPTION:  54 (  4) Server identifier         95.165.0.1
OPTION:  12 (  3) Host name                 deb
---------------------------------------------------------------------------
root@deb:~# 

Let me know if I should send dump files.


UPD: added info on DSCP bit differences.

pae-id avatar Jun 19 '25 01:06 pae-id

Also, while testing I spotted couple of quirks:

  • dhcpcd --clientid "" produced a skewed value (as seen by dhcpdump) compared to dhcpcd --clientid "00:1b:21:a0:b1:c2", last one matched with padding.
  • dhcpcd --hostname "" did not include hostname option in the dump, but dhcpcd --hostname "deb" did.

Debian 12 still has dhcpcd-9.4.1 though.

pae-id avatar Jun 19 '25 01:06 pae-id

You should now be sending exactly the same options and requested options as your dhclient and the only difference left should be the ordering. Let me know, and send another dhcpcd tcpdump if it still fails.

The provided config and dhcpcd built from master do not work either. Debug information sent via e-mail.

e-pirate avatar Jun 19 '25 06:06 e-pirate

@pae-id thanks for your analysis of the IP header differences. I did my research on what the values should be and now set IP ID zero, TTL 128 and TOS IPTOS_LOWDELAY (0x10). I'll note that my iWatch uses a TTL of 255. Wow.

Check you test the dhcp_ip branch please to see if that fixes it?

rsmarples avatar Jun 19 '25 10:06 rsmarples

You should now be sending exactly the same options and requested options as your dhclient and the only difference left should be the ordering. Let me know, and send another dhcpcd tcpdump if it still fails.

The provided config and dhcpcd built from master do not work either. Debug information sent via e-mail.

And looking over those the only difference (aside from the excellent IP header analysis above) is indeed the option ordering. I've added a patch in the dhcp_option_order branch which moves the Message Type option to the top which matches other clients. Can you test that please?

rsmarples avatar Jun 19 '25 10:06 rsmarples

OK, we have two branches. Hopefully we just need the IP header changes. If not then we try the option ordering change. Please both of you, try and test both branches and let me know if that fixes anything.

rsmarples avatar Jun 19 '25 10:06 rsmarples

@rsmarples I've compiled both and will be checking them this evening (hope so).

Moreover, the ISP's stuff came to me and requested an on-line debug session with my server so the can see what's going on in real time. I have no clue why they need me for that if they can compile or even get precompiled dhcpcd themselves, my guess they want to see the real condition from a remote client side. Since this is not a big deal I'm going to help them tomorrow morning. If one of this patched version works, this will directly point out how to fix server so it will work not just with patched dhcpcd, but with old versions also making it less pesky on REQUESTs. Hope so.

e-pirate avatar Jun 19 '25 11:06 e-pirate

@e-pirate you might want a third binary with one branch merged in with the other to test both at the same time. Good luck!

rsmarples avatar Jun 19 '25 11:06 rsmarples

@rsmarples I have 3 of them: master, dhcpcd-dhcp_ip and dhcpcd-dhcp_option_order. Things got serious :-)

e-pirate avatar Jun 19 '25 11:06 e-pirate

@rsmarples I have 3 of them: master, dhcpcd-dhcp_ip and dhcpcd-dhcp_option_order. Things got serious :-)

At the time of writing, both branches are up to date with master. I am suggesting you want to do something like:

git checkout master
git pull
git checkout -b dhcp_fixes
git merge dhcp_option_order
git merge dhcp_ip
./configure
make clean
make

ie, test both changes in one binary in case both are needed.

rsmarples avatar Jun 19 '25 11:06 rsmarples

@rsmarples I have no git on that server and therefore have to download zip and then compile it. So, should I just get current master, compile and use it (with that config you provided) for tests?

e-pirate avatar Jun 19 '25 12:06 e-pirate

No. I was suggesting that you needed 3 binaries is all - dhcp_ip, dhcp_option order and dhcp_ip + dhcp_option_order. Would if help if I made a dhcp_fixes branch with both in for you?

rsmarples avatar Jun 19 '25 13:06 rsmarples

Would if help if I made a dhcp_fixes branch with both in for you?

Nop, I merge it locally and then pack and send result to target server and then build it there. I just need orders what to do.

e-pirate avatar Jun 19 '25 13:06 e-pirate

I posted the instructions on how to do that above. Here they are again :)

git checkout master
git pull
git checkout -b dhcp_fixes
git merge dhcp_option_order
git merge dhcp_ip
./configure
make clean
make

rsmarples avatar Jun 19 '25 13:06 rsmarples

Finally the success! Even with default config dhcpcd gets the lease now. Dumps sent to @rsmarples for feather analyses.

Roy, could you explain what exactly was changed so I can give that info to ISP's stuff so they can fix it faster?

e-pirate avatar Jun 19 '25 15:06 e-pirate

Well, you used both fixes. Try just the fix from the dhcp_option_order branch. They can look at the commit 90811d9656076796557f47749815f2eb3157c0cc.

The other change is something I should probably make at this end anyway, but want to know for sure before I merge.

rsmarples avatar Jun 19 '25 16:06 rsmarples

@rsmarples the dhcp_option_order along will be tested and results reported tomorrow morning. I'm slightly afraid of loosing access to the server cause of network failure and have to get there for fixing it from the local network in case something goes wrong.

e-pirate avatar Jun 19 '25 17:06 e-pirate

Nice catch with Option53 priority 👍

As quoted from RFC

the client MAY order the options by option code number (lowest to highest).

probably is the best route for default config and will make OCD of folks happy. Is there a user capability to set option order or is it hardcoded now?

Will be checking header changes with Wireshark shortly.

Spoiler: dhcp_ip branch
mkdir git-dhcp_ip && cd git-dhcp_ip/ && \
ln -s dhcpcd/src/dhcpcd bin-dhcpcd && \
git clone --single-branch -b dhcp_ip https://github.com/NetworkConfiguration/dhcpcd.git && \
cd dhcpcd/ && \
./configure --disable-inet6 --disable-ipv4ll && \
make && cd - && \
./bin-dhcpcd --version
root@deb:~/deb/git-dhcp_ip# ./bin-dhcpcd -d1 -t 30 -C resolv.conf enp6s19
main: mkdir: /var/db/dhcpcd: No such file or directory
dhcpcd-10.2.4 starting
chrooting as dhcpcd to /usr/lib/dhcpcd
spawned manager process on PID 4722
sandbox: seccomp
spawned privileged proxy on PID 4723
spawned controller proxy on PID 4724
enp6s19: executing: /libexec/dhcpcd-run-hooks PREINIT
script_runreason: No such file or directory
enp6s19: executing: /libexec/dhcpcd-run-hooks CARRIER
script_runreason: No such file or directory
enp6s19: delaying IPv4 for 0.1 seconds
enp6s19: using hwaddr 00:1b:21:a0:b1:c2
enp6s19: reading lease: /var/db/dhcpcd/enp6s19.lease
enp6s19: soliciting a DHCP lease
enp6s19: sending DISCOVER (xid 0x4f0cac59), next in 4.8 seconds
enp6s19: spawned BPF BOOTP on PID 4727
enp6s19: offered 95.165.xxx.xxx from 95.165.0.1
enp6s19: sending REQUEST (xid 0x4f0cac59), next in 3.3 seconds
enp6s19: process BPF BOOTP already started on pid 4727
enp6s19: sending REQUEST (xid 0x4f0cac59), next in 7.3 seconds
enp6s19: process BPF BOOTP already started on pid 4727
enp6s19: sending REQUEST (xid 0x4f0cac59), next in 16.4 seconds
enp6s19: process BPF BOOTP already started on pid 4727
enp6s19: sending REQUEST (xid 0x4f0cac59), next in 31.6 seconds
enp6s19: process BPF BOOTP already started on pid 4727
timed out
enp6s19: executing: /libexec/dhcpcd-run-hooks STOPPED
script_runreason: No such file or directory
main: control_stop: No such file or directory
enp6s19: BPF BOOTP exited from PID 4727
enp6s19: control proxy exited from PID 4724
dhcpcd exited
root@deb:~/deb/git-dhcp_ip#
Spoiler: dhcp_ip branch dhcpdump
root@deb:~/deb# clear && dhcpdump -i enp6s19
TIME: 2025-06-20 08:47:35.614
  IP: 0.0.0.0 (0:1b:21:a0:b1:c2) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
  OP: 1 (BOOTPREQUEST)
HTYPE: 1 (Ethernet)
HLEN: 6
HOPS: 0
 XID: 4f0cac59
SECS: 0
FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 00:1b:21:a0:b1:c2:00:00:00:00:00:00:00:00:00:00
SNAME: .
FNAME: .
OPTION:  53 (  1) DHCP message type         1 (DHCPDISCOVER)
OPTION:  55 (  9) Parameter Request List      1 (Subnet mask)
                                          121 (Classless Static Route)
                                            3 (Routers)
                                            6 (DNS server)
                                           12 (Host name)
                                           15 (Domainname)
                                           26 (Interface MTU)
                                           28 (Broadcast address)
                                          119 (Domain Search)

OPTION:  57 (  2) Maximum DHCP message size 1488
OPTION:  80 (  0) Naming Authority
OPTION: 116 (  1) DHCP Autoconfiguration    01               .
OPTION: 145 (  1) ???                       01               .
---------------------------------------------------------------------------

TIME: 2025-06-20 08:47:35.615
  IP: 95.165.0.1 (20:ab:48:bc:c8:fa) > 255.255.255.255 (0:1b:21:a0:b1:c2)
  OP: 2 (BOOTPREPLY)
HTYPE: 1 (Ethernet)
HLEN: 6
HOPS: 0
 XID: 4f0cac59
SECS: 0
FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 95.165.xxx.xxx
SIADDR: 0.0.0.0
GIADDR: 95.165.0.1
CHADDR: 00:1b:21:a0:b1:c2:00:00:00:00:00:00:00:00:00:00
SNAME: .
FNAME: .
OPTION:  53 (  1) DHCP message type         2 (DHCPOFFER)
OPTION:   1 (  4) Subnet mask               255.255.240.0
OPTION:   3 (  4) Routers                   95.165.0.1
OPTION:   6 (  8) DNS server                62.112.113.170,62.112.106.130
OPTION:  51 (  4) IP address leasetime      300 (5m)
OPTION:  58 (  4) T1                        150 (2m30s)
OPTION:  59 (  4) T2                        262 (4m22s)
OPTION:  54 (  4) Server identifier         95.165.0.1
---------------------------------------------------------------------------

TIME: 2025-06-20 08:47:35.615
  IP: 0.0.0.0 (0:1b:21:a0:b1:c2) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
  OP: 1 (BOOTPREQUEST)
HTYPE: 1 (Ethernet)
HLEN: 6
HOPS: 0
 XID: 4f0cac59
SECS: 0
FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 00:1b:21:a0:b1:c2:00:00:00:00:00:00:00:00:00:00
SNAME: .
FNAME: .
OPTION:  50 (  4) Request IP address        95.165.xxx.xxx
OPTION:  53 (  1) DHCP message type         3 (DHCPREQUEST)
OPTION:  54 (  4) Server identifier         95.165.0.1
OPTION:  55 (  9) Parameter Request List      1 (Subnet mask)
                                          121 (Classless Static Route)
                                            3 (Routers)
                                            6 (DNS server)
                                           12 (Host name)
                                           15 (Domainname)
                                           26 (Interface MTU)
                                           28 (Broadcast address)
                                          119 (Domain Search)

OPTION:  57 (  2) Maximum DHCP message size 1488
OPTION: 145 (  1) ???                       01               .
---------------------------------------------------------------------------

TIME: 2025-06-20 08:47:38.942
  IP: 0.0.0.0 (0:1b:21:a0:b1:c2) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
  OP: 1 (BOOTPREQUEST)
HTYPE: 1 (Ethernet)
HLEN: 6
HOPS: 0
 XID: 4f0cac59
SECS: 3
FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 00:1b:21:a0:b1:c2:00:00:00:00:00:00:00:00:00:00
SNAME: .
FNAME: .
OPTION:  50 (  4) Request IP address        95.165.xxx.xxx
OPTION:  53 (  1) DHCP message type         3 (DHCPREQUEST)
OPTION:  54 (  4) Server identifier         95.165.0.1
OPTION:  55 (  9) Parameter Request List      1 (Subnet mask)
                                          121 (Classless Static Route)
                                            3 (Routers)
                                            6 (DNS server)
                                           12 (Host name)
                                           15 (Domainname)
                                           26 (Interface MTU)
                                           28 (Broadcast address)
                                          119 (Domain Search)

OPTION:  57 (  2) Maximum DHCP message size 1488
OPTION: 145 (  1) ???                       01               .
---------------------------------------------------------------------------

TIME: 2025-06-20 08:47:46.222
  IP: 0.0.0.0 (0:1b:21:a0:b1:c2) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
  OP: 1 (BOOTPREQUEST)
HTYPE: 1 (Ethernet)
HLEN: 6
HOPS: 0
 XID: 4f0cac59
SECS: 10
FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 00:1b:21:a0:b1:c2:00:00:00:00:00:00:00:00:00:00
SNAME: .
FNAME: .
OPTION:  50 (  4) Request IP address        95.165.xxx.xxx
OPTION:  53 (  1) DHCP message type         3 (DHCPREQUEST)
OPTION:  54 (  4) Server identifier         95.165.0.1
OPTION:  55 (  9) Parameter Request List      1 (Subnet mask)
                                          121 (Classless Static Route)
                                            3 (Routers)
                                            6 (DNS server)
                                           12 (Host name)
                                           15 (Domainname)
                                           26 (Interface MTU)
                                           28 (Broadcast address)
                                          119 (Domain Search)

OPTION:  57 (  2) Maximum DHCP message size 1488
OPTION: 145 (  1) ???                       01               .
---------------------------------------------------------------------------

TIME: 2025-06-20 08:48:02.654
  IP: 0.0.0.0 (0:1b:21:a0:b1:c2) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
  OP: 1 (BOOTPREQUEST)
HTYPE: 1 (Ethernet)
HLEN: 6
HOPS: 0
 XID: 4f0cac59
SECS: 27
FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 00:1b:21:a0:b1:c2:00:00:00:00:00:00:00:00:00:00
SNAME: .
FNAME: .
OPTION:  50 (  4) Request IP address        95.165.xxx.xxx
OPTION:  53 (  1) DHCP message type         3 (DHCPREQUEST)
OPTION:  54 (  4) Server identifier         95.165.0.1
OPTION:  55 (  9) Parameter Request List      1 (Subnet mask)
                                          121 (Classless Static Route)
                                            3 (Routers)
                                            6 (DNS server)
                                           12 (Host name)
                                           15 (Domainname)
                                           26 (Interface MTU)
                                           28 (Broadcast address)
                                          119 (Domain Search)

OPTION:  57 (  2) Maximum DHCP message size 1488
OPTION: 145 (  1) ???                       01               .
---------------------------------------------------------------------------
Spoiler: dhcp_option_order branch
mkdir git-dhcp_option_order && cd git-dhcp_option_order/ && \
ln -s dhcpcd/src/dhcpcd bin-dhcpcd && \
git clone --single-branch -b dhcp_option_order https://github.com/NetworkConfiguration/dhcpcd.git && \
cd dhcpcd/ && \
./configure --disable-inet6 --disable-ipv4ll && \
make && cd - && \
./bin-dhcpcd --version
root@deb:~/deb/git-dhcp_option_order# ./bin-dhcpcd -d -C resolv.conf enp6s19 && \
ping -c 3 -i 0.2 -I enp6s19 95.165.0.1 && \
./bin-dhcpcd -k enp6s19
main: mkdir: /var/db/dhcpcd: No such file or directory
dhcpcd-10.2.4 starting
chrooting as dhcpcd to /usr/lib/dhcpcd
sandbox: seccomp
spawned manager process on PID 4747
spawned privileged proxy on PID 4748
spawned controller proxy on PID 4749
enp6s19: executing: /libexec/dhcpcd-run-hooks PREINIT
script_runreason: No such file or directory
enp6s19: executing: /libexec/dhcpcd-run-hooks CARRIER
script_runreason: No such file or directory
enp6s19: delaying IPv4 for 1.5 seconds
enp6s19: using hwaddr 00:1b:21:a0:b1:c2
enp6s19: reading lease: /var/db/dhcpcd/enp6s19.lease
enp6s19: soliciting a DHCP lease
enp6s19: sending DISCOVER (xid 0xc998324), next in 3.8 seconds
enp6s19: spawned BPF BOOTP on PID 4752
enp6s19: offered 95.165.xxx.xxx from 95.165.0.1
enp6s19: sending REQUEST (xid 0xc998324), next in 3.9 seconds
enp6s19: process BPF BOOTP already started on pid 4752
enp6s19: acknowledged 95.165.xxx.xxx from 95.165.0.1
enp6s19: spawned BPF ARP 95.165.xxx.xxx on PID 4753
enp6s19: probing address 95.165.xxx.xxx/20
enp6s19: probing for 95.165.xxx.xxx
enp6s19: ARP probing 95.165.xxx.xxx (1 of 3), next in 1.4 seconds
enp6s19: ARP probing 95.165.xxx.xxx (2 of 3), next in 1.9 seconds
enp6s19: ARP probing 95.165.xxx.xxx (3 of 3), next in 2.0 seconds
enp6s19: DAD completed for 95.165.xxx.xxx
enp6s19: leased 95.165.xxx.xxx for 300 seconds
enp6s19: renew in 150 seconds, rebind in 262 seconds
enp6s19: writing lease: /var/db/dhcpcd/enp6s19.lease
dhcp_writefile: /var/db/dhcpcd/enp6s19.lease: No such file or directory
enp6s19: adding IP address 95.165.xxx.xxx/20 broadcast 95.165.15.255
enp6s19: ARP announcing 95.165.xxx.xxx (1 of 2), next in 2.0 seconds
enp6s19: adding route to 95.165.0.0/20
enp6s19: adding default route via 95.165.0.1
enp6s19: executing: /libexec/dhcpcd-run-hooks BOUND
script_runreason: No such file or directory
forked to background
PING 95.165.0.1 (95.165.0.1) from 95.165.xxx.xxx enp6s19: 56(84) bytes of data.
64 bytes from 95.165.0.1: icmp_seq=1 ttl=255 time=3.54 ms
64 bytes from 95.165.0.1: icmp_seq=2 ttl=255 time=1.76 ms
64 bytes from 95.165.0.1: icmp_seq=3 ttl=255 time=1.60 ms

--- 95.165.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 402ms
rtt min/avg/max/mdev = 1.597/2.299/3.536/0.877 ms
sending signal ALRM to pid 4747
waiting for pid 4747 to exit
root@deb:~/deb/git-dhcp_option_order#
Spoiler: dhcp_option_order branch dhcpdump
root@deb:~/deb# clear && dhcpdump -i enp6s19
TIME: 2025-06-20 08:52:05.530
  IP: 0.0.0.0 (0:1b:21:a0:b1:c2) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
  OP: 1 (BOOTPREQUEST)
HTYPE: 1 (Ethernet)
HLEN: 6
HOPS: 0
 XID: 0c998324
SECS: 0
FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 00:1b:21:a0:b1:c2:00:00:00:00:00:00:00:00:00:00
SNAME: .
FNAME: .
OPTION:  53 (  1) DHCP message type         1 (DHCPDISCOVER)
OPTION:  55 (  9) Parameter Request List      1 (Subnet mask)
                                          121 (Classless Static Route)
                                            3 (Routers)
                                            6 (DNS server)
                                           12 (Host name)
                                           15 (Domainname)
                                           26 (Interface MTU)
                                           28 (Broadcast address)
                                          119 (Domain Search)

OPTION:  57 (  2) Maximum DHCP message size 1488
OPTION:  80 (  0) Naming Authority
OPTION: 116 (  1) DHCP Autoconfiguration    01               .
OPTION: 145 (  1) ???                       01               .
---------------------------------------------------------------------------

TIME: 2025-06-20 08:52:05.531
  IP: 95.165.0.1 (20:ab:48:bc:c8:fa) > 255.255.255.255 (0:1b:21:a0:b1:c2)
  OP: 2 (BOOTPREPLY)
HTYPE: 1 (Ethernet)
HLEN: 6
HOPS: 0
 XID: 0c998324
SECS: 0
FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 95.165.xxx.xxx
SIADDR: 0.0.0.0
GIADDR: 95.165.0.1
CHADDR: 00:1b:21:a0:b1:c2:00:00:00:00:00:00:00:00:00:00
SNAME: .
FNAME: .
OPTION:  53 (  1) DHCP message type         2 (DHCPOFFER)
OPTION:   1 (  4) Subnet mask               255.255.240.0
OPTION:   3 (  4) Routers                   95.165.0.1
OPTION:   6 (  8) DNS server                62.112.113.170,62.112.106.130
OPTION:  51 (  4) IP address leasetime      300 (5m)
OPTION:  58 (  4) T1                        150 (2m30s)
OPTION:  59 (  4) T2                        262 (4m22s)
OPTION:  54 (  4) Server identifier         95.165.0.1
---------------------------------------------------------------------------

TIME: 2025-06-20 08:52:05.531
  IP: 0.0.0.0 (0:1b:21:a0:b1:c2) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
  OP: 1 (BOOTPREQUEST)
HTYPE: 1 (Ethernet)
HLEN: 6
HOPS: 0
 XID: 0c998324
SECS: 0
FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 00:1b:21:a0:b1:c2:00:00:00:00:00:00:00:00:00:00
SNAME: .
FNAME: .
OPTION:  53 (  1) DHCP message type         3 (DHCPREQUEST)
OPTION:  50 (  4) Request IP address        95.165.xxx.xxx
OPTION:  54 (  4) Server identifier         95.165.0.1
OPTION:  55 (  9) Parameter Request List      1 (Subnet mask)
                                          121 (Classless Static Route)
                                            3 (Routers)
                                            6 (DNS server)
                                           12 (Host name)
                                           15 (Domainname)
                                           26 (Interface MTU)
                                           28 (Broadcast address)
                                          119 (Domain Search)

OPTION:  57 (  2) Maximum DHCP message size 1488
OPTION: 145 (  1) ???                       01               .
---------------------------------------------------------------------------

TIME: 2025-06-20 08:52:05.531
  IP: 95.165.0.1 (20:ab:48:bc:c8:fa) > 255.255.255.255 (0:1b:21:a0:b1:c2)
  OP: 2 (BOOTPREPLY)
HTYPE: 1 (Ethernet)
HLEN: 6
HOPS: 0
 XID: 0c998324
SECS: 0
FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 95.165.xxx.xxx
SIADDR: 0.0.0.0
GIADDR: 95.165.0.1
CHADDR: 00:1b:21:a0:b1:c2:00:00:00:00:00:00:00:00:00:00
SNAME: .
FNAME: .
OPTION:  53 (  1) DHCP message type         5 (DHCPACK)
OPTION:   1 (  4) Subnet mask               255.255.240.0
OPTION:   3 (  4) Routers                   95.165.0.1
OPTION:   6 (  8) DNS server                62.112.113.170,62.112.106.130
OPTION:  51 (  4) IP address leasetime      300 (5m)
OPTION:  58 (  4) T1                        150 (2m30s)
OPTION:  59 (  4) T2                        262 (4m22s)
OPTION:  54 (  4) Server identifier         95.165.0.1
---------------------------------------------------------------------------

TIME: 2025-06-20 08:52:11.254
  IP: 95.165.xxx.xxx (0:1b:21:a0:b1:c2) > 95.165.0.1 (20:ab:48:bc:c8:fa)
  OP: 1 (BOOTPREQUEST)
HTYPE: 1 (Ethernet)
HLEN: 6
HOPS: 0
 XID: 0c42f419
SECS: 0
FLAGS: 0
CIADDR: 95.165.xxx.xxx
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 00:1b:21:a0:b1:c2:00:00:00:00:00:00:00:00:00:00
SNAME: .
FNAME: .
OPTION:  53 (  1) DHCP message type         7 (DHCPRELEASE)
OPTION:  54 (  4) Server identifier         95.165.0.1
---------------------------------------------------------------------------

pae-id avatar Jun 20 '25 06:06 pae-id

@rsmarples The dhcp_option_order along worked as well with default (desired) config. Have no clue if this is needed, but sent another portion of dumps via e-mail.

e-pirate avatar Jun 20 '25 07:06 e-pirate