Offer is skipped (no UDP reply) when dhcpd cannot select a subnet or allocate. NAK is a different path (NAK).
Checklist
- Overview — API ready? dhcpd count > 0? Alert
dhcpd_missing/dhcpd_stale? curl -sf http://<dhcpd>:8080/readyz— 200 only after Postgres ping and a subnet-count query.- Relayed packet: subnet pick is RFC 3527 link-selection (option 82) if present, else
giaddr. That address must sit inside a subnet CIDR. Example:-giaddr 10.20.20.1with a10.20.20.0/24subnet. Log:no subnet for packet. Relays. LATTICE_TRUSTED_RELAYS— empty drops relayed packets. List your relay IPs/CIDRs. Other sources are dropped (dropped untrusted relay). Relays.- A pool exists, is enabled, and the client matches its class (or the pool has no class).
freeinventory — excludes + reservations + leased can empty a /24.- Port is
:67. Relays to the wrong port look like “DHCP is down.” - License over cap refuses new grants (counted when a lease is committed, not when an Offer is sketched). Renewals still work.
dhcptest on the node.