如何配置Unbound将本地无点主机名解析请求转发至本地DNS服务器
如何配置Unbound将本地无点主机名解析请求转发至本地DNS服务器
嘿,这个需求我刚好处理过,完美匹配你的场景——只把不带点的本地主机名转发到192.168.1.1,其他域名保持正常递归解析,还不用依赖DHCP添加域名。
具体配置很简单,你只需要在Unbound的配置文件(通常是/etc/unbound/unbound.conf或/etc/unbound.conf,不同系统路径可能略有差异)里添加一段针对性的转发规则,同时避免全局转发的干扰:
# 仅转发无点的本地主机名到你的本地DNS服务器 forward-zone: name: "" forward-addr: 192.168.1.1
配置说明:
name: ""这个规则会精准匹配所有不带点的单标签主机名(比如你提到的"foo"),这类请求会被直接转发到指定的forward-addr(也就是192.168.1.1)。- 所有带点的域名(比如
example.com、google.com)会自动走Unbound默认的递归解析流程,完全不会被转发,刚好符合你的要求。
注意事项:
- 一定要检查配置文件里有没有全局转发规则(比如
forward-zone: name: "."),如果有的话必须删掉,否则所有请求都会被转发到本地DNS,就达不到你要的效果了。 - 修改完配置后,记得重启Unbound服务让配置生效,比如执行命令:
sudo systemctl restart unbound(基于systemd的系统)或者sudo service unbound restart。
验证配置是否生效:
你可以用dig命令测试两种场景:
- 测试无点主机名:
dig foo @localhost,查看返回结果的SERVER字段,应该显示192.168.1.1。 - 测试正常域名:
dig example.com @localhost,查看SERVER字段,应该显示Unbound监听的本地地址(通常是127.0.0.1或::1),说明是递归解析的结果。
备注:内容来源于stack exchange,提问作者vinc17




