OS / X" etc / resolver / dev"不工作 - 为什么不呢?

时间:2018-06-18 16:57:14

标签: macos dns resolver

我希望能够使用在我的OS / X (High Sierra)系统上的VM中运行的DNS服务器来解析DNS名称www.foobar.dev,因为我已创建包含以下一行的/etc/resolver/dev文件:(指定VM的虚拟地址)

nameserver ww.xx.yy.zz

...但dig www.foobar.dev继续咨询互联网名称服务器,

dig @ww.xx.yy.zz www.foobar.dev成功从VM的DNS中检索条目。

我已使用dscacheutil命令确保错误的条目不在DNS解析器缓存中。

那么,为什么不存在/etc/resolver/dev文件,其中指定的内容足以指导" anything.dev"到指定的DNS服务器?

有趣的是 - 有时它似乎有效。此外,命令scutil --dns生成以下预期条目,这似乎表示正在检测/etc/resolver/dev文件

resolver #8
  domain   : dev
  nameserver[0] : ww.xx.yy.zz
  flags    : Request A records
  reach    : 0x00020002 (Reachable,Directly Reachable Address)

3 个答案:

答案 0 :(得分:5)

它可能工作正常,你只是测试错了。 dig(以及hostnslookup)不使用系统解析程序,也不会完全实现系统解析程序的查找策略。因此,它们对于测试DNS系统本身非常有用,但不能用于测试操作系统如何使用DNS。测试系统解析器的官方方法是dscacheutil(例如dscacheutil -q host -a name www.foobar.dev),但这很烦人,所以我倾向于使用ping并查看它报告的IP

答案 1 :(得分:0)

正如@GordonDavisson在其他答案中所说-ping命令对于系统解析器测试很有用。我的补充是,由于DNS缓存,它也可能会失败。不要忘记清除它:

sudo killall -HUP mDNSResponder

答案 2 :(得分:0)

最好用真实的DNS配置替换/etc/resolver文件,就像/etc/resolv.conf一样,保留所有旧文件只是为了向后兼容(也许是因为POSIX要求?)。

Here's how you can do it from command line使用scutil,真的很简单。

当然,这还有一个编程接口。
请参阅苹果公司的SystemConfiguration Framework