在当今数字化世界中,互联网已经成为人们日常生活和商业活动中不可或缺的一部分。在这个庞大而复杂的网络生态系统中,IP地址是连接和识别各种网络设备和服务的基础。然而,仅仅知道一个设备的IP地址并不足以充分理解其在网络中的角色和行为。为了更深入地理解和利用IP地址,反向域名解析(rDNS)技木提供了丰富的信息,帮助我们洞悉IP地址的更多细节。
1.什么是rDNS?
与DNS相反,rDNS是将IP地址转换为域名的过程,是通过查询PTR和CNAME记录来实现的。一个IP可以对应多个域名,属于一对多的关系;而从IP地址反向查找域名通常返回零个或一个主机名,属于一对一关系。反向DNS常见用途:
验证发送者的身份
rDNS被广泛用于电子邮件发送过程中,作为防止垃圾邮件和钓鱼攻击的一部分。当一封电子邮件从一个服务器发送时,接收服务器可以查看发送服务器的IP地址,并执行rDNS查询以确认该IP地址所对应的域名。如果rDNS记录与发送服务器的声明相匹配,这可以作为发送服务器身份的一个验证,从而增加了邮件合法性的可能性。如AOL(美国在线)要求发送者邮件服务器必须可以被反向解析才能向AOL/AIM邮箱发送邮件。而对于一些大型网络供应商来说,配置正确的反向DNS记录也是建立互联网服务可信任与可靠性的一部分。
网络故障诊断和跟踪
在网络管理和故障诊断过程中,知晓发起请求设备的域名信息是非常有用的。rDNS可以帮助网络管理员识别网络流量中的特定主机,理解流量来源,使其有效地诊断问题。
实施安全策略和访问控制
一些网络服务和应用程序可能基于反向域名来实施安全策略或访问控制。通过rDNS,服务可以检查访问请求的IP地址背后的域名,以决定是否允许访问或应用特定的规则。如善意Bot的识别,通过校验请求头User-Agent以及IP的反向解析记录来确认该请求是否来自真实的SEO爬虫。
2.从反向DNS派生地理位置信息
在终端中执行 host 96.227.5.107 得到 pool-96-227-5-107.phlapa.east.verizon.net., 从该例子可知,子域部分.phlapa可以表明该IP位于美国宾夕法尼亚州费城;对 63.153.137.40 进行反向解析得到 63-153-137-40.sxfl.qwest.net.,子域部分.sxfl.是美国南达科他州苏福尔斯市的缩写。通过阅读主机名可以合理预判它所在的地理位置,说明rDNS记录可以为IP地理定位提供附加价值,然而需要考虑的问题是:
- 在整个IPv4地址空间中有多少个IP能够被反向解析?
- 在可被反向解析的IP中有多少rDNS记录存在地理位置信息?
在论文《 IP Geolocation through Reverse DNS》中,我们找到了比较合理的答案,文章提出一种从rDNS提取位置的机器学习方法,将该任务视为一个机器学习问题,对于给定的主机名,将其生成位置候选列表,然后使用二元分类器对每个主机名和候选位置对进行分类来确定哪些候选位置是合理的。最后根据置信度对剩余候选位置进行排名,并根据人口数量关联起来,此方法可以有效补充和改进当前主流IP Geo 商业数据库的准确性。
全网43亿IPv4地址空间中,约有25.68亿个公网IP,上图显示有12.5亿个IPv4地址具有有效的rDNS。在这12.5亿个IPv4中约有1.6亿包含了精确的城市匹配,有2.7亿包含了机场代码。也就是说所有有效反向DNS记录中大约只有12%包含了有用的地理位置信息,其覆盖范围并不足以单独形成完整的IP Geo数据库,但可助于丰富现有IP地理位置信息。此外论文对2014-2018年的rDNS变化情况做了分析,数据显示64.8%的rDNS解析记录保持不变,且反向DNS数量逐年缓慢增长。而事实也是如此,根据最新的rDNS数据,该数字已经增长至12.86亿左右。
像 MaxMind、Neustar IP Intelligence 和 IP2Location 等公司提供的商业IP地理位置数据库,都是结合了多种信息源以及算法来完成,包括WHOIS信息、网络延迟信息、网络拓扑信息以及与直接运营商合作甚至是分析网络社交图谱等手段来达到较高的覆盖率,但依旧会出现缺少某些IP范围的位置信息。借用网络拓扑和延迟信息有诸多局限性:(1)需要有遍布全球的测绘节点资源;(2)并不是每个公网IP都允许ICMP Ping或者公开其网络拓扑;(3)通过traceroute等得到的路由距离没法完全映射成现实地理距离。但借助rDNS进行地理定位可摆脱上述限制。
3.从反向DNS派生IP连接类型
某些rDNS解析记录中可以发现一些包含连接类型的 信息:
- ADSL: 194.245.146.50: 194-245-146-50.adsl.nrw.net.
- DSL: 201.248.37.20: 201-248-37-20.dyn.dsl.cantv.net.
- BROADBAND: 95.25.2.183: 95-25-2-183.broadband.corbina.ru
- CATV: 188.156.235.137: BC9CEB89.catv.pool.telekom.hu.
- DYNAMIC: 14.3.6.51: ae006051.dynamic.ppp.asahi-net.or.jp
那么rDNS信息可以作为挖掘IP使用场景(家庭住宅、企业专线、数据中心等)的一种方式,对于安全产品来讲通常会对不同的IP类型采取不同的严格程度的防护策略,例如对动态住宅IP采取较为谨慎保守的防护措施,因为绝大部分真人访问的终端IP都属于动态IP且多人共用,容易造成误杀;而对于企业专线类IP决策成本则没有那么高。动态IP是由多个网络供应商分配在IP池里面的,因此如果单纯从whois信息以及其他信息很难直接确认某个IP是否为动态IP,而通过rDNS某些关键字信息则可以对此做一些判断,用简单的例子证明,在RDNS数据库中查询ptr包含 dynamic关键字的IP,有5800万+的IP能够被直接匹配到,
结合一些其他第三方威胁情报数据可初步证明此猜想。
当然,实际动态IP数量远比这个多,笔者这边只是抛砖引玉,同样地,由于不是每个IP都存在rDNS记录,因此同第二章节反向DNS记录可以补充丰富IP的连接类型,但仅靠rDNS不足以构成一个完整的数据库。
4.利用ZDNS来完成IPv4反向DNS解析
论文《ZDNS: A Fast DNS Toolkit for Internet Measurement》中介绍了一种高性能可扩展的DNS探测框架,包括三个主要组件:DNS库、核心框架和可组合模块。DNS库实现了自己的缓存递归解析器库,提供递归查询、缓存、验证、交换数据包的传输记录以及简化DNS解析。核心框架用于简化命令行交互,而可组合模块则用于方便地扩展功能。ZDNS的实现遵循以下几个设计原则:
- 内部递归:ZDNS支持递归解析以便了解DNS操作的各个特征。这是因为公共递归解析器通常隐藏了许多DNS解析特征,而且经常对查询进行频率限制。因此需要支持内部自行递归解析。
- 安全性:DNS协议定义了许多RFC标准,并且在2022年有超过65种DNS记录类型。因为服务器经常配置错误或恶意操作而返回格式错误的响应,所以ZDNS使用内存安全的编程语言,并支持模块化接口。
- 高性能:使用外部递归解析器时每秒执行9万次解析,10分钟内扫描5000万个域名,12小时内解析整个IPv4地址空间的PTR记录。
下图是ZDNS解析性能数据:
如果只看PTR记录的数据表现情况,使用 Goole 的DNS公共解析仅用了12.1h完成整个IPv4空间地址的解析并且达到了93.0%成功率,使用内部的递归解析则花费了116.7h,但同时也保持了88.5%的成功率,使用内部递归解析性能下降很大的一部分原因是无法利用公共解析的缓存来加速查询,另一部分原因是内部递归机制要查询到一定数量才能返回响应。对比A记录与PTR记录,当解析次数从5000万次到数十亿,ZDNS的成功率下降不到5%。
5.结束语
反向DNS(rDNS)技术作为网络管理和安全领域中的重要工具,为丰富IP地址信息、识别地理位置和连接类型提供了有力的支持。通过本文的介绍,我们对rDNS的基本概念和其在丰富IP信息方面的应用有了更深入的了解。
在从rDNS派生地理位置信息方面,我们可以利用rDNS记录中的域名和地理位置数据库进行关联,从而推断IP地址的地理位置信息,为地理定位和位置感知服务提供数据支持。这对于网络定位服务、内容分发网络优化等方面具有重要意义。另一方面,通过rDNS派生IP连接类型,我们可以基于rDNS记录的域名和服务类型,对IP地址所对应的应用和服务进行分类和识别。这有助于网络安全和流量管理,提高了对网络活动的可视化和理解能力。利用ZDNS等工具完成IPv4反向DNS解析,可以快速、高效地进行大规模的rDNS查询,为网络管理和安全分析提供了便利。这种工具的应用为实际的网络信息收集和分析工作提供了技术支持,有助于实现网络资源的合理利用和网络安全的加强。