我目前在桌面 Ubuntu 15.04 安装上运行了一个 dnsmasq DNS 服务器。我使用它来指向我网络上的本地设备。例如,我有一条记录将 kerberos.dgourd.com 链接到 192.168.1.106(我的桌面 IP 地址)。但是,这个名称从未被解析过。
我将路由器设置为分配三个 DNS 服务器:
- 192.168.1.106(我的本地 DNS 服务器)
- 8.8.8.8(两个 Google DNS 服务器)
- 8.8.4.4
在我的笔记本电脑上(也运行着 Ubuntu 15.04),我运行nmcli dev show | grep DNS
以确保它使用了正确的名称服务器,并得到了以下结果:
IP4.DNS[1]: 192.168.1.106
IP4.DNS[2]: 8.8.8.8
IP4.DNS[3]: 8.8.4.4
IP4.DNS[4]: 192.168.1.1
运行dig kerberos.dgourd.com
结果没有返回任何记录:
; <<>> DiG 9.9.5-9ubuntu0.2-Ubuntu <<>> kerberos.dgourd.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 51586
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;kerberos.dgourd.com. IN A
;; Query time: 1 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Sat Aug 22 16:31:48 CDT 2015
;; MSG SIZE rcvd: 37
但是,运行dig @192.168.1.106 kerberos.dgourd.com
结果是返回正确的记录:
; <<>> DiG 9.9.5-9ubuntu0.2-Ubuntu <<>> @192.168.1.106 kerberos.dgourd.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51972
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;kerberos.dgourd.com. IN A
;; ANSWER SECTION:
kerberos.dgourd.com. 0 IN A 192.168.1.106
;; Query time: 5 msec
;; SERVER: 192.168.1.106#53(192.168.1.106)
;; WHEN: Sat Aug 22 16:36:05 CDT 2015
;; MSG SIZE rcvd: 53
到目前为止,我完全搞不懂为什么会发生这种情况。有时,我的计算机会自发地开始正确解析这些地址,然后又恢复到忽略我的 DNS 服务器。有人对我下一步可以做什么来进一步调查这个问题有什么建议吗?
答案1
我认为这与 NetworkManager 控制 DNS 和 DHCP(通过 dnsmasq)有关。如果您可以在 /etc/NetworkManager 中编辑 NetworkManager.conf,并将 dns=dnsmasq 替换为 dns=192.168.1.106,它应该可以工作。当然,在尝试使用 dig 之前,请重新启动 NetworkManager 服务。