dhcpcd not getting ACK on REQUEST after OFFER is reseived
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.
# 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 361Trying to troubleshoot this, I've changed
duidtoclientid, disabledhostname, disabled requiredhcp_server_identifierand 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
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.
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.
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.
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?
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?
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.
So, I should build dhcpcd from master and then enable static_routes in config? Any other options that should be enabled/disabled?
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.
Version built from master didn't work either. Dump and config sent to Roy.
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.
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
dhclientcompared todhcpcd, which produced TTL of 64 (according to net.ipv4.ip_default_ttl ?) and probably plenty anyway. - ip.id from
dhclientwas 0x0, while value fromdhcpcdwas 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.
Also, while testing I spotted couple of quirks:
-
dhcpcd --clientid ""produced a skewed value (as seen bydhcpdump) compared todhcpcd --clientid "00:1b:21:a0:b1:c2", last one matched with padding. -
dhcpcd --hostname ""did not include hostname option in the dump, butdhcpcd --hostname "deb"did.
Debian 12 still has dhcpcd-9.4.1 though.
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.
@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?
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?
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 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 you might want a third binary with one branch merged in with the other to test both at the same time. Good luck!
@rsmarples I have 3 of them: master, dhcpcd-dhcp_ip and dhcpcd-dhcp_option_order. Things got serious :-)
@rsmarples I have 3 of them:
master,dhcpcd-dhcp_ipanddhcpcd-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 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?
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?
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.
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
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?
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 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.
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
---------------------------------------------------------------------------
@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.