当我尝试 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
当我遇到同样的情况并且重新启动无法解决问题时,以下是我的简单步骤,可以帮助找到问题:
- 检查互联网连接
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
- 检查 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 中允许子网后,有问题的子网开始工作。希望这能有所帮助。