我完全被这个问题难住了,所以任何建议都很好!我的开发机器运行 OSX Mavericks,其他方面都运行良好,但无法连接到谷歌、youtube 和一些 CDN(如 stackexchange 的 CDN)等主要网站。我从
wget http://maps.google.com/
是
Connecting to maps.google.com|2607:f8b0:400a:804::100e|:80... connected.
HTTP request sent, awaiting response... No data received.
如果我 telnet 到 stackexchange cdn 的 80 端口并尝试 helo,我会得到
telnet 141.101.114.59 80
Trying 141.101.114.59...
Connected to 141.101.114.59.
Escape character is '^]'.
helo
Connection closed by foreign host.
另一个例子:
telnet cdn.sstatic.net 80
Trying 2400:cb00:2048:1::be5d:f53a...
Connected to sstatic.net.cdn.cloudflare.net.
Escape character is '^]'.
GET /index.html
Connection closed by foreign host.
如果我在其他机器上尝试这些命令,它们可以完美运行,但我确实注意到 unix 服务器上的第二个示例返回的是常规 IP。即使我更改网络,此问题仍然存在,并且似乎特定于端口,因为我可以在同一主机上正常连接到端口 443。我还以新用户身份尝试了所有操作,以防有一些用户特定的设置,但没有成功。
那么 osx 中是否有一些系统特定的设置可以阻止部分(但不是全部)端口 80 流量?或者我应该清除机器并重新开始?
非常感谢!
答案1
如果你尝试使用 telnet 向 Web 服务器发送原始消息,则需要使用实际的原始 HTTP,另一个参考,而不是 telnet 或 smtp 命令,因为 Web 服务器可能只使用 HTTP。
例如:
GET /index.htm HTTP/1.1
host: www.example.com
您的路径中是否有防火墙、代理等可能拒绝流量?另外,您是否检查过 DNS 是否正常工作?其他可以尝试的方法是通过 IP 而不是主机名直接访问网站。
要解决问题,您可能需要捕获一些流量,以查看它是否被拒绝或只是超时。您可以使用浏览器中的一些开发人员工具来执行此操作(例如,Chrome 的开发者工具网络面板) 如果有“网络”监视器选项。否则,您可以使用类似WireShark。这将为您提供有关网络级别发生的情况的更多信息。