我在运行 Mavericks (OS 10.9.5) 的 Mac 上发现了一个奇怪的问题。我可以浏览任何网站,没有任何连接问题。但是,当我检查 nslookup 结果时,我发现了奇怪的输出。
例如,如果我尝试解析 www.rubygems.org,我会在终端上看到以下输出:
> rubygems.org
Server: 192.168.1.1
Address: 192.168.1.153
Non-authoritative answer:
Name: rubygems.org
Address: 0.1.202.53
另一个例子 - 我在访问 Facebook 网站时没有遇到任何问题。但是,当我尝试获取 traceroute 输出时,我再次看到以下内容:
traceroute to www.facebook.com (0.1.202.146), 64 hops max, 52 byte packets
traceroute: sendto: No route to host
1 traceroute: wrote www.facebook.com 52 chars, ret=-1
*traceroute: sendto: No route to host
traceroute: wrote www.facebook.com 52 chars, ret=-1
我之所以强调这些问题,是因为我在笔记本电脑上尝试配置 Vagrant 虚拟开发环境时遇到了类似的问题。
如果我尝试使用终端为 AWS(亚马逊网络服务)配置 Vagrant 插件,我会在输出中发现以下问题:
vagrant plugin install vagrant-aws
Installing the 'vagrant-aws' plugin. This can take a few minutes...
Waiting for cleanup before exiting...
Bundler, the underlying system Vagrant uses to install plugins,
reported an error. The error is shown below. These errors are usually
caused by misconfigured plugin installations or transient network
issues. The error from Bundler is:
An error occurred while installing fog-sakuracloud (0.1.1), and Bundler cannot continue.
Gem::RemoteFetcher::FetchError: Errno::EHOSTUNREACH: No route to host - connect(2) (https://rubygems.org/gems/fog-sakuracloud-0.1.1.gem)
如上所示,我无法访问该网站https://rubygems.org/gems/fog-sakuracloud-0.1.1.gem。但是,当我尝试通过浏览器访问该网站时,下载 gem 文件没有遇到任何问题。
我在终端上执行其他命令时遇到了类似的问题,这些命令涉及从互联网下载任何文件或包。
有人可以告诉我如何解决这个问题吗?
答案1
根据你的挖掘输出,您正在从 192.168.1.1(大概是您的家庭路由器/网关)接收这些 DNS 响应。
;; Query time: 3 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Mon Oct 20 20:31:00 2014
;; MSG SIZE rcvd: 46
我对 SOHO 路由器及其执行递归 DNS 的能力非常怀疑。我建议将您的 DNS 服务器更新为更具弹性的服务器。有很多可供选择,但为了简单起见,要测试并排除您的路由器,只需使用Google 的开放解析器(8.8.8.8 和 8.8.4.4)。
要在更改任何配置项之前对其进行测试,请运行以下命令:
dig rubygems.org @8.8.8.8
。在此处发布输出。当我执行此操作时,我得到了以下结果:
16:06:28-eddie@linux:~$ dig rubygems.org @8.8.8.8
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> rubygems.org @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30950
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;rubygems.org. IN A
;; ANSWER SECTION:
rubygems.org. 237 IN A 54.186.104.15
;; Query time: 11 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon Oct 20 16:06:44 2014
;; MSG SIZE rcvd: 46
答案2
该问题与 DNS 缓存有关,该缓存中填充了我在 Macbook 上运行的 VPN 软件的 DNS 表。
我重新启动了 Macbook,问题立即得到解决,因为 DNS 缓存已重置。
我后来在网上查了一下,发现不需要重新启动笔记本电脑等硬重置,尽管这是大多数人在使用 VPN 软件解决此类问题时遵循的标准做法。
也可以通过刷新 DNS 进行软重置。有一个很好的教程,介绍如何在 Windows、Mac 或 Linux 上执行此操作维基百科