NetworkManager 1.50.2 sends DHCPDISCOVER with ciaddr set; fixed upstream in 1.58
Describe the issue you are experiencing
HA OS 18.3 ships NetworkManager 1.50.2, whose internal DHCP client puts the previous lease's address in ciaddr on a DHCPDISCOVER. RFC 2131 says that must be zero. dnsmasq tolerates it, but Technitium drops the packet silently, so after I moved my LAN's DHCP from Pi-hole to Technitium the box lost IPv4 and never got it back (13 hours of DISCOVERs, no reply; Technitium side is TechnitiumSoftware/DnsServer#2158).
Fixed upstream in n-dhcp4 commit e19f3192cb ("dhcp: Fix ciaddr field to comply with RFC2131"), shipped in NetworkManager 1.58.0. dev is still on 1.50.2. Could NM be bumped to 1.58?
Workaround: static IPv4.
What operating system image do you use?
generic-x86-64 (Generic UEFI capable x86-64 systems)
What version of Home Assistant Operating System is installed?
18.3
Did the problem occur after upgrading the Operating System?
No
Hardware details
Intel NUC5i5RYB (i5-5250U, 8 GB), bare metal. Onboard Intel Ethernet (enp0s25), Wi-Fi disabled. Crucial MX200 250 GB SATA as data disk. No USB devices attached.
Steps to reproduce the issue
- Box holds a DHCP lease from server A (dnsmasq / Pi-hole).
- Retire server A, put Technitium in as the DHCP server with a reservation for the box's MAC.
- Let the lease expire, or reboot the box.
- tcpdump on the LAN: every DISCOVER from the box has
Client-IPset to the old address. Technitium never answers and logs nothing. NetworkManager loops on "no lease" indefinitely.
Anything in the Supervisor logs that might be useful for us?
Nothing relevant. Only "Updating local network information" each time NetworkManager restarts the DHCP transaction.Anything in the Host logs that might be useful for us?
NetworkManager[487]: <info> dhcp4 (enp0s25): canceled DHCP transaction
NetworkManager[487]: <info> dhcp4 (enp0s25): activation: beginning transaction (timeout in 45 seconds)
NetworkManager[487]: <info> dhcp4 (enp0s25): state changed no lease
(repeats every cycle)System information
System Information
| version | core-2026.9.3 |
|---|---|
| installation_type | Home Assistant OS |
| dev | false |
| hassio | true |
| docker | true |
| container_arch | amd64 |
| user | root |
| virtualenv | false |
| python_version | 3.14.6 |
| os_name | Linux |
| os_version | 6.18.52-haos |
| arch | x86_64 |
| timezone | Europe/London |
| config_dir | /config |
| logged_in | true |
|---|---|
| subscription_expiration | 2 October 2026 at 01:00 |
| relayer_connected | true |
| relayer_region | eu-central-1 |
| remote_enabled | true |
| remote_connected | true |
| remote_server | eu-4.ui.nabu.casa |
| alexa_enabled | true |
| google_enabled | true |
| cloud_ice_servers_enabled | true |
| certificate_status | ready |
| instance_id | c35fd17260874c8480672839430f4bd5 |
| iot_state | connected |
| iot_tries | 0 |
| certificate_expire_date | 26 October 2026 at 22:23 |
| certificate_fingerprint | dce30cf43cf9b07ad206c37d291493aced3fa35a |
| certificate_alternative_names | undefined |
| can_reach_cert_server | ok |
| can_reach_cloud_auth | ok |
| can_reach_cloud | ok |
| GitHub API | ok |
|---|---|
| GitHub Content | ok |
| GitHub Web | ok |
| HACS Data | ok |
| GitHub API Calls Remaining | 5000 |
| Installed Version | 2.0.5 |
| Stage | running |
| Available Repositories | 4138 |
| Downloaded Repositories | 50 |
| host_os | Home Assistant OS 18.3 |
|---|---|
| update_channel | stable |
| supervisor_version | supervisor-2026.09.2 |
| agent_version | 1.14.0 |
| docker_version | 29.7.2 |
| disk_total | 228.5 GB |
| disk_used | 97.3 GB |
| nameservers | fdc7:566f:697c:0:be24:11ff:fe4a:6e87, 192.168.10.87 |
| healthy | true |
| supported | true |
| host_connectivity | true |
| supervisor_connectivity | true |
| ntp_synchronized | true |
| virtualization | |
| board | generic-x86-64 |
| supervisor_api | ok |
| version_api | ok |
| installed_addons | OneDrive Backup (2.3.10), Music Assistant (2.10.4), File editor (6.1.0), Studio Code Server (7.1.1), ESPHome Device Builder (2026.9.0), Mosquitto broker (7.1.1), Samba share (12.10.0), openWakeWord (2.1.1), AdGuard Home (6.2.1), Node-RED (22.0.6), Spotify Connect (0.19.0), Tailscale (0.30.0), Get HACS (1.3.1), Cloudflare Tunnel client (2026.8.0), Homarr (0.92), n8n (4.4.21), Speech-to-Phrase (1.4.5), Zigbee2MQTT (2.14.1-1), Homarr (1.1.0), Advanced SSH & Web Terminal (24.1.4), SQLite Web (6.1.1), Home Assistant MCP Server (8.5.0), TS Entities (2026.3.20-4495fdb), HA Forge (2026.3.31-f62915c), Qwen Voice Bridge (0.1.10), Nabu Casa - Webhook Proxy for HA MCP (3.0.3) |
| dashboards | 9 |
|---|---|
| resources | 17 |
| views | 16 |
| mode | storage |
| adapters | lo (disabled), enp0s25 (enabled, default, auto), docker0 (disabled), hassio (disabled), veth6d5e3cf (disabled), veth73438ea (disabled), veth5c37051 (disabled), vetheedbc46 (disabled), veth1fc7ad4 (disabled), veth8152413 (disabled), veth51de7e9 (disabled), veth29332f7 (disabled), tailscale0 (disabled), veth0b7a4a8 (disabled), veth1911961 (disabled), vethd06985b (disabled), vethe1503ac (disabled), veth577d176 (disabled), vethe73014c (disabled), vethab33260 (disabled), veth9e3922f (disabled), veth55af13c (disabled), vethb54e670 (disabled), veth3d35be4 (disabled) |
|---|---|
| ipv4_addresses | lo (127.0.0.1/8), enp0s25 (192.168.10.4/24), docker0 (172.30.232.1/23), hassio (172.30.32.1/23), veth6d5e3cf (), veth73438ea (), veth5c37051 (), vetheedbc46 (), veth1fc7ad4 (), veth8152413 (), veth51de7e9 (), veth29332f7 (), tailscale0 (), veth0b7a4a8 (), veth1911961 (), vethd06985b (), vethe1503ac (), veth577d176 (), vethe73014c (), vethab33260 (), veth9e3922f (), veth55af13c (), vethb54e670 (), veth3d35be4 () |
| ipv6_addresses | lo (::1/128), enp0s25 (fdc7:566f:697c:0:f8fe:4bf2:d850:f0e6/64, fe80::42ed:c697:33b0:4d1e/64), docker0 (fdc2:6236:4ba::1/64, fe80::505d:42ff:fe8c:dd52/64), hassio (fd0c:ac1e:2100::1/48, fe80::1069:81ff:fe23:4d78/64), veth6d5e3cf (fe80::68d2:2eff:fe76:6d62/64), veth73438ea (fe80::2c96:f7ff:fee7:88d8/64), veth5c37051 (fe80::f02f:91ff:fedf:140b/64), vetheedbc46 (fe80::fc82:9eff:fea4:3271/64), veth1fc7ad4 (fe80::3406:efff:febc:896b/64), veth8152413 (fe80::c41f:b0ff:fec8:907a/64), veth51de7e9 (fe80::5c31:c1ff:fecc:7d5b/64), veth29332f7 (fe80::2c17:d7ff:fee6:82fe/64), tailscale0 (fe80::2389:fff8:1fdc:7bbc/64), veth0b7a4a8 (fe80::3cea:55ff:fe7d:7803/64), veth1911961 (fe80::c498:52ff:fec3:e9a7/64), vethd06985b (fe80::8c5f:87ff:feab:5c3a/64), vethe1503ac (fe80::6cef:42ff:fe7d:5997/64), veth577d176 (fe80::f4f6:baff:fed6:f6a1/64), vethe73014c (fe80::30a0:a5ff:fe0c:8ac0/64), vethab33260 (fe80::c43c:25ff:fe45:2cbd/64), veth9e3922f (fe80::5c8a:dff:fe90:30e8/64), veth55af13c (fe80::c0d3:3cff:fe02:c999/64), vethb54e670 (fe80::3c12:54ff:fe60:89f8/64), veth3d35be4 (fe80::7c90:d0ff:fee6:d330/64) |
| announce_addresses | 192.168.10.4, fdc7:566f:697c:0:f8fe:4bf2:d850:f0e6, fe80::42ed:c697:33b0:4d1e |
| oldest_recorder_run | 8 September 2026 at 21:38 |
|---|---|
| current_recorder_run | 18 September 2026 at 23:47 |
| estimated_db_size | 536.55 MiB |
| database_engine | sqlite |
| database_version | 3.53.2 |
| api_endpoint_reachable | ok |
|---|
Additional information
One DISCOVER as seen on the wire:
IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from b8:ae:ed:75:61:3f, secs 47648 Client-IP 192.168.10.4 DHCP-Message (53): Discover Requested-IP (50): 192.168.10.4 Hostname (12): "homeassistant"
The only HA OS patch against NetworkManager is the connectivity-check one, which shouldn't be affected by the bump.
One note on the reproduce steps: the box reproduces it every time it loses IPv4, but a fresh install that has never held a lease will not, since ciaddr is only filled once the client has been bound. That is why step 1 matters.
Source: home-assistant/operating-system