如何为OSX Mountain LionconfigurationDNS查找?

如果我抓住我的resolv.conf,我看到这个消息:

# # Mac OS X Notice # # This file is not used by the host name and address resolution # or the DNS query routing mechanisms used by most processes on # this Mac OS X system. # # This file is automatically generated. # 

我正在尝试添加一个DNS条目。 我编辑我的主机文件,并刷新DNScaching,但名称不解决,如果我使用host servername 。 我想也许这个host没有configuration看hosts文件。 我怎样才能让我的新条目解决,什么是OSX使用,如果不是resolv.conf

    主机工具不会简单地parsing名称 (如使用系统名称parsing器),而是实际查询DNS服务器 (如将数据包发送到udp / 53和可能的tcp / 53):它不知道也不使用本地hosts文件。

    如果你想testing操作系统的parsing器(例如,gethostbyname()和类似的libc函数),你可以尝试ping你添加到/etc/hosts的名字,它会尊重你放入该文件的内容。

    此外,正如您已经发现在Mac OSX上的DNS查找不使用/etc/resolv.conf ,并且configuration哪个DNS服务器的正确方法是在networking设置gui和/或networksetup命令行工具中。 我真的不知道你是否可以configuration尝试源码的顺序,但标准的行为是首先尝试/etc/hosts然后是dns服务器。

    可以通过networksetup命令在OS X中添加DNSparsing器:

     sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4 

    根据需要插入networking连接的名称。 这些parsing器将在resolv.conf中自动生成,但直接编辑到resolv.conf将不会导致正在使用这些parsing器。 我假设parsing器存储在一个plist的地方; 我会search并回报。

    编辑添加:它看起来像存储DNS服务器的XML plist文件是/Library/Preferences/SystemConfiguration/preferences.plist

    / private / etc / hosts中的主机文件应该强制parsing特定名称(/ etc是/ private / etc的符号链接)。 你可以validation你的语法,并且你正在编辑正确的文件吗?