Snow Leopard升级后,DNS名称查找(为SSH)无法正常工作


14

认为这始于Snow Leopard更新。清除.ssh目录,仍然有问题。

〜:ame -a
达尔文(Darwin)california-example-com.local 10.0.0达尔文(Darwin)内核版本10.0.0:2009年7月31日星期五太平洋夏令时间22:47:34;根目录: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:无法解析主机名nevada:提供的节点名或服务名,或者未知

您可以切换到(a)nevada.example.com和(b)10.94.62.3吗?
斯文

2
你能ping内华达州吗?“ ssh -v nevada”显示什么?
markdrayton

奇怪的问题;您使用拆分DNS和/或可以ping内华达州吗?
Chealion

感谢您的跟进...答案:ssh nevada.example.com =否ssh 10.94.62.3 =是(并且必须确认主机密钥,因为我清除了已知主机)ping nevada =名称解析问题telnet nevada(tho它不能运行telnetd)=名称解析问题拆分DNS =并非故意,不知道它是什么:-)从OS X网络设置窗格中,我得到10.94.62.3作为DNS服务器,在提供两者之前列出由我的ISP和example.com在搜索域列表中。我网络上的其他系统通常可以使用DNS SSH到内华达州(及其他)。
彼得·卡多纳

很抱歉上述评论中没有换行符...
Peter Cardona

Answers:


16

我遇到了完全相同的问题,发现有关Mac mini的一个线程对Apple的“讨论”非常有帮助。

问题的症结所在: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.

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


谢谢,谷歌搜索将我引到了这里,这已经解决了。“ arp”报告错误的IP,“ dig”报告正确的“ ip”。在尝试此操作之前,没有大量的dns刷新修复它。我确实注意到我也必须执行dscacheutil -flushcache。我还要指出,本地路由器的行为可能很奇怪,ISP有时在TTL方面也不公平。
2011年

9

我们有这样的问题:

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上的应用程序对DNS使用的机制与“主机/摘要/ nslookup”不同。

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


哇,行得通!!!我一直在到处寻找解决方案!!!!我正要格式化和恢复笔记本电脑,您为我节省了很多时间!谢谢!抱歉,我不能给予好评:-(注:我的DNS停止工作后,我跑的Util缟玛瑙,不知道为什么我能够使用dig / Nslookup的,但没有别的。

2

我也遇到过同样的问题……而且,在重新启动mDNSResponder时似乎确实可以“工作”,但每小时重新启动几次却很糟糕。

因此,到目前为止,我已经通过在本地运行dnsmasq来 “解决”了该问题。要做到这一点:

  • 构建dnsmasq(下载tgz和makebrew install dnsmasq
  • 将其放在dnsmasq.conf文件中:
resolv-file = resolv.conf
用户=没人
组=没人
接口= lo0
缓存大小= 1024
  • 将其放入与该resolv.conf文件位于同一目录中的dnsmasq.conf文件中(nb:not /etc/resolv.conf):
域名服务器8.8.8.8
域名服务器4.2.2.1
域名服务器4.2.2.2
  • 运行dnsmasqsudo dnsmasq --no-daemon --log-queries -C dnsmasq.conf。输出应类似于:
...
dnsmasq:阅读resolv.conf
dnsmasq:使用名称服务器4.2.2.1#53
dnsmasq:使用名称服务器4.2.2.2#53
dnsmasq:使用名称服务器8.8.8.8#53
dnsmasq:读取/ etc / hosts-6个地址
  • 打开网络首选项,并确保这127.0.0.1是唯一的DNS服务器(网络首选项->高级-> DNS->添加127.0.0.1)

事情应该又开始很好地工作了。

一旦一切正常,您就可以在dnsmasq不使用--no-daemon--log-queries选项的情况下运行,因此它将在后台启动,并且您无需保持终端窗口打开。


1

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

不知道为什么这样做。


1

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

我相信问题出在searchdomains配置之内:ping / ssh尝试使用gethostbyname2()它失败,因为named不再运行了(至少在Lion中),/etc/resolv.conf因此已配置的searchdomains被忽略了。/etc/hosts是最后的选择gethostbyname2(),因此ssh在/etc/hosts。应该由苹果恕我直言解决。


0

您是否尝试过nevada-example-com.local?


没有尝试过,但是有相同的分辨率问题。看起来好像什么都没有(ssh,telnet,ping,http)通过nslookup默认使用的服务器进行解析。怎么可能 OS X级别设置与基础BSD实现所关心的/ etc / whatever文件之间是否可能存在冲突?
彼得·卡多纳

不,OS X不使用初始化级别-甚至不使用BSD系统。
杰里米·L

0
dscacheutil -flushcache

该命令将刷新您的DNS缓存。

10.94.62.3是您信任的DNS服务器吗?如果是这样,为什么只有一个?为了故障转移目的,您至少应有2个DNS服务器可供参考。如果那只狗掉下来,那你就是坐鸭。


0

DNS订单查找在Snow Leopard中的工作方式似乎有所不同。如果您无法查找域,请检查网络首选项中是否有任何无效的DNS服务器。如果您使用标准的DHCP设置,则不应列出任何DNS服务器。在进行升级之前,我列出了一个旧的DNS服务器,它没有任何影响。升级后,我完全失去了dns。

打开“网络偏好设置”>“选择机场”>“高级”。选择“ DNS”选项卡,然后删除所有无效的DNS服务器。


0

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

如果由于另一个正在加载模块的程序(例如Little Snitch或Hands Off)而崩溃,则可能会在其中看到它。


-1

我使用nslookup解决Windows框时遇到了同样的问题,但是ping给了我一个“未知主机”。我尝试了Navdeep的建议,然后在“网络偏好设置”->“高级”->“ DNS”选项卡中清除了名称服务器。它不会让我减去它们,它们是灰色的。我终于按下+,他们消失了。一旦没有DNS服务器显示,我取消了添加新的更改并应用更改。此后,Ping开始工作。奇怪的是,我的本地路由器/ DHCP服务器是列表中的第一台服务器,并且是负责解决Windows框的服务器。订购一定很奇怪。列出的另一个名称服务器是一个工作NS,将无法解析Windows主机。感谢Navdeep!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.