很长一段时间以来,我家里的 Wi-Fi 网络一直存在一个非常奇怪的问题。我有一个BT Voyager 2100 ADSL 调制解调器以及一台 iMac、一台老旧的 PowerBook 和一台无线连接的 PC。问题是我无法访问少数特定网站,因为它们总是超时。
没有任何明显的迹象表明这些网站之间存在任何联系。我遇到的一些例子是www.adobe.com,www.microsoft.com,www.portsmouthguildhall.co.uk(当地场地)和减法网(博客)。我可以毫无问题地 ping 一些网站;没有超时。事实上,我以前可以访问 subtraction.com,仍然可以获取其 RSS 源。我只是无法再在 Web 浏览器中查看该网站。这是一个非常孤立的问题 — 对于我的大部分互联网使用来说,一切都运行正常。
显然这不是个别电脑的问题,因为所有电脑都有这个问题,所以一定是我的路由器或 ISP 的下游问题。我已将路由器升级到最新固件并尝试重置它,但问题并未解决。
我怎么才能诊断出问题出在哪里?我不知道从哪里开始!有没有我可以使用的任何 UNIX 网络命令(我有 Mac OS X)?
谢谢你的帮助。
编辑:按照 Alnitak 的建议,我尝试使用 traceroute 和 ping adobe.com。如您所见,traceroute 从未到达那里:
$ traceroute adobe.com
traceroute to adobe.com (192.150.18.117), 64 hops max, 40 byte packets
1 voyager.home (192.168.1.1) 1.975 ms 1.505 ms 1.574 ms
2 lo0-plusnet.ptn-ag2.plus.net (195.166.128.53) 28.476 ms 47.139 ms 28.036 ms
3 ge0-0-0-204.ptn-gw02.plus.net (84.92.3.93) 28.520 ms 37.297 ms 33.186 ms
4 te2-2.pte-gw2.plus.net (212.159.1.106) 35.670 ms 36.262 ms 34.995 ms
5 80.239.193.141 (80.239.193.141) 33.932 ms 28.600 ms 28.764 ms
6 ldn-bb1-link.telia.net (80.91.248.90) 29.649 ms 28.149 ms 30.857 ms
7 ldn-b5-link.telia.net (80.91.249.178) 27.991 ms 28.014 ms 28.490 ms
8 verio-129583-ldn-b5.telia.net (213.248.100.50) 28.468 ms 29.286 ms 31.702 ms
9 ae-1.r23.londen03.uk.bb.gin.ntt.net (129.250.5.237) 30.871 ms 29.295 ms ae-1.r22.londen03.uk.bb.gin.ntt.net (129.250.5.233) 28.614 ms
10 ae-0.r22.londen03.uk.bb.gin.ntt.net (129.250.4.85) 29.732 ms as-0.r20.nycmny01.us.bb.gin.ntt.net (129.250.3.254) 108.909 ms ae-0.r22.londen03.uk.bb.gin.ntt.net (129.250.4.85) 28.505 ms
11 ae-0.r21.nycmny01.us.bb.gin.ntt.net (129.250.2.26) 109.164 ms as-0.r20.nycmny01.us.bb.gin.ntt.net (129.250.3.254) 104.860 ms ae-0.r21.nycmny01.us.bb.gin.ntt.net (129.250.2.26) 111.253 ms
12 as-0.r20.asbnva02.us.bb.gin.ntt.net (129.250.2.9) 104.777 ms ae-0.r21.nycmny01.us.bb.gin.ntt.net (129.250.2.26) 109.973 ms as-0.r20.asbnva02.us.bb.gin.ntt.net (129.250.2.9) 108.774 ms
13 as-0.r20.asbnva02.us.bb.gin.ntt.net (129.250.2.9) 103.691 ms ae-3.r21.asbnva01.us.bb.gin.ntt.net (129.250.2.128) 104.958 ms as-0.r20.asbnva02.us.bb.gin.ntt.net (129.250.2.9) 104.455 ms
14 as-3.r20.snjsca04.us.bb.gin.ntt.net (129.250.2.167) 197.595 ms ae-3.r21.asbnva01.us.bb.gin.ntt.net (129.250.2.128) 105.027 ms 106.565 ms
15 * as-3.r20.snjsca04.us.bb.gin.ntt.net (129.250.2.167) 179.946 ms *
16 * te-5-3.r02.snjsca04.us.ce.gin.ntt.net (128.241.219.86) 176.374 ms *
17 * * te-5-3.r02.snjsca04.us.ce.gin.ntt.net (128.241.219.86) 189.724 ms
18 * * *
19 * * *
20 * * *
^C
—现在尝试从第 14 跳开始 ping。如您所见,最后一次 ping 有 20% 的数据包丢失:
$ ping -s 1492 as-3.r20.snjsca04.us.bb.gin.ntt.net
PING as-3.r20.snjsca04.us.bb.gin.ntt.net (129.250.2.167): 1492 data bytes
1500 bytes from 129.250.2.167: icmp_seq=0 ttl=55 time=214.555 ms
1500 bytes from 129.250.2.167: icmp_seq=1 ttl=55 time=215.339 ms
1500 bytes from 129.250.2.167: icmp_seq=2 ttl=55 time=221.211 ms
1500 bytes from 129.250.2.167: icmp_seq=3 ttl=55 time=224.296 ms
^C
--- as-3.r20.snjsca04.us.bb.gin.ntt.net ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 214.555/218.850/224.296/4.062 ms
$ ping -s 1492 as-3.r20.snjsca04.us.bb.gin.ntt.net
PING as-3.r20.snjsca04.us.bb.gin.ntt.net (129.250.2.167): 1492 data bytes
1500 bytes from 129.250.2.167: icmp_seq=0 ttl=55 time=299.852 ms
1500 bytes from 129.250.2.167: icmp_seq=1 ttl=55 time=326.598 ms
1500 bytes from 129.250.2.167: icmp_seq=2 ttl=55 time=243.278 ms
1500 bytes from 129.250.2.167: icmp_seq=3 ttl=55 time=214.610 ms
1500 bytes from 129.250.2.167: icmp_seq=4 ttl=55 time=232.900 ms
^C
--- as-3.r20.snjsca04.us.bb.gin.ntt.net ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 214.610/263.448/326.598/42.517 ms
$ ping -s 1492 te-5-3.r02.snjsca04.us.ce.gin.ntt.net
PING te-5-3.r02.snjsca04.us.ce.gin.ntt.net (128.241.219.86): 1492 data bytes
1500 bytes from 128.241.219.86: icmp_seq=0 ttl=245 time=349.851 ms
1500 bytes from 128.241.219.86: icmp_seq=1 ttl=245 time=270.748 ms
1500 bytes from 128.241.219.86: icmp_seq=2 ttl=245 time=334.406 ms
1500 bytes from 128.241.219.86: icmp_seq=3 ttl=245 time=220.046 ms
^C
--- te-5-3.r02.snjsca04.us.ce.gin.ntt.net ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 220.046/293.763/349.851/51.869 ms
$ ping -s 1492 te-5-3.r02.snjsca04.us.ce.gin.ntt.net
PING te-5-3.r02.snjsca04.us.ce.gin.ntt.net (128.241.219.86): 1492 data bytes
1500 bytes from 128.241.219.86: icmp_seq=0 ttl=245 time=472.908 ms
1500 bytes from 128.241.219.86: icmp_seq=1 ttl=245 time=228.290 ms
1500 bytes from 128.241.219.86: icmp_seq=2 ttl=245 time=231.048 ms
1500 bytes from 128.241.219.86: icmp_seq=3 ttl=245 time=229.906 ms
^C
--- te-5-3.r02.snjsca04.us.ce.gin.ntt.net ping statistics ---
5 packets transmitted, 4 packets received, 20% packet loss
round-trip min/avg/max/stddev = 228.290/290.538/472.908/105.296 ms
答案1
这听起来像是 MTU 问题。
您和这些站点之间可能存在不支持典型的 1500 字节 MTU 的情况,而且最重要的是防火墙可能阻止了用于“路径 MTU 发现”的 ICMP 数据包,因此您的终端无法判断无法使用正常的 MTU。
尝试跟踪路由,然后依次对每一跳,尝试发送一个大的 ping 数据包(1492 字节),看看是否有任何跳拒绝返回数据包。
编辑 - 您的tcpdump
输出显示您的终端仍在尝试启动 TCP 的“三次握手”,因为该SYN
位是从您的终端发送的数据包中发送的。但是,从 Adobe 返回的数据包似乎被截断或格式错误。这很奇怪,因为数据包中不应该有任何有效负载,只有远端的 SYN 响应。我需要查看前 4 个左右数据包的完整转储(包括 -X 选项)才能了解更多信息。
EDIT2 - 根据您详细的 tcpdump,我认为您的路由器正在破坏某些站点的 TCP 响应。测试此问题的最佳方法是借用其他品牌的路由器。
答案2
将其中一台计算机直接插入互联网连接,让其从 ISP 获取所有网络设置。如果您无法访问网站,则说明是 ISP 的问题;如果可以,则说明是路由器的问题,您可以从那里开始。
答案3
您可以尝试路由追踪,看看你的数据包能传多远。如果它们在你的路由器上停止,那很可能是那里出了问题。如果它们传得更远,你可能需要联系你的 ISP。
再次阅读您的问题,您说您可以成功 ping 服务器,因此您可能不会在 traceroute 上看到任何异常......
答案4
我现在已经解决了这个问题,最终修复非常简单。我打电话给我的 ISP(PlusNet),他们给我发了一个链接论坛帖子解释说这个问题是我路由器固件的一个错误。解决方法很简单,就是将路由器的 Internet 连接 MTU 设置为 1500(默认值为 1400),以便与路由器的 LAN 端 MTU 匹配。
感谢所有提供帮助和建议的人。我将接受 Alnitak 的回答,因为他/她一直支持我,并不断给我提供更多建议和尝试方法。