![如何找出网站无法访问的原因?](https://linux22.com/image/605513/%E5%A6%82%E4%BD%95%E6%89%BE%E5%87%BA%E7%BD%91%E7%AB%99%E6%97%A0%E6%B3%95%E8%AE%BF%E9%97%AE%E7%9A%84%E5%8E%9F%E5%9B%A0%EF%BC%9F.png)
我无法访问某个网站。可能有两个原因:
- 该块位于 ISP 端。
- 该区块位于网站上。
有没有技术方法可以查明是哪些因素导致了问题?
答案1
如果没有更多信息的话很难说,但是这里有一些可以尝试的常规方法:
0) 查找网站主机名(例如,在 Windows 上执行“nslookup www.example.com”,或在 os-x 或 *nix 上执行“host www.example.com”。如果您没有收到 IP 地址响应,则意味着您的 Web 服务器系统未在 DNS 中注册。
1) 接下来 ping 网络服务器。即 ping 运行网站的服务器的主机名。如果您收到响应,这至少表明您的客户端和网络服务器之间有一条开放的网络路径(至少可以 ping)。如果您没有收到响应,可能是因为只有 ping 被阻止,但很可能是因为服务器由于某种原因无法访问。它可能已关闭。
2) 接下来,尝试与网站建立 HTTP 连接。您可以使用浏览器查看发生了什么(例如,您是否收到错误,例如 500,还是只是停留在那里并超时?)。如果这是一个应该可以全球访问的网站,此时您可能还会考虑使用类似DownForEveryoneOrJustMe.com 这将有助于确定问题是否仅仅出现在您这边(即客户端)或者该网站是否对其他人瘫痪(至少对于“DownForEveryoneOrJustMe.com”服务器而言)。
3) 如果您无法建立连接,此时,在尝试打开连接时,最好在客户端(和/或 Web 服务器,如果您有控制台和管理员访问权限)上启动 tcpdump 或 wireshark。这将允许您查看 TCP 数据包是否到达服务器以及服务器如何响应。然后您将获得更多线索。
4) 如果服务器没有响应 HTTP(TCP 端口 80)数据包,则可能是防火墙默默地丢弃了数据包。但是,机器也可能没有运行 HTTPD 守护程序(例如 apache)。因此,如果您拥有服务器的管理员权限,则可以查看进程表(如果是 *nix,则使用“ps -aux | grep "http"”)。如果守护程序正在运行,下一个要查看的地方是 apache 或正在运行的任何 Web 服务器软件的日志。等等。
如果您能提供更多信息,尤其是您尝试过的方法以及哪些方法有效或无效,我们就可以尽力为您提供更多帮助。祝您好运。