如何在 Linux 中查找给定域的所有已知 IP?

如何在 Linux 中查找给定域的所有已知 IP?

我是一名开发人员,负责使用 amazon 服务器进行测试的项目。我正在从使用路由切换FoxyProxy到使用路由,iptables因为它更方便。

我遇到的麻烦是,在运行 DNS 解析时,我发现通过多次调用来解析给定的域会返回多个地址。

例如:

$ host sample.domain.com
sample.domain.com has address 50.200.80.100
$ host sample.domain.com
sample.domain.com has address 50.200.80.101

这与谷歌形成了鲜明的对比:

$ host www.google.com
www.google.com has address 74.125.225.81
www.google.com has address 74.125.225.80
www.google.com has address 74.125.225.84
www.google.com has address 74.125.225.82
www.google.com has address 74.125.225.83
www.google.com has IPv6 address 2607:f8b0:4009:803::1012

目前,我正在多次解析主机以构建 IP 列表并使用它来设置 iptable 路由。有没有更好的方法来做到这一点?

注意:我无权更改服务器的任何内容,因此任何建议的解决方案都必须在客户端进行。

答案1

大多数高流量网站都有多个前端服务器来处理流量。通常每个 IP 地址都是一个负载均衡器,其后面会有更多的服务器。

如果你有兴趣获得“A”dig您可以使用或命令获取域记录。如果您使用,nslookup则命令将是获取它的首选方式。hostLinuxdig

$ dig A google.com +short @8.8.8.8
74.125.236.167
74.125.236.160
74.125.236.169
74.125.236.168
74.125.236.161
74.125.236.162
74.125.236.164
74.125.236.163
74.125.236.165
74.125.236.174
74.125.236.166

上述命令收集所有“A”域名的记录(地址)google.com。每次查询时,您都会获得同一组 IP 地址,但顺序不同。

我不确定iptables你会使用什么样的规则,但大多数情况下“A”74.125.236.0/24根据我的输出,记录将属于同一个网络dig

答案2

遗憾的是,没有简单的方法可以做到这一点。

如果您能够对 google.com 区域进行区域传输,那么您就可以解析所有 A 和 AAA 记录。但是,google 不允许公开区域传输,即使他们允许,他们的 DNS 数据也可能经常更改。

Google 在 DNS TXT 记录中发布其当前的网络范围。https://support.google.com/a/answer/60764?hl=en

$ nslookup -q=TXT _netblocks.google.com 8.8.8.8
$ nslookup -q=TXT _netblocks2.google.com 8.8.8.8

您还可以使用 ARIN 的 WhoIS 来搜索 IP 地址或公司。http://whois.arin.net/rest/net/NET-74-125-0-0-1/pft

请记住,网络块可以注册到 ISP,并且子集可以提供给特定组织。

相关内容