雪豹升级后 DNS 名称查找(以前是 SSH)不起作用

Pet*_*ona 17 domain-name-system ssh mac-osx

认为这是从雪豹更新开始的。清理了 .ssh 目录,仍然有问题。

~: uname -a
Darwin california-example-com.local 10.0.0 Darwin Kernel Version 10.0.0: Fri Jul 31 22:47:34 PDT 2009; 根:xnu-1456.1.25~1/RELEASE_I386 i386

~: ssh -V
OpenSSH_5.2p1,OpenSSL 0.9.8k 2009 年 3 月 25 日

~: ls -l ~/.ssh

~: nslookup 内华达
服务器:10.94.62.3
地址:10.94.62.3#53

名称:nevada.example.com
地址:10.94.62.3

~: ssh 内华达
ssh:无法解析主机名内华达:提供节点名或服务名,或未知

Che*_*ion 18

我遇到了完全相同的问题,并在 Apple 的讨论中找到了一个关于Mac mini 有 DNS 问题的帖子,非常有帮助。

问题的症结在于:mDNSResponder 似乎偶尔会更改它查询的 DNS 服务器的顺序,因此如果它首先查询您的 ISP 的 DNS 服务器,它将不会获得正确的记录(或者如果您使用的是拆分 DNS,您将获得您的公共 IP)。

对此的最佳解决方法是确保(正如您所做的那样)在您的 DNS 设置中仅列出所需的 DNS 服务器。这可能需要从您的 DHCP 中删除 ISP DNS 服务器(因为我也必须这样做 - 无论如何,所有请求都通过本地 DNS 服务器转发)。

实用程序喜欢dig并且nslookup会照常成功的原因是它们使用 BIND 并且/etc/resolv.conf直接不同于操作系统的其余部分。

作为 Snow Leopard 中的参考,DNS 缓存现在由 mDNSResponder 存储,为了清除它,您需要使用sudo killall -HUP mDNSResponder. 您可以通过对killall命令使用不同的标志来获取更多信息(日志记录、转储内部状态等)。

"sudo killall -USR1 mDNSResponder" to enable operation logging.
"sudo killall -USR2 mDNSResponder" to enable packet logging.
"sudo killall -HUP mDNSResponder" to clear the DNS cache.
"sudo killall -INFO mDNSResponder" to dump mDNSRepsonder's internal state.
Run Code Online (Sandbox Code Playgroud)

资料来源:同一线程上的Snoop Dogg


小智 9

我们遇到了这样的问题:

host example.com     <<< WORKED
ping example.com     <<< FAILED
Run Code Online (Sandbox Code Playgroud)

解决了这样的事情:

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
Run Code Online (Sandbox Code Playgroud)

Mac OS X 上的应用程序不使用与“host/dig/nslookup”相同的 DNS 机制。

使用“host/dig/nslookup”有助于确定这不是网络问题。这是通过上述命令解决的本地系统问题。