为什么我不能从 Ubuntu 访问 imgur.com 和 gravatar.com,但可以从 Windows 访问?

Hac*_*ell 8 networking 12.04

我有这个奇怪的问题,我无法从 Ubuntu 访问 imgur.com!

我检查了/etc/hosts文件,似乎没有与imgur相关的条目。我可以从 Windows 访问它(相同的连接)。

我无法ping通或跟踪路由它,甚至无法ping通imgur的IP。我也清除了iptables,可能是什么原因?

我也无法访问 gravatar.com !!我才注意到,对不起。

运行主机 imgur.com(与 google 的 dns 服务器输出相同)

gowtham@gowtham-hacktohell:~$ host imgur.com
imgur.com has address 23.23.110.58
imgur.com has address 23.23.110.81
imgur.com has address 54.243.128.92
imgur.com mail is handled by 5 alt1.aspmx.l.google.com.
imgur.com mail is handled by 1 aspmx.l.google.com.
imgur.com mail is handled by 10 aspmx2.googlemail.com.
imgur.com mail is handled by 5 alt2.aspmx.l.google.com.
imgur.com mail is handled by 10 aspmx3.googlemail.com.
Run Code Online (Sandbox Code Playgroud)

运行 tcptraceroute

gowtham@gowtham-hacktohell:~$ tcptraceroute imgur.com
Selected device ppp0, address 117.199.141.54, port 44995 for outgoing packets
Tracing the path to imgur.com (54.243.128.92) on TCP port 80 (http), 30 hops max
 1  117.199.128.1  17.534 ms  17.764 ms  17.896 ms
 2  218.248.171.102  93.272 ms  26.393 ms  109.985 ms
 3  115.114.130.49.STATIC-Chennai.vsnl.net.in (115.114.130.49)  49.442 ms  47.180 ms  46.981 ms
 4  * * *
 5  ix-0-100.tcore2.MLV-Mumbai.as6453.net (180.87.39.25)  70.085 ms  69.712 ms  70.361 ms
 6  if-2-2.tcore1.MLV-Mumbai.as6453.net (180.87.38.1)  186.862 ms  186.434 ms  185.515 ms
 7  if-9-5.tcore1.WYN-Marseille.as6453.net (80.231.217.17)  181.965 ms  182.963 ms  184.682 ms
 8  if-8-1600.tcore1.PYE-Paris.as6453.net (80.231.217.6)  186.152 ms  184.483 ms  182.950 ms
 9  if-12-2.tcore1.PVU-Paris.as6453.net (80.231.154.70)  191.271 ms  189.655 ms  188.606 ms
10  if-3-2.tcore1.FR0-Frankfurt.as6453.net (80.231.153.54)  187.245 ms  186.013 ms  193.808 ms
11  xe-0-1-0-6.r02.frnkge03.de.bb.gin.ntt.net (129.250.9.57)  288.412 ms  281.124 ms  281.011 ms
12  ae-2.r20.frnkge04.de.bb.gin.ntt.net (129.250.5.217)  352.432 ms  357.071 ms  357.256 ms
13  ae-1.r21.asbnva02.us.bb.gin.ntt.net (129.250.3.20)  391.405 ms  394.961 ms  391.812 ms
14  ae-2.r00.asbnva02.us.bb.gin.ntt.net (129.250.3.114)  378.128 ms  381.786 ms  385.697 ms
15  ae-4.amazon.asbnva02.us.bb.gin.ntt.net (168.143.232.50)  370.938 ms  353.306 ms  351.793 ms
16  72.21.220.55  361.004 ms * 364.525 ms
17  205.251.245.55  368.187 ms  380.907 ms  375.333 ms
18  * * *
19  * * *
20  * * *
Run Code Online (Sandbox Code Playgroud)

我使用 PPoE 拨号连接。

通过Wireshark捕获流,我看到了这个


(来源:akamaihd.net

运行卷曲

gowtham@gowtham-hacktohell:~$ curl -I http://imgur.com
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 11 Jan 2013 12:24:01 GMT
Content-Type: text/html
Connection: keep-alive
Cache-Control: max-age=5, s-maxage=5, must-revalidate
X-Cached: EXPIRED
Run Code Online (Sandbox Code Playgroud)

和远程登录,

gowtham@gowtham-hacktohell:~$ telnet imgur.com 80
Trying 23.23.110.58...
Connected to imgur.com.
Escape character is '^]'.
HEAD / HTTP/1.0


HTTP/1.1 200 OK
Server: nginx
Date: Fri, 11 Jan 2013 12:25:11 GMT
Content-Type: text/html
Connection: close
Cache-Control: max-age=5, s-maxage=5, must-revalidate
X-Cached: HIT

Connection closed by foreign host.
Run Code Online (Sandbox Code Playgroud)

Ali*_*ton 5

这可能是 MTU 路径发现问题。这可能会导致某些网站无法正常工作,即使所有其他网站都可以正常工作。它将显示为超时而不是连接被拒绝。它只会出现在相当大的传输中,比如整个网页——telnet 可能不会发送任何需要分段的数据包。它也会影响传出的 ssh。

解决方法是降低网络设备上的 MTU,以便始终将超过特定大小的数据包分段。见例如:

http://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.cookbook.mtu-discovery.html

详细而言,当您通过 Internet 发送数据时,它会被分成多个数据包。Internet 上任何位置的这些数据包的最大大小为 1460 字节,不包括标头。如果您发送的消息比它大,则必须将其拆分或分段。

现在,如果您的消息通过某些类型的互联网链接,它必须封装在另一个协议中。这意味着包含标头的数据包将被包裹在另一个数据包中。这显然会增加数据包的大小,因此如果您的数据包已经是最大大小,则必须再次拆分。然而,因为这可以被利用来执行 DDoS 攻击,所以许多路由器不会自动对不是它们创建的数据包进行分段。因此,您的最大大小的数据包不会穿过这些路由器。

为了避免这个问题,发明了 MTU 路径发现。如果数据包对于路由器来说太大,它将发回一条消息,说要发送较小的数据包。然而,事实证明这也可以被利用,而且很多路由器也不会这样做。

所以克服这个问题的方法是总是发送比绝对最大值稍小的数据包。这就是 MTU 设置的用途。这个想法是将它设置得足够小,以至于任何额外的开销都不会超过限制。当然,您不会知道它有多小,因此您必须通过实验找到最佳值(仍然有效的最大值)。