我是一名开发人员,负责使用 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
则命令将是获取它的首选方式。host
Linux
dig
$ 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,并且子集可以提供给特定组织。