我在小型本地网络上的 ubuntu 服务器上设置了 dnsmasq,该服务器有多个客户端,包括一些 Windows 和一些 OS X。Windows 客户端运行良好。OS X 客户端遇到了经典的“dig 可以工作但 ping 不可以”问题。我做了一些研究,但找不到有关 OS X 的 DNS 解析工作方式的信息。我只能找到文档,告诉我它不使用与 dig 相同的工具。
我的问题是:为什么我的 Windows 客户端和 OS X 上的 dig 可以正确解析由 dnsmasq 配置的本地名称,但 OS X 系统却不能?我怀疑这与 dnsmasq 不提供 SOA 记录有关,但我不确定。我也尝试过使用 bind9,但似乎无法正确配置它。
以下是我的 dnsmasq 配置文件的内容:
no-dhcp-interface=en0
address=/neptune.local/neptune/192.168.42.2
no-resolv
server=8.8.8.8
server=8.8.4.4
答案1
如果dig
无需指定特定名称服务器即可运行,则您的服务器和 Mac OS 客户端可能都配置正确。您的 Mac 可能缓存了负面的 DNS 结果。(dig
绕过缓存运行 DNS 查询;ping
使用使用缓存的系统名称解析器。)要清除缓存,请运行sudo dscacheutil -flushcache
(Mac OS ≤ 10.6)或sudo killall -HUP mDNSResponder
(Mac OS ≥ 10.7)。