我为一位客户托管了一个电子商务网站,但这位客户突然无法从他的电脑上访问该网站。他可以 ping 服务器,可以通过 SSH 登录,但无法在我们尝试过的任何浏览器中加载该网站:IE、Firefox、Chrome、Opera。此位置的其他机器可以正常连接。DNS 解析正常,使用 IP 地址直接访问不起作用。在服务器端使用 Wireshark,我可以看到请求进入,响应离开我们的交换机。客户端的 Wireshark 没有看到任何回复。
迄今已尝试:
我发现客户端的路由器设置中没有任何东西可以阻止这台计算机访问该网站。他重新分配了公共 IP,并尝试了不同的私有 IP,但无济于事。
这一切似乎都表明是恶意软件或 Windows 7 安装损坏造成的。
关键是:将机器带到异地,连接到不同的互联网连接,它就能正常工作。我从未听说过恶意软件会拒绝只从某个特定服务器返回响应,并且只在从某个公共 IP 地址工作时才拒绝 具体物理位置(公网IP改变,没有区别)。
根据我的经验,当某种过滤器是导致问题的原因时,要么单个连接后面的所有机器都会被阻止,要么单个机器会被所有连接阻止。这里似乎两者都不适用。
可能存在什么问题?我们下一步该测试什么?
更新
我注意到在挂起之前,初始重定向到www.
是可以正常工作的,并且图标可以正常访问。果然,这两个请求都低于 1k,这促使我们检查客户端和服务器上的 MTU 值。但为什么它们会被改变呢?
答案1
如果客户端的路由器是基于 Linux 的,请检查:
1)ICMP 被网站或 ISP 阻止
2)客户端使用PPPOE连接
人iptables:
TCPMSS 此目标允许更改 TCP SYN 数据包的 MSS 值,以控制该连接的最大大小(通常将其限制为传出接口的 MTU 减去 IPv4 的 40 或 IPv6 的 60)。当然,它只能与 -p tcp 结合使用。
This target is used to overcome criminally braindead ISPs or servers which block "ICMP Fragmentation Needed" or "ICMPv6 Packet Too Big" packets. The symptoms of this problem are that everything works fine from your Linux firewall/router, but machines behind it can never exchange large packets: 1. Web browsers connect, then hang with no data received. 2. Small mail works fine, but large emails hang. 3. ssh works fine, but scp hangs after initial handshaking. Workaround: activate this option and add a rule to your firewall con‐ figuration like: iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
答案2
我曾经在 Electronic Arts 帐户网站上遇到过类似的问题(可以 ping 通,可以通过 FTP 访问,无法通过 HTTP 访问,网络上的其他机器都正常),结果是沿途的某些东西与我启用的 RFC1323 时间戳不一样。
尝试一下netsh int tcp set global timestamps default
。如果不起作用,只需查看一下,netsh int tcp show global
或者,如果您想要核选项,,,netsh int ip reset
然后netsh int tcp reset
重新netsh winsock reset
启动[此时您可能需要重新安装任何第三方防火墙或网络检查软件]。
您也可以尝试http://www.microsoft.com/windows/using/tools/igd/default.mspx,如果这似乎仅仅是 Win7 的问题。
您也可以尝试使用 LiveCD - 这比重新安装作为故障排除步骤更容易。