域名解析

域名解析报告

1、域名解析基本功能迭代说明

1.1 massdns 解析

使用 massdns 进行解析,速度很快,但是无法保证数据结果的质量,并且不太好控制线程数,需要根据机器性能不断去测试摸索

1.2 多线程解析

使用 Python 第三方库 dnspython 进行解析,速度无法达到要求,使用多线程可稍微缓解速度慢的问题

1.3 协程解析

使用Python 第三方库 aiodns 进行解析,速度可达到要求,但是由于同一时间对于本地的 DNS 服务器发起大量 dns 解析请求,故而采用多节点多地域分布式域名解析。对于机器的性能要求不高,但是需要使用不同地域的服务器进行解析,然后将结果汇总

2、域名解析当前版本说明

当前版本为 单机多地域 DNS服务器 + OpenDNS 服务器解析,内部采用aiodns协程进行解析,无需多节点部署,只要根据结果进行 DNS 服务器列表数据变更即可,可实现 DNS 服务器数据灵活变动,高效域名解析,高效结果汇总,高效结果传输的优化目标

3、本次域名解析任务结果说明

本次域名解析目标数量为:297384,均为最近一轮旧版本域名解析无结果的数据

本次解析存在解析数据数量为:205395

两次结果对比,域名解析有效率提升为 69.07%,另外需要说明,目标数据中存在大部分数据有历史解析数据的情况。

不排除当前结果中仍存在部分数据存在域名解析的可能,但仍可认为当前域名解析服务的域名解析能力可达到 95%以上的成功率

4、DNS 服务器数据收集及筛选

当前解析所用服务器数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
223.6.6.6              # 阿里AliDNS
101.226.4.6 # DNS 派 电信/移动/铁通
211.138.30.66 # 河南移动 DNS
211.138.24.71 # 河南移动 DNS
222.88.88.88 # 河南电信 DNS
222.85.85.85 # 河南电信 DNS
180.76.76.76 # 百度 BaiduDNS
9.9.9.9 # IBM Quad9
117.50.11.11 # oneDNS
210.2.4.8 # CNNIC SDNS
114.114.114.114 # 114 DNS
223.5.5.5 # 阿里AliDNS
123.125.81.6 # DNS 派 联通
208.67.220.220 # OpenDNS
119.29.29.29 # DNSPod DNS+
202.98.198.167 # 贵州电信 DNS
59.51.78.211 # 湖南电信 DNS
202.106.0.20 # 北京联通 DNS
202.101.226.68 # 江西电信 DNS
210.22.70.3 # 上海联通 DNS
61.132.163.68 # 安徽电信 DNS
222.172.200.68 # 云南电信 DNS
219.147.1.66 # 山东电信 DNS

数据筛选原则:

同时解析 1000 子域名,成功率须达到 50%以上,并且同一省份同一运营商只取其中一个 DNS 服务器,OpenDNS 服务器同样只使用其中一个,针对公司大部分解析任务都为河南省数据,则使用河南移动及电信全部 DNS 服务器

5、数据对比展示

子域名:smtp.huntotem.com

历史数据

1
2
3
4
5
6
7
history = {"a_result": ["42.120.226.4", "42.120.219.29"], 
"aaaa_result": [],
"cname_result": ["smtp.mxhichina.com"],
"mx_result": [],
"cdn_a_result": [{"subdomain": "smtp.mxhichina.com", "ip": "42.120.226.4"},
{"subdomain": "smtp.mxhichina.com", "ip": "42.120.219.29"}]
}

本次数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
now_data = {"223.6.6.6": {"a_result": ["42.120.219.29", "42.120.226.4"],
"cname_result": ["smtp.mxhichina.com"]},
"101.226.4.6": {"a_result": ["42.120.219.29", "42.120.226.4"],
"cname_result": ["smtp.mxhichina.com"]},
"9.9.9.9": {"a_result": ["205.204.101.152"], "cname_result": ["smtp.mxhichina.com"]}, # 重点注意
"117.50.11.11": {"a_result": ["42.120.219.29", "42.120.226.4"],
"cname_result": ["smtp.mxhichina.com"]},
"210.2.4.8": {"a_result": ["42.120.219.29", "42.120.226.4"],
"cname_result": ["smtp.mxhichina.com"]},
"114.114.114.114": {"a_result": ["42.120.219.29", "42.120.226.4"],
"cname_result": ["smtp.mxhichina.com"]},
"223.5.5.5": {"a_result": ["42.120.219.29", "42.120.226.4"],
"cname_result": ["smtp.mxhichina.com"]},
"123.125.81.6": {"a_result": ["42.120.219.29", "42.120.226.4"],
"cname_result": ["smtp.mxhichina.com"]},
"208.67.220.220": {"a_result": ["42.120.219.29", "42.120.226.4"],
"cname_result": ["smtp.mxhichina.com"]},
"119.29.29.29": {"a_result": ["42.120.219.29", "42.120.226.4"],
"cname_result": ["smtp.mxhichina.com"]},
"202.98.198.167": {"a_result": ["42.120.219.29", "42.120.226.4"],
"cname_result": ["smtp.mxhichina.com"]},
"202.106.0.20": {"a_result": ["42.120.219.29", "42.120.226.4"],
"cname_result": ["smtp.mxhichina.com"]},
"202.101.226.68": {"a_result": ["42.120.219.29", "42.120.226.4"],
"cname_result": ["smtp.mxhichina.com"]},
"61.132.163.68": {"a_result": ["42.120.219.29", "42.120.226.4"],
"cname_result": ["smtp.mxhichina.com"]},
"222.172.200.68": {"a_result": ["42.120.219.29", "42.120.226.4"],
"cname_result": ["smtp.mxhichina.com"]},
"219.147.1.66": {"a_result": ["42.120.219.29", "42.120.226.4"],
"cname_result": ["smtp.mxhichina.com"]},
"a_result": ["42.120.219.29", "42.120.226.4", "205.204.101.152"], "aaaa_result": [],
"cname_result": ["smtp.mxhichina.com"], "mx_result": [], "cdn_a_result": {}}

按照以前的解析策略,我们是无法获取 205.204.101.152 这个解析数据的,但是现在的策略我么使用 9.9.9.9 这个服务器定点解析,可以获取不同的解析数据,并且同步获取 CNAME 数据