我已经为我的家庭网络配置了自己的 DNS 服务器(我在运行 Ubuntu 服务器 16.04 的服务器上运行 dnsmasq)。该服务器还运行 DHCP 并告诉客户端它是 DNS 服务器。
我的 DNS 服务器设置为解析本地网络以及外部网络的名称。
我设置了一个完全合格的域名(通过动态 DNS 服务),这样当我不在家时,我就可以通过笔记本电脑访问 LAN 上的服务。这一切在我的 Windows 7 PC 和网络上运行的其他各种 ubuntu 机器上都运行良好,但是,它在我的 MacBook 上卡住了,目前运行的是 MacOS 10.12.3。
从我的局域网上的 MacBook,我可以使用 dig 命令查找我的 ubuntu 服务器(serv2)的地址,如下所示:
nick@deathrow:~$ dig serv2
; <<>> DiG 9.8.3-P1 <<>> serv2
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53350
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;serv2. IN A
;; ANSWER SECTION:
serv2. 0 IN A 192.168.2.4
;; Query time: 9 msec
;; SERVER: 192.168.2.4#53(192.168.2.4)
;; WHEN: Sat Feb 25 18:24:17 2017
;; MSG SIZE rcvd: 39
如您所见,它正确连接到我的局域网 192.168.2.4 上的 DNS 服务器,并正确返回服务器 192.168.2.4 的地址。
但是,如果我尝试使用命令访问 serv2,它将使用 serv2 的外部 IP 地址。以下是使用 ping 的简单示例:
nick@deathrow:~$ ping serv2
PING njj.chickenkiller.com (84.63.173.131): 56 data bytes
64 bytes from 84.63.173.131: icmp_seq=0 ttl=64 time=19.293 ms
您可以看到它使用外部地址 84.63.173.131,而不是内部地址 192.168.2.4
如果我随后清除 Mac 的 DNS 缓存,并尝试 ping 访问 serv2,它会正常工作:
sudo dscacheutil -flushcache;sudo killall -HUP mDNSResponder
Password:
nick@deathrow:~$ ping serv2
PING serv2.njj.chickenkiller.com (192.168.2.4): 56 data bytes
64 bytes from 192.168.2.4: icmp_seq=0 ttl=64 time=1.854 ms
但很快又恢复使用外部地址:
ping serv2
PING njj.chickenkiller.com (84.63.173.131): 56 data bytes
64 bytes from 84.63.173.131: icmp_seq=0 ttl=64 time=2.668 ms
这很麻烦,因为我已经对网络上的大多数服务设置了防火墙(因此,如果 serv2 解析为 192.168.2.4,则打印可以进行,如果解析为外部地址,则打印失败)
您知道如何让我的 Mac Book 使用本地 DNS 服务吗?
编辑:scutil --dns 的输出:
nick@deathrow:~$ scutil --dns
DNS configuration
resolver #1
search domain[0] : njj.chickenkiller.com
nameserver[0] : 192.168.2.4
if_index : 4 (en0)
flags : Request A records
reach : Reachable, Directly Reachable Address
resolver #2
domain : local
options : mdns
timeout : 5
flags : Request A records
reach : Not Reachable
order : 300000
resolver #3
domain : 254.169.in-addr.arpa
options : mdns
timeout : 5
flags : Request A records
reach : Not Reachable
order : 300200
resolver #4
domain : 8.e.f.ip6.arpa
options : mdns
timeout : 5
flags : Request A records
reach : Not Reachable
order : 300400
resolver #5
domain : 9.e.f.ip6.arpa
options : mdns
timeout : 5
flags : Request A records
reach : Not Reachable
order : 300600
resolver #6
domain : a.e.f.ip6.arpa
options : mdns
timeout : 5
flags : Request A records
reach : Not Reachable
order : 300800
resolver #7
domain : b.e.f.ip6.arpa
options : mdns
timeout : 5
flags : Request A records
reach : Not Reachable
order : 301000
DNS configuration (for scoped queries)
resolver #1
search domain[0] : njj.chickenkiller.com
nameserver[0] : 192.168.2.4
if_index : 4 (en0)
flags : Scoped, Request A records
reach : Reachable, Directly Reachable Address
编辑(2):我使用 namebench 测试了我的 DNS 服务器(在远程 Linux 客户端上运行)的响应时间,其余的是这里。我的服务器显示为 SYS-127.0.1.1。我不是这方面的专家,但与替代方案相比,它的性能看起来还不错
编辑 3:输出自dns-sd
Last login: Thu Mar 9 07:04:41 on console
jay@sol3:~$ dns-sd -q njj.chickenkiller.com 255 255
DATE: ---Sat 11 Mar 2017---
9:56:51.048 ...STARTING...
Timestamp A/R Flags if Name Type Class Rdata
9:56:52.055 Add 2 0 njj.chickenkiller.com. ANY 25 0.0.0.0 No Such Record
9:57:48.377 Add 2 0 njj.chickenkiller.com. ANY 25 0.0.0.0 No Such Record
9:58:43.590 Add 2 0 njj.chickenkiller.com. ANY 25 0.0.0.0 No Such Record
9:59:39.598 Add 2 0 njj.chickenkiller.com. ANY 25 0.0.0.0 No Such Record
10:00:06.548 Add 2 0 njj.chickenkiller.com. AAAA IN 0.0.0.0 No Such Record
10:00:06.633 Add 2 0 njj.chickenkiller.com. Addr IN 84.63.173.131
10:00:34.965 Rmv 1 0 njj.chickenkiller.com. Addr IN 84.63.173.131
10:00:34.965 Add 2 0 njj.chickenkiller.com. ANY 25 0.0.0.0 No Such Record
10:01:30.629 Add 2 0 njj.chickenkiller.com. ANY 25 0.0.0.0 No Such Record
10:02:26.753 Add 2 0 njj.chickenkiller.com. ANY 25 0.0.0.0 No Such Record
10:03:22.282 Add 2 0 njj.chickenkiller.com. ANY 25 0.0.0.0 No Such Record
10:04:18.329 Add 2 0 njj.chickenkiller.com. ANY 25 0.0.0.0 No Such Record
10:05:14.342 Add 2 0 njj.chickenkiller.com. ANY 25 0.0.0.0 No Such Record
10:06:10.251 Add 2 0 njj.chickenkiller.com. ANY 25 0.0.0.0 No Such Record
10:07:06.042 Add 2 0 njj.chickenkiller.com. ANY 25 0.0.0.0 No Such Record
10:08:01.278 Add 2 0 njj.chickenkiller.com. ANY 25 0.0.0.0 No Such Record
10:08:57.289 Add 2 0 njj.chickenkiller.com. ANY 25 0.0.0.0 No Such Record
10:09:52.916 Add 2 0 njj.chickenkiller.com. ANY 25 0.0.0.0 No Such Record
10:10:48.523 Add 2 0 njj.chickenkiller.com. ANY 25 0.0.0.0 No Such Record
10:11:44.831 Add 2 0 njj.chickenkiller.com. ANY 25 0.0.0.0 No Such Record
10:12:40.842 Add 2 0 njj.chickenkiller.com. ANY 25 0.0.0.0 No Such Record
10:13:36.158 Add 2 0 njj.chickenkiller.com. ANY 25 0.0.0.0 No Such Record
10:14:32.105 Add 2 0 njj.chickenkiller.com. ANY 25 0.0.0.0 No Such Record
编辑 4:这个问题得到了回答这里