连接超时; 无法访问服务器错误

QPT*_*PTR 8 virtualbox networking dns 14.04

在尝试 ping www.google.com 时,我收到错误消息:

;; 连接超时; 无法访问任何服务器

我既无法运行 sudo apt-get update 也无法访问任何网页。所以我编辑了我的 /etc/resolv.conf 文件以包含 OpenDNS 服务器,所以它看起来像这样:

~$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# OpenDNS IPv4 nameservers
nameserver 208.67.222.222
nameserver 208.67.220.220
Run Code Online (Sandbox Code Playgroud)

但是,我仍然遇到相同的错误:

~$ host -v www.google.com 尝试“www.google.com”;; 连接超时; 无法访问任何服务器

我也用dig试了一下,结果是:

:~$ 挖@8.8.8.8 www.google.com

; <<>> DiG 9.9.5-3ubuntu0.4-Ubuntu <<>> @8.8.8.8 www.google.com ;(找到 1 个服务器);; 全局选项:+cmd ;; 连接超时; 无法访问任何服务器

任何人都可以帮我解决问题吗?我在 VirtualBox 上运行 Ubuntu 14.04。

编辑:

ifconfig 的输出:

eth0      Link encap:Ethernet  HWaddr 08:00:27:6a:81:38  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe6a:8138/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8368 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5197 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:7814822 (7.8 MB)  TX bytes:467136 (467.1 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:409 errors:0 dropped:0 overruns:0 frame:0
          TX packets:409 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:42236 (42.2 KB)  TX bytes:42236 (42.2 KB)
Run Code Online (Sandbox Code Playgroud)

ip路由的输出:

~$ ip route default via 10.0.2.2 dev eth0  proto static 
10.0.2.0/24 dev eth0  proto kernel  scope link  src 10.0.2.15  metric 1
Run Code Online (Sandbox Code Playgroud)

小智 15

一旦我遇到相同的情况并且重新启动并没有解决问题,这里是我可以帮助找到问题的简单步骤:

  1. 检查互联网连接
ping 8.8.8.8
Run Code Online (Sandbox Code Playgroud)

如果目标不可达,请检查您的网关 10.0.2.2 是否可达。并解决问题。

如果连接正常,您会看到如下内容:

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=46 time=4.13 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=46 time=4.13 ms
Run Code Online (Sandbox Code Playgroud)
  1. 检查 host/dig 是否正确发送数据包:
sudo tcpdump -n -i en0  host 8.8.8.8   
Run Code Online (Sandbox Code Playgroud)

同时从同一台机器的另一个控制台

dig @8.8.8.8 www.google.com
Run Code Online (Sandbox Code Playgroud)

您将得到类似于以下内容的响应:

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
13:34:00.980550 IP 10.0.2.15.56570 > 8.8.8.8.53: 47059+ A? google.com. (27)
13:34:05.980541 IP 10.0.2.15.56570 > 8.8.8.8.53: 47059+ A? google.com. (27)
Run Code Online (Sandbox Code Playgroud)

这意味着请求已传递到外部网络但没有返回......

您可以通过分析防火墙规则的输出来检查防火墙的功能:

iptables -n -L
Run Code Online (Sandbox Code Playgroud)

问题可能来自您和 208.67.222.222 或 208.67.220.220 或 8.8.8.8 之间的任何防火墙

在我的情况下,提供商的防火墙恰巧阻止了来自 53 端口的传入 UDP 数据包。

从而更正提供商防火墙规则解决了这个问题。

希望这个分析对某人有帮助。