DNS名称查找(是SSH)雪豹升级后无法使用

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

 〜:uname -a
达尔文california-example-com.local 10.0.0达尔文内核版本10.0.0:星期五7月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 nevada
 ssh:无法parsing主机名nevada:节点名或服务器名提供,或不知道

我遇到了完全相同的问题,并发现有关苹果公司的讨论DNS问题的Mac mini的线程非常有帮助。

问题的症结在于:mDNSResponder似乎偶尔会改变它所查询的DNS服务器的顺序,所以如果它首先查询你的ISP的DNS服务器,它将不会得到一个正确的logging(或者如果你使用拆分DNS,你会得到你的公共IP)。

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

dignslookup这样的工具会正常运行,原因是他们直接使用BIND和/etc/resolv.conf ,而不像其他的操作系统。

为了在Snow Leopard中参考,DNScaching现在由mDNSResponder存储,为了清除它,你需要使用sudo killall -HUP mDNSResponder重启进程。 通过对killall命令使用不同的标志,可以获得更多信息(日志logging,转储内部状态等)。

 "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. 

来源: Snoop Dogg在同一个线程。

我们有这样的问题:

 host example.com <<< WORKED ping example.com <<< FAILED 

解决这样的事情:

 sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist 

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

使用“host / dig / nslookup”对确定这不是networking问题很有用。 用上面的命令解决了本地系统是一个问题。

我遇到了同样的问题…而重新启动mDNSResponder确实似乎“工作”,重新启动它每一个小时几次糟透了。

所以,现在,我通过在本地运行dnsmasq “解决”了这个问题。 要做到这一点:

  • build立dnsmasq(下载tgz和make或者brew install dnsmasq
  • 把它放在一个dnsmasq.conf文件中:
 RESOLV文件= resolv.conf的
用户=没有人
基团=没有人
接口= lo0的
caching大小= 1024
  • 把它放在与dnsmasq.conf文件(nb: not /etc/resolv.conf )相同的目录下的resolv.conf文件中:
名称服务器8.8.8.8
域名服务器4.2.2.1
名称服务器4.2.2.2
  • 使用sudo dnsmasq --no-daemon --log-queries -C dnsmasq.conf运行dnsmasq sudo dnsmasq --no-daemon --log-queries -C dnsmasq.conf 。 输出应该如下所示:
 ...
 dnsmasq:读取resolv.conf
 dnsmasq:使用名称服务器4.2.2.1#53
 dnsmasq:使用nameserver 4.2.2.2#53
 dnsmasq:使用名称服务器8.8.8.8#53
 dnsmasq:读取/ etc / hosts  -  6个地址
  • 打开networking首选项并确保127.0.0.1是唯一的DNS服务器(networking首选项 – >高级 – > DNS – >添加127.0.0.1)

事情应该重新开始。

一旦正常工作,就可以在不使用--no-daemon--log-queries选项的情况下运行dnsmasq ,所以它将在后台启动,并且不需要保持terminal窗口打开。

我注意到我在DNS服务器列表(networking首选项窗格)中有10.94.62.3,然后是2从我的ISP。 我删除了其他2,强制所有名称查找通过10.94.62.3这个位置,现在我可以parsing我的networking上以及外部的名称。

不知道为什么这个工作。

我想我们有一个类似的问题,正如我在这里所描述的: https : //apple.stackexchange.com/questions/50457/nslookup-works-ping-and-ssh-dont-os-x-lion-10-7-3

我相信,问题在于searchdomainsconfiguration:ping / ssh尝试使用gethostbyname2() ,因为named不再运行(至less在Lion中),因此configuration的searchdomains会忽略/etc/resolv.conf/etc/hostsgethostbyname2()的最后一种方法,因此ssh会在/etc/hosts正确的input。 应该由苹果公司修复。

你有没有尝试nevada-example-com.local?

 dscacheutil -flushcache 

该命令刷新您的DNScaching。

10.94.62.3是你信任的DNS服务器吗? 如果是这样,为什么只有一个? 您应至less有2个DNS服务器来引用故障转移的目的。 如果那个人倒下了,你就是一只坐着的鸭子。

在Snow Leopard中,DNS顺序查找似乎有所不同。 如果您无法查找域名,请检查您的networking偏好设置中是否包含任何无效的DNS服务器。 如果您使用标准的DHCP设置,则不应该列出任何DNS服务器。 在我升级之前,我已经列出了一个旧的DNS服务器,并没有影响任何东西。 一旦我升级,我完全失去了DNS。

打开networking首选项>select机场>高级。 selectDNS选项卡,并删除任何无效的DNS服务器。

你看过控制台吗? (应用程序 – >实用程序 – >控制台)您可能会发现mDNSResponder显示在:诊断和使用信息 – >系统诊断报告

如果由于另一个正在加载模块的程序而导致崩溃(比如小型飞车或者closures),你可能会在那里看到它。

我有nslookup解决我的Windows盒相同的问题,但ping给我一个“未知的主机”。 我尝试了Navdeepbuild议的内容,并在networking偏好设置 – >高级 – > DNS选项卡中清除了名称服务器。 它不会让我减去它们,它们变灰了。 我终于打了+,他们消失了。 一旦没有DNS服务器显示,我取消了添加新的和应用更改。 之后,平开始工作。 奇怪的是,我的本地路由器/ DHCP服务器是名单中的第一个,是负责解决Windows框。 这一定是有点怪异的顺序。 列出的其他名称服务器是一个工作NS,并将无法解决Windows主机。 感谢Navdeep!