如何调试一个对于一个人来说无法访问而对于另一个人来说可以访问的网站(作为用户,而不是开发人员或管理员)?

如何调试一个对于一个人来说无法访问而对于另一个人来说可以访问的网站(作为用户,而不是开发人员或管理员)?

我有一个摄影师的网站,他拍了一些照片并通过他的网站分享。该网站似乎可以在一个国家/地区使用(它适用于一个家庭成员),但它甚至无法加载。

该网站不使用 SSL,因此我怀疑某些本地 DNS 问题是罪魁祸首。

traceroute 似乎对该域名相当慢,mtr 似乎显示它可以找到它。whois 似乎也找到了一个条目。

我还应该查看什么来调试此问题?我尝试了几个浏览器和计算机(均来自出现故障的位置)。

更新:现在我已使用 Tor 加载了网站一次。不知道这说明了什么。

答案1

要访问网站,您需要按相反的顺序:

  • 正确的 TLS 配置(证书等)
  • 一个合适的 HTTP 服务器,监听 80 和 443 端口以支持 HTTPS
  • 正常运行的防火墙,允许流量通过
  • 从“任何地方”到该服务器的正确 IP 路由
  • 如果所有内容都以名称(从 URL 中提取)开头,则需要从该名称到某个 IP 地址进行正确的名称解析(通常是 DNS,但不一定是所有地方)。

因此,您需要从底部开始,然后向上测试所有这些内容。您可以使用浏览器自己的内部 Web 开发人员工具,或外部命令(如果可以使用命令行工具,您可以获得更好/更简单/更快/更正确的故障排除),或者最坏的情况下使用各种网站上的服务。

我将仅提供有关使用命令的详细信息。

  • 你可以使用dig它来仔细检查名称解析;使用其默认的本地解析器查看客户端是否获取正确的 IP 地址
  • 接下来的 3 点都可以通过使用来检查tcptraceroute;最重要的是不要使用默认值traceroute(或者更糟糕的,正如经常建议的那样ping),因为它不会真正模拟您所需要的正确的 TCP/80 或 TCP/443 流量;这可能需要一些时间,但您应该得到最后一行,其中包含在上一点中找到的 IP 地址和类似的提及,[open]这意味着您确实看到(并且可以访问)在那里运行的网站,因此没有防火墙阻碍交换。
  • 您可以使用各种工具模拟完整的 HTTP(s) 交换,包括wget或。curlhttpie
  • 专门用于调试 TLS 问题openssl s_clientgnutls或者testssl.sh

更新:现在我已使用 Tor 加载了网站一次。不知道这说明了什么。

服务器和客户端之间可能有防火墙。因此,如果你更改源 IP 地址(这是使用 Tor 的副作用之一),访问模式就会发生变化。

相关内容