如何为 OSX Mountain Lion 配置 DNS 查找?

Ben*_*ynn 35 domain-name-system resolv.conf hosts mac-osx

如果我查看我的 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.
#
Run Code Online (Sandbox Code Playgroud)

我正在尝试添加 DNS 条目。我编辑了我的主机文件并刷新了 dns 缓存,但是如果我使用host servername. 我想也许host没有配置为查看hosts文件。我怎样才能解决我的新条目,如果没有,OSX 使用什么resolv.conf

pho*_*bus 27

可以通过以下networksetup命令在 OS X 中添加 DNS 解析器:

sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4
Run Code Online (Sandbox Code Playgroud)

根据需要插入网络连接的名称。这些解析器将出现在 resolv.conf 中,因为它是自动生成的,但对 resolv.conf 的直接编辑不会导致使用这些解析器。我假设解析器存储在某个地方的 plist 中;我会搜索并报告。

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

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

  • 是否可以将解析器配置为使用与 53 不同的端口? (6认同)

Luk*_*404 17

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

如果您想测试操作系统的解析器(如 gethostbyname() 和类似的 libc 函数),您可以尝试 ping 您添加的名称/etc/hosts,它会尊重您放入该文件的内容。

此外,您已经发现 Mac OSX 上的 DNS 查找不使用/etc/resolv.conf,配置查询哪些 DNS 服务器的正确方法是在网络设置 gui 和/或networksetup命令行工具中。老实说,我不知道您是否可以配置尝试来源的顺序,但标准行为是先尝试,/etc/hosts然后再尝试dns 服务器。