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

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

当我尝试 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

但是,我仍然收到同样的错误:

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

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

:~$ 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)

ip route 的输出:

~$ 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

答案1

当我遇到同样的情况并且重新启动无法解决问题时,以下是我的简单步骤,可以帮助找到问题:

  1. 检查互联网连接
ping 8.8.8.8

如果目的地无法到达,请检查网关 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
  1. 检查 host/dig 是否正确发送数据包:
sudo tcpdump -n -i en0  host 8.8.8.8   

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

dig @8.8.8.8 www.google.com

您将收到类似如下的回应:

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)

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

您可以通过分析防火墙规则的输出来检查防火墙正在做什么:

iptables -n -L

问题可能出在您和 208.67.222.222 或 208.67.220.220 或 8.8.8.8 之间的任何防火墙上

就我而言,提供商的防火墙恰好阻止了来自 53 端口的传入 UDP 数据包。

因此,修正提供商防火墙规则可以解决问题。

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

答案2

我遇到了同样的问题,ping google DNS 8.8.8.8,但无法解析 google 或任何网站。问题出在防火墙 acl 上;NAT 在那里,所以 ping 没问题,但 ACL 中不允许子网。在 ACL 中允许子网后,有问题的子网开始工作。希望这能有所帮助。

相关内容