如果我抓住我的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你的语法,并且你正在编辑正确的文件吗?