![使用 dig 列出给定域名的所有 IP](https://linux22.com/image/767271/%E4%BD%BF%E7%94%A8%20dig%20%E5%88%97%E5%87%BA%E7%BB%99%E5%AE%9A%E5%9F%9F%E5%90%8D%E7%9A%84%E6%89%80%E6%9C%89%20IP.png)
我想检查给定网站(例如 google.ch)的完整 IP 列表。运行 dig 始终返回相同的 IP:
dig google.ch
google.ch. 136 IN A 172.217.168.67
但在运行以下在线服务时https://toolbox.googleapps.com/apps/dig/我可以看到连续的调用返回不同的 IP 地址。
加,https://www.robtex.com/dns-lookup/google.ch告诉我似乎有 28 个 IP 与该域名相关联。
我是否也可以通过 dig 或类似工具获取此信息,或者这超出了我的控制范围?
谢谢
答案1
我是否也可以通过 dig 或类似工具获取此信息,或者这超出了我的控制范围?
这不受你控制。如果你同时从互联网上的多个点进行 DNS 查询,然后考虑所有结果的并集,你也许可以“模拟”该功能。这仍然非常近似。
为什么?
因为 DNS 服务器可以自由选择它想要的任何算法来给您返回答案。例如,如果涉及负载平衡器和 CDN,您可能会在每次查询时获得不同的 IP 地址,这确实是出于“GeoDNS”原因或其他原因。或者将多个地址作为单个查询的答案。这可能取决于查询的来源:DNS 服务器会看到执行请求的递归 DNS 服务器或 DNS 客户端的 IP 地址,有时还会看到其他信息(客户端有一个 EDNS 选项,可以添加子网 IP 来对执行请求的真实客户端进行编码,以便 DNS 服务器理论上可以提供更合适的答复;但出于隐私原因,可能不会经常使用)。
即使纯粹在 DNS 级别,也至少存在两个级别的可能变化:
- 您使用的 DNS 解析器(您的 dig 示例没有明确指定名称服务器,
@
这意味着您使用本地定义的递归名称服务器,这意味着您实际上可以得到任何结果,因为它不具有权威性;当然,任何严肃的讨论都需要在某个时候涉及 DNSSEC)可以是任意广播的:因此,您甚至可能无法总是到达同一个节点,并且根据提供商的不同,节点的缓存可能是共享的,也可能不是,因此您可以根据情况获得完全不同的答复 - 您访问的 DNS 权威服务器也可以进行任播,因此,您可以再次获得完全不同的答复,具体取决于您所在的位置以及 BGP 当时决定的路由。
最后,更重要的是,你为什么需要这些数据?如果你指定更多的约束/用例,可能还有其他方法可以实现你的需求。如果你仍然考虑所有通用情况,为什么你认为你需要知道“所有”IP 地址google.ch
?即使你实现了这一点,你为什么认为这是相关的,因为所有者可以随时更改所有这些?
因为出于某些特定原因,提供商有时会列出相关的 IP 地址。例如,监控服务提供商或搜索引擎可以列出他们使用的 IP 地址,这样您就可以确保不会阻止它们。但这只是网站上的一些典型文档,没有任何动态性,也与 DNS 协议没有太大关系。
PS:别忘了 IPv4 是传统互联网;现在你应该专注于 IPv6 :-)