Ok I found the bug after trial and error.... Noticed that once it's broken, DNS fails to resolve any hosts, which may explain why RMS died eventually.
I even made sure to adjust the DHCP Server Start/Limit to be 200 to 250 to avoid overlap with Static IP, that did not fix it.
The problem is having a space in the static lease name! Without a space it works fine.
Steps to reproduce
- admin/network/lan/lan/ to edit LAN configuraton
- Under "Add Lease" Name field type "iPhone Test" then click Add button
- Fill valid MAC and hostname (e.g. 192.168.1.101)
- Save & Apply
ping google.com now immediately fails with ping: bad address 'google.com'
Sat May 2 12:22:50 2020 kern.notice kernel: dhcp configuration has been changed
Sat May 2 12:22:51 2020 daemon.info dnsmasq[5820]: exiting on receipt of SIGTERM
Sat May 2 12:22:51 2020 daemon.crit dnsmasq[14646]: bad DHCP host name at line 21 of /var/etc/dnsmasq.conf.cfg01411c
Sat May 2 12:22:51 2020 daemon.crit dnsmasq[14646]: FAILED to start up
Sat May 2 12:22:53 2020 daemon.crit dnsmasq[14711]: bad DHCP host name at line 21 of /var/etc/dnsmasq.conf.cfg01411c
Sat May 2 12:22:53 2020 daemon.crit dnsmasq[14711]: FAILED to start up
Now that it's broken, hit remove on the static lease then save & apply and confirm it's working again.
root@RUTX:/etc# uci show dhcp
dhcp.@dnsmasq[0]=dnsmasq
dhcp.@dnsmasq[0].domainneeded='1'
dhcp.@dnsmasq[0].boguspriv='1'
dhcp.@dnsmasq[0].filterwin2k='0'
dhcp.@dnsmasq[0].localise_queries='1'
dhcp.@dnsmasq[0].rebind_localhost='1'
dhcp.@dnsmasq[0].local='/lan/'
dhcp.@dnsmasq[0].domain='lan'
dhcp.@dnsmasq[0].expandhosts='1'
dhcp.@dnsmasq[0].nonegcache='0'
dhcp.@dnsmasq[0].authoritative='1'
dhcp.@dnsmasq[0].readethers='1'
dhcp.@dnsmasq[0].leasefile='/tmp/dhcp.leases'
dhcp.@dnsmasq[0].resolvfile='/tmp/resolv.conf.auto'
dhcp.@dnsmasq[0].nonwildcard='1'
dhcp.@dnsmasq[0].dhcpscript='/usr/sbin/dhcpinfo.sh'
dhcp.@dnsmasq[0].rebind_protection='0'
dhcp.lan=dhcp
dhcp.lan.interface='lan'
dhcp.lan.letter='h'
dhcp.lan.start='200'
dhcp.lan.limit='250'
dhcp.lan.time='24'
dhcp.lan.leasetime='24h'
dhcp.wan=dhcp
dhcp.wan.interface='wan'
dhcp.wan.ignore='1'
dhcp.@host[0]=host
dhcp.@host[0].name='GoodName'
dhcp.@host[0].mac='EC:2C:E2:E2:E2:E2'
dhcp.@host[0].ip='192.168.1.101'
dhcp.@host[1]=host
dhcp.@host[1].name='Bad Name'
dhcp.@host[1].mac='EC:2C:E3:E3:E3:E3'
dhcp.@host[1].ip='192.168.1.102'
root@RUTX:~# ping google.com
ping: bad address 'google.com'