我正在尝试解决某个 CDN 问题,测试我在不同的服务器上获得的下载速度。假设它是 host.example.com,它将返回一些 IP 地址,但不确定是哪一个(有很多,而且它们似乎提供不同的下载速度)。
默认情况下,我似乎会获得一个特定的 IP 地址,不确定它如何决定将哪个 IP 地址提供给我或其他任何人(此时并不重要),但我尝试使用 Windows 11 中的 hosts 文件测试该池中的其他服务器。我将其输入到 hosts 文件中并:
ipconfig /flushdns
ping host.example.com
nslookup host.example.com
Ping 提供的是我在 hosts 文件中输入的 IP 地址,而 nslookup 提供的是我从没有 hosts 文件的 DNS 中收到的 IP 地址?
我不确定它是否应该这样工作,即 nslookup 不关心 hosts 文件,但我认为当我在 Linux 机器上尝试相同测试时,我确实获得了 hosts 文件 IP 地址。
此外,我意识到,如果浏览器使用 DNS-over-HTTPS,它将完全绕过 hosts 文件,而是使用从支持 DoH 的 DNS 服务器获取的 IP 地址,无论它是什么。我已尝试确保浏览器中禁用 DoH。
因此,现在在 Windows 中,如果浏览器尝试访问 host.example.com,我不确定它实际使用的 IP 地址是什么。所以我的问题是:是否有某种方法可以在浏览器本身内检查它是否使用 hosts 文件中的条目?也就是说,检查浏览器(不是 ping 或 nslookup)认为 host.example.com 的正确 IP 地址是什么?
nslookup查找名称服务器。Ping 根据您的主机文件进行解析,并发出 ICMP 数据包。这两个都是“错误”的工具。
值得仔细查看 nslookup 输出。就我而言,我非常方便地使用一个简单的 dns 服务器进行过滤,以查找我家里的系统。我正在运行 Windows,nslookup 会告诉您正在使用的服务器
现在,如果我改变它 - 它仍然会查找它被告知要查找的名称服务器而不是主机文件。
hosts 文件绕过它进行名称解析,但 nslookup 仍在查找您的名称服务器。
我怀疑这里可能造成混淆的部分原因是误解了 nslookup 的作用 - 即查找您的默认名称服务器。这就是它的全部意义所在。它是一种测试DNS解析的方法,而不是主机名解析。
我怀疑最“简单”的方法是使用 devtools(基于 Chromium 的浏览器上按 f12)。我运行的是 vivaldi,但我相当确定 Chrome 和 Firefox 的运行方式类似 - 我不得不单独打开远程地址列,但您可以通过这种方式获取页面正在使用的资源的实际IP
这应该可以让你获得页面上特定资源正在使用的实际IP