我最近遇到一个特别难搞的网络问题,我的一个虚拟机在内网可以正常使用,但是不能访问外网。下面是我的调试步骤(ubuntu):
1 直接 ping baidu.com 发现需要等待 1分钟左右,发错错误是 unknown host baidu.com
发现这个错误之后,我的第一判断就是 DNS 配置错误,
2 直接修改 /etc/network/interfaces 文件,修改配置正确的 DNS,重启 network。发现还是还是未知主机错误
3 判断是否是由于 route table 配置的有问题,使用 ip route 查看路由配置,发现路由配置确实有点问题,使用 ip route add default via 172.16.0.1 dev en0 配置为正确的 route table
测试还是同样的错误 unknown host baidu.com
4 判断是否是DNS 源存在问题,ping 114.114.114.114 发现错误原因是网络不可达
5 判断是否为网关是否有问题,ping 172.16.0.1 发现也出现错误为网络不可达,内网的其他 ip 都可以访问,就这个网关不能访问
6 判断问题应该是出现在 arp 的 ip 和 mac 地址对应不上
7 ip neigh list 查看 arp 缓存,发现网关对应的请求记录是 FAIL,删除缓存。这时候我发现
arp 缓存的状态居然在一直变化:delay,failed,stale,incomplete,probe
8 使用 arp 发送 arp 请求,绝大部分时候我们都能请求到正确的返回值,但是花费的时候比较长(预计在1分钟左右)
9 arp 请求讲道理应该非常快,不可能会这么慢,虽然 arp 请求以及返回正确值了
10 判断是否是路由出了问题,使用差错报文协议中命令 traceroute 172.16.0.1 范文网关,但是结果是:
traceroute/traceroute -n 172.16.0.1
traceroute to 172.16.0.1 (172.16.0.1), 30 hops max, 60 byte packets
1 * * *
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
8 * * *
9 * * *
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *
这个时候我已经不知道该怎么办了, 刘老师,我这里的问题是出现在哪里了
展开