/ etc / resolver /文件可以在Mountain Lion中用于DNS解析吗?


31

谁能告诉我在/ etc / resolver下添加文件是否可以通过DNS服务器(而不是通过DHCP分发)使用DNS服务器进行DNS解析?

我的问题是,我想将OpenDNS用于客户端的家庭DNS解析,以便利用过滤和防欺诈功能,但是最大的缺点是,在澳大利亚,诸如Apple内容之类的内容是由CDN(Akamai)提供的,然后将使用基于美国的交付点来服务器内容。

我想做的是通过DHCP将DNS服务器地址分发为本地路由器地址(使用OpenDNS DNS服务器的DNSMasq),然后,例如,在下面的/ etc / resolver下放置一个名为apple.com的文件:

nameserver 203.12.160.35

这个想法是,任何对apple.com的DNS请求都将由TPG(我的ISP)DNS服务器而不是使用OpenDNS服务器的本地路由器DNSMasq守护程序来解决。

所以我这样做了,scutil --dns的输出是:

DNS configuration

resolver #1
  search domain[0] : harland
  nameserver[0] : 192.168.10.1
  nameserver[1] : 192.168.10.1
  if_index : 4 (en2)
  reach    : Reachable,Directly Reachable Address

resolver #2
  domain   : local
  options  : mdns
  timeout  : 5
  order    : 300000

resolver #3
  domain   : 254.169.in-addr.arpa
  options  : mdns
  timeout  : 5
  order    : 300200

resolver #4
  domain   : 8.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 300400

resolver #5
  domain   : 9.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 300600

resolver #6
  domain   : a.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 300800

resolver #7
  domain   : b.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 301000

resolver #8
  domain   : apple.com
  nameserver[0] : 8.8.8.8

DNS configuration (for scoped queries)

resolver #1
  search domain[0] : harland
  nameserver[0] : 192.168.10.1
  nameserver[1] : 192.168.10.1
  if_index : 4 (en2)
  flags    : Scoped
  reach    : Reachable,Directly Reachable Address
macbookair:resolver

现在,apple.com上的nslookup的输出为:

macbookair:resolver ilium007$ nslookup apple.com
Server:     192.168.10.1
Address:    192.168.10.1#53

Non-authoritative answer:
Name:   apple.com
Address: 17.149.160.49
Name:   apple.com
Address: 17.172.224.47

macbookair:resolver 

因此,我没有使用TPG DNS服务器-我仍在针对本地路由器192.168.10.1进行解析。解析程序的顺序重要吗?即。将apple.com文件放在/ etc / resolver中后创建的条目是解析器#8:

resolver #8
  domain   : apple.com
  nameserver[0] : 8.8.8.8

我真的很想做一个这项工作-任何帮助将不胜感激。

Answers:


43

这个问题似乎有点老了,但是由于我有类似的问题,我还是要回答这个问题:

是的,这可行。

您的第一个问题是,您显然在中输入了错误的IP(8.8.8.8而不是203.12.160.35/etc/resolver/apple.com。验证此文件的内容确实是:

nameserver 203.12.160.35

然后scutil --dns应该有一个这样的条目:

resolver #8
  domain   : apple.com
  nameserver[0] : 203.12.160.35

第二个问题是,您尝试使用来验证它nslookup。如果你看一下手册页不使用OS X.的DNS解析机制nslookup,你会发现这一点:

Mac OS X NOTICE
   The nslookup command does not use the host name and address resolution or the DNS 
   query routing mechanisms used by other processes running on Mac OS X.  The results of 
   name or address queries printed by nslookup may differ from those found by other
   processes that use the Mac OS X native name and address resolution mechanisms. The 
   results of DNS queries may also differ from queries that use the Mac OS X DNS routing 
   library.

检查您的DNS配置,您可以执行

dns-sd -G v4 images.apple.com

并验证其产生的IP是否与

nslookup images.apple.com 203.12.160.35

1
还值得注意的是,这可用于为特定顶级域指定名称服务器。例如,如果文件名为“ dev”,则“ example.dev”的所有查找将发送到该名称服务器。这对于公司Intranet很有用,尤其是当您不在公司LAN上时(例如:连接到VPN时)
Abhi Beckert

2
Your first problem is that you obviously have the wrong IP (8.8.8.8)不必要; 8.8.8.8并且8.8.4.4是Google的DNS服务器。他们如何获得这些八位位组已经超出了我的范围。
Qix

3
从10.10开始,似乎没有/ etc / resolver目录。
sorin 2014年

2
您需要在10.10中自己创建它。
艾伦·舒特科
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.