Look for FAILED to start up / duplicate dhcp-host. #1 cause = dnsmasq refused to start on telep-router — a single bad dhcp-host (duplicate reservation IP/MAC) or any config error kills DHCP and DNS for the entire site.
Symptoms
Devices can’t join WiFi, or join but get no IP (169.254.x self-assigned / “no internet”).
Internet is gone for everyone; multiple homelab devices drop offline at once.
The mainframe (telep-mainframe, .123) and other hosts fall off Tailscale (they lost their LAN lease).
Diagnose → Fix
Reach the router over Tailscale (LAN/DNS is down):
ssh root@100.69.112.32
Check the dnsmasq log for a fatal start error:
logread | grep -i 'dnsmasq\['
A duplicate reservation logs duplicate dhcp-host IP address … FAILED to start up.
Validate the config and confirm the daemon is (not) running:
dnsmasq --testpgrep -x dnsmasq
--test reports the exact bad line; empty pgrep = dnsmasq is down = no DHCP, no DNS.
If a duplicate/bad reservation — find and delete the offending section:
uci show dhcp | grep -iE '<ip>|<mac>'uci delete dhcp.<section> # e.g. uci delete dhcp.telep_tvuci commit dhcp/etc/init.d/dnsmasq restart
Verify DHCP is listening and leases are flowing:
pgrep -x dnsmasq # now returns a PIDnetstat -lnup | grep :67 # DHCP server listeningcat /tmp/dhcp.leases # clients re-appear within ~1 min
Clients re-lease automatically; the mainframe reclaims .123 and returns to the tailnet within a minute.
NEVER add a dhcp-host reservation without checking for a collision first
uci show dhcp | grep -iE '<ip>|<mac>'
dnsmasq does not silently ignore a duplicate dhcp-host IP — it treats it as fatal and refuses to start entirely. The canonical mainframe reservation already exists: dhcp.@host[2], name telep-mainframe, mac d8:5e:d3:a7:05:d6, ip 192.168.1.123. The AirPlay telep-tv receiver is the mainframe (same NIC/MAC) — do not add a separate telep-tv reservation. That exact mistake caused an 8.5 h site-wide outage on 2026-08-15.
Any bad dnsmasq config restart — e.g. a botched blocklist/wildcard edit. dnsmasq restarts on every uci commit dhcp; a bad commit = same site-wide outage. The 2026-08-03 casino-blocker deploy did exactly this and forced a factory reset: 2026-08-03-telep-router-factory-reset-recovery.
A single host is offline (not the whole site) → not this runbook; see host-offline.
Router survives outages because it’s on the UPS; if the router itself is dead/rebooting, WiFi is down too — see telep-router.
Related
telep-router — the OpenWrt router / dnsmasq that this all runs on