Mavericks:ping 的解析方式与 dig 不同

Mavericks:ping 的解析方式与 dig 不同

我的 MBP 上运行着 BIND9,其中有一个 TLD dev 区域。然后我/etc/resolver/dev设置了该线路nameserver 127.0.0.1,以便仅使用我的本地 BIND 服务器执行该 TLD 的解析。

如果我 ping 区域文件中的条目dev(例如ping test.dev),ping 会正确解析主机,127.0.0.1因为 BIND 配置为返回。但是,如果我使用 dig 查找该主机的 DNS 记录(例如dig test.dev),我会得到以下结果:

; <<>> DiG 9.9.4 <<>> test.dev
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28496
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;test.dev.          IN  A

;; ANSWER SECTION:
test.dev.       0   IN  A   67.215.65.132

;; Query time: 51 msec
;; SERVER: 208.67.222.222#53(208.67.222.222)
;; WHEN: Wed Dec 11 09:04:00 EST 2013
;; MSG SIZE  rcvd: 52

因此 dig 使用为所有查询配置的 DNS 服务器,而不是像 ping 那样经过本地解析过程。更有趣的是,我非常确信这在 Mavericks 上也能正常工作,因为我已将其放入我自己通过执行该过程创建的安装指南中。

dig 的解析方式与 ping 的解析方式不同,有什么原因吗?

答案1

如果你查看 OS X 上 dig 的手册页,你会看到以下免责声明。

Mac OS X 通知

dig 命令不使用在 Mac OS X 上运行的其他进程所使用的主机名和地址解析或 DNS 查询路由机制。dig 打印的名称或地址查询结果可能与使用 Mac OS X 本机名称和地址解析机制的其他进程找到的结果不同。DNS 查询结果也可能与使用 Mac OS X DNS 路由库的查询结果不同。

因此我认为 ping 必须使用 Mac OS X 本机名称解析机制。

相关内容