iMac 无法解析某些网站的 DNS(或找到到主机的路由?),但 Windows 可以?

iMac 无法解析某些网站的 DNS(或找到到主机的路由?),但 Windows 可以?

在我的家庭网络中,我有几台 Windows PC,它们没有 DNS 问题,但在我的 OSX iMac 上,我在解析几个随机域名时遇到了问题。我遇到问题的一些域名是:

  • 易好网
  • about.com
  • 国家购物服务网

除了看看/etc/hosts文件(我认为没问题)我应该在 iMac 上检查哪些与 DNS 相关的问题,或者我应该使用什么工具来帮助诊断我所面临的问题?

使用 dig 命令我得到:

; <<>> DiG 9.4.3-P3 <<>> @4.2.2.2 www.nationalshoppingservice.com
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3468
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.nationalshoppingservice.com. IN    A

;; ANSWER SECTION:
www.nationalshoppingservice.com. 14400 IN A 64.40.111.81

;; Query time: 86 msec
;; SERVER: 4.2.2.2#53(4.2.2.2)
;; WHEN: Tue Apr 12 18:22:42 2011
;; MSG SIZE  rcvd: 65

尝试了一些建议后,我认为 DNS 是错误的问题...当我对 www.nationalshoppingservice.com 进行 ping 时,我得到的是:

PING www.nationalshoppingservice.com (64.40.111.81): 56 data bytes
ping: sendto: No route to host
ping: sendto: No route to host
ping: sendto: No route to host
ping: sendto: No route to host

所以这看起来像是 DNS 正在解析,但找不到到主机的路由?这是怎么回事?

答案1

命令行将成为您的朋友。首先,您可能根本没有 DNS 问题。您需要先确定这一点。这项工作的最佳工具是dig。打开终端并输入

dig @4.2.2.2 ehow.com

该命令的组成部分:

dig          :   the command
@4.2.2.2     :   this tells dig where to ask.  We are specifically asking a
                 known provider in this case Level3.  You could easily put
                 8.8.8.8 (Google) or any other provider here.
ehow.com     :   the domain you wish to query for.

您将获得如下输出:

; <<>> DiG 9.7.2-P2 <<>> @4.2.2.2 ehow.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43699
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;ehow.com.          IN  A

**;; ANSWER SECTION:
ehow.com.       118 IN  A   98.124.249.20**

;; Query time: 1 msec
;; SERVER: 4.2.2.2#53(4.2.2.2)
;; WHEN: Mon Apr 11 01:51:12 2011
;; MSG SIZE  rcvd: 42

答案部分是重点。如果您得到答案,则说明您的 iMac 没问题,并且它可以“获得”该域的访问权限。

下一步是将 @4.2.2.2 替换为您常用 DNS 服务器的 IP 或主机名。这通常由您的 ISP 提供给您。如果您得到相同的答案,则说明 DNS 不是您的问题,您可以开始查找其他地方。您还需要执行这些测试几次,以确保获得良好的响应时间。如果您得到:

;; connection timed out; no servers could be reached

然后您就知道您没有收到响应。如果这种情况间歇性发生,您可能会在 iMac 上比在 Windows 机器上更频繁地注意到这种情况,这是因为缓存的原因。根据我的经验,我发现 Windows 机器缓存 DNS 响应的时间比 Mac 更长。

答案2

要解决 Mac OS X 上的 DNS 问题,您必须使用传统的 Unix DNS 查找工具(如(选择一个:)hostdignslookup),以及调用 Mac OS X 特定的 DNS 查找 API 的现代工具,例如dns-sd -Q

大多数 Cocoa 应用程序调用的 DNS 查找 API 都通过mDNSResponder守护进程进行路由,这意味着如果您的 GUI 应用程序遇到 DNS 查找问题,则dns-sd -Q可能会显示同样的内容。

传统的 Unix DNS 查找工具使用更传统的 Unix DNS 解析器代码,这意味着它们可能能够解决 Cocoa 应用程序无法解决的问题(反之亦然)。

如果您可以使用 查找某些内容dig但不能使用dns-sd,那么您可以尝试终止mDNSResponder守护进程并让其launchd自动重新启动(我发现 HUPping mDNSResponder 并不总是足够的)。

sudo killall mDNSResponder

答案3

您的 iMac 上是否安装了任何 IP 阻止软件或类似软件?

另外,尝试进入“首选项”->“网络”->“高级”->“DNS”并重置您的 DNS 条目;删除任何多余的条目。

如果这不起作用,请尝试(暂时)在您的 iMac 上创建一个新帐户,或登录另一个帐户,看看您是否可以从这些帐户访问网站。

答案4

要测试某些内容,您可以转到“首选项”->“网络”->“高级”->“DNS”,然后为 Google 的公共 DNS 8.8.8.8 添加 DNS 条目。如果这解决了问题,那么您将必须弄清楚路由器在分发 IP 地址和 DNS 信息时使用的 DHCP 设置是什么。如果您的路由器从 ISP 获取 DNS 信息,那么这可能是您的问题,可能只是响应缓慢。您不必使用 ISP 的 DNS 设置。

我经常使用 8.8.8.8 进行测试,但主要使用 Opendns 来增加控制。

希望有帮助

相关内容