Dnsmasq无法解析配置静态IP的主机问题求助
嗨,我完全懂你现在的困扰——把所有配置都集中在dnsmasq.conf里确实够省心,但静态IP的主机没法被解析实在闹心。咱们来拆解下问题,再一步步解决:
问题根源
你用dhcp-host配置的静态条目,本质是DHCP绑定规则:只有当设备主动发起DHCP租约请求时,dnsmasq才会把这个IP和域名的关联缓存到DNS解析列表里。而像proxy这种不运行DHCP客户端、从不请求租约的机器,自然不会被dnsmasq纳入DNS解析范围,这就是日志里出现config proxy is NODATA-IPv4的原因。
解决方案
给你几个实用的解决办法,按需选择:
用
host-record配置纯DNS映射
如果只是需要DNS解析,不需要依赖DHCP绑定(毕竟设备已经是静态IP了),直接在dnsmasq.conf里添加纯DNS映射条目:host-record=proxy,192.168.10.61这个配置和
hosts文件的作用类似,不管设备有没有发起过DHCP请求,dnsmasq都会直接返回对应的IP地址。要是你同时需要DHCP绑定(比如设备偶尔会用DHCP),可以保留原有的dhcp-host条目,再加上这条host-record。开启
dhcp-static-hosts强制加载静态绑定
如果你想让所有dhcp-host里的静态绑定自动生效为DNS记录,不用等设备的DHCP请求,可以添加这个配置:dhcp-static-hosts开启后,dnsmasq会把所有
dhcp-host的静态条目直接加载到DNS解析表中,不管设备有没有请求过租约。重启dnsmasq确保配置生效
修改配置后,别用重载,直接重启服务才能让新配置完全生效:sudo systemctl restart dnsmasq
验证方法
配置完成并重启后,再执行nslookup proxy,应该就能正常返回192.168.10.61了,日志里也会显示类似config proxy is 192.168.10.61的内容。
备注:内容来源于stack exchange,提问作者Brian Michalk

