IP rDNS(PTR)信息从理解到情报挖掘
什么是IP的rdns信息?
过去很多人,将IP的rDNS信息理解为解析到IP的反查域名信息。IP的rDNS信息和IP反查域名信息完全是两个不同的信息。IP的rdns信息被称之为反向DNS解析(rDNS),即通过DNS解析系统来将IP地址解析为域名。根据RFC1912标准“每一个互联网可以访问的主机都应该有一个名字”,所以rDNS信息更多是对应到一个IP地址的名字。IP的反查域名是指根据域名解析到IP的记录来反查出哪些域名解析到这个IP地址上。下面以8.8.8.8来说明IP的反查信息和rDNS信息的区别。
通过命令nslookup可以直接获取到8.8.8.8的rDNS信息”dns.google.”,注意此处被标识为名称(name),即表示为IP的名称。

通过virustotal平台查询8.8.8.8的IP反查信息,可以得到下图红框中10个域名是解析到8.8.8.8上的。IP反查的结果是域名A记录指向该IP的域名信息集合。


IP的rDNS是如何工作的?
PTR记录
IP的rDNS信息本质上是IP地址的一个name信息。那这个信息是由谁在哪里设置的呢?在通过nslookup获取一个IP的rDNS信息请求时,本质上是发起了一个DNS请求,来获取一个IP的PTR解析记录。我们都知道DNS协议是域名解析协议,是用来解析协议的,那么如何能用来解析IP呢?这里要提到一个很牛的设计,为了能够通过DNS协议来解析到IP的rDNS信息,ICANN组织新增了一个tld(通用顶级域)“.arpa.”用来负责将IP映射为域名,支持rDNS协议和其他网络基础构架的管理工作。

IP地址”4.3.2.1”映射转换之后的域名为1.2.3.4.in-addr.arpa.,IP地址114.114.115.115映射转换之后的域名为115.115.114.114.in-addr.arpa。然后通过DNS协议查询该域名的PTR记录就能够获得该IP的rDNS值,这个查询出来的值和nslookup命令查询出来的值是一样的。


IP rDNS的权威DNS
我们都知道DNS协议中,每个域名都有对应的权威DNS服务器,用来维护这个域名的A记录、CNAME记录值等。在IP rDNS记录也是一样存在着权威DNS服务器。IP地址经过转换之后就是一个特殊的域名。下面我们来分别看一下各级域名对应的权威DNS服务器。
下面各图就IP rDNS转换域名之后的各级权威DNS服务器进行了解析尝试发现,114.114这样的B段就配置了中国的DNS服务器,前面114这样的A段地址展示了全球五大RIR的权威DNS服务器,再往前的特殊域arpa.和in-addr.arpa.都在icann手上进行维护。这里可以做一个有趣的推论,全球的IP地址分配单位可能是按照B段来进行分配的。另外114.114.115这样的C段是没有查询到权威NS服务器的,由此也可以做一个有趣的推论,实际注册了IP网段的单位设定的权威DNS服务器可能不是严格按照C段来设定的。从方便的管理角度来看,按照C段更方便做 IP转化为域名的映射的管理,但实际上并没有这么分配,也就是国内注册IP的单位也不是严格按照C段来进行注册的。

arpa.的权威DNS服务器:

in-addr.arpa.的权威DNS服务器:

114.in-addr.arpa.的权威DNS服务器:

114.114.in-addr.arpa.的权威DNS服务器:

114.114.115.in-addr.arpa.的权威DNS服务器:

如何快速获得所有IPv4的rDNS数据:
向公共DNS发起全网IP的PTR DNS解析
将所有的IP转化为域名之后,对公共DNS发起PTR的解析记录请求查询,这样的方法理论上是可行的。但是全球IPv4的地址大概有42亿,去除掉保留地址和一些特殊的IP地址之后,应该还有35亿左右,这个量可能会因为网络解析请求量过大,导致请求被拒绝,以致无法全面和准确的获得IP的rDNS信息。
向权威DNS发起PTR解析
由于公共DNS的数量和承载性能有限制,首先获得一个IP地址的rDNS域名对应的权威DNS,然后在向这个权威DNS服务器发起查询请求,这样能够将请求分散到不同的权威DNS服务器,降低并发太高的问题。但是仍然还会面临实际的请求数据量过于庞大的问题。下图展示了获取114.114.114.114的权威DNS服务器的过程:
上级域名“114.114.114.in-addr.arpa.”没有配置权威DNS服务器:

上上级域名“114.114.in-addr.arpa”配置了权威DNS服务器:

向上上级域名的权威DNS服务器发起PTR解析请求,注意看此处返回了授权区域(“AUTHORITY SECTION”)没有返回具体的ANSWER。这规定了该域名的rDNS记录应该去对应的权威DNS服务器(ns100.114dns.net)上去查询。

再次向该域名的权威DNS服务器发起PTR记录查询请求,成功获取到rDNS记录:

根据上面这几个步骤来看,向权威DNS发起请求,获取rDNS记录的过程比直接向公共dns发起解析请求慢很多,因为中间可能会多了一步或者多步。整体上来看也不能很好的解决快速获取rDNS数据的问题。
按需积累IP的rDNS解析数据
无论哪种方式,要瞬间获得42亿IP的rdns信息都会比较困难。所以按照实际的业务需求对出现的部分业务优先级高的IP通过网络发包获得rdns信息,然后不断的积累,预期能够获得更多的rdns数据。
使用开源的rDNS数据。
网络安全公司Rapid7下属的一个sonar实验室,会定期对全网进行IPv4 的rdns信息探测收集。收集完成之后,会对外提供下载地址。这也是一个重要的数据来源通道。

情报生产应用
生产白名单
所有IP映射为域名之后的各级权威DNS服务器,都是可以用来转化为DNS服务器、用来做白名单数据的;
识别IP用途
很多机构为了让外部知道自己IP是做什么用途的,会在IP的rDNS信息上声明相关的信息。比如百度的爬虫就是根据rDNS信息来判断是否为百度的爬虫。


根据rDNS信息判断IP是否为家庭宽带IP


判断IP是否属于动态IP
该IP属于河南电信的动态IP:

该IP属于上海电信IP:

参考链接:
https://opendata.rapid7.com/sonar.rdns_v2/
https://help.baidu.com/question?prod_id=99&class=476&id=2996
IP rDNS(PTR)信息从理解到情报挖掘的更多相关文章
- PHP获取IP及地区信息(纯真IP数据库)
昨天在写程序的时候,发现在用户的时候记录IP和地区信息也许以后用得上,去网上找了找,发现实现的方式有好多好多,因为我用的ThinkPHP,后来又去TP官网找了找,最后采用了下面这种方法. <?p ...
- tomcat正常启动,但IP不能访问web。ping IP地址,一直超时。 用ipconfig命令修复TCP/IP的配置信息
今天遇到一个好奇葩的问题 好吧是昨天遇到的一直没找到解决办法(`へ´) tomcat正常启动,但是通过IP不能访问web 用IP地址就是不行 (:′⌒`) 打不开 localhost就可以 ...
- 如何根据Ip获取地址信息--Java----待整理完善!!!
如何根据Ip获取地址信息--Java----待整理完善!!! QQWry.dat数据写入方法: http://www.cnblogs.com/xumingxiang/archive/2013/02/1 ...
- NetFlow是一种数据交换方式,提供网络流量的会话级视图,记录下每个TCP/IP事务的信息
NetFlow是一种数据交换方式,提供网络流量的会话级视图,记录下每个TCP/IP事务的信息.也许它不能象tcpdump那样提供网络流量的完整记录,但是当汇集起来时,它更加易于管理和易读.Netflo ...
- [日志分析]Graylog2进阶之获取Nginx来源IP的地理位置信息
如果你们觉得graylog只是负责日志收集的一个管理工具,那就too young too naive .日志收集只是graylog的最最基础的用法,graylog有很多实用的数据清洗和处理的进阶用法. ...
- TCP/IP网络协议的通俗理解,SOCKET,HTTP,SOAP
TCP/IP,HTTP,SOAP等协议之区别 术语TCP/IP代表传输控制协议/网际协议,指的是一系列协议.“IP”代表网际协议,TCP和UDP使用该协议从一个网络传送数据包到另一个网络.把IP想 ...
- ASP.NET获取客户端IP/用户名等信息
1. 在ASP.NET中专用属性: 获取服务器电脑名:Page.Server.ManchineName 获取用户信息:Page.User 获取客户端电脑名:Page.Request.UserHostN ...
- TCP/IP和HTTP的举例理解
闲暇中逛博客园,看到TCP/IP和HTTP关键词,就突然想深刻理解他们(以前真的是只知皮毛),于是看了关于TCP/IP和HTTP的博文,就有了此文. 首先要引出开放系统互连参考模型(OSI:Open ...
- 通过GeoIP2分析访问者IP获取地理位置信息
原文链接:http://blog.csdn.net/johnnycode/article/details/42028841 MaxMind GeoIP2 服务能识别互联网用户的地点位置与其他特征,应用 ...
- 淘宝IP地址库API接口(PHP)通过ip获取地址信息
淘宝IP地址库网址:http://ip.taobao.com/ 提供的服务包括: 1. 根据用户提供的IP地址,快速查询出该IP地址所在的地理信息和地理相关的信息,包括国家.省.市和运营商. 2. 用 ...
随机推荐
- promethus+grafana监控
1.监控 MySQL (终端可以安装在任意主机,不一定按在mysql节点上,注:mysql版本需在5.5以上) I.首先在mysql中添加监控使用的用户: create user 'exp'@'%' ...
- ESP-Example ble-ancs解析
苹果通知中心服务(ANCS)的目的是让蓝牙配件(通过蓝牙低能耗链接连接到iOS设备)以简单方便的方式访问iOS设备上产生的各种通知. Apple通知中心服务是主服务,其UUID为7905F431-B5 ...
- C# 以管理员方式运行程序
让你的程序以管理员方式运行 在Program.cs文件中添加如下代码 /// <summary> /// 应用程序的主入口点. /// </summary> [STAThrea ...
- sync.WaitGroup
WaitGropu使用注意 作groutine参数时传指针 type WaitGroup struct { noCopy noCopy // 64-bit value: high 32 bits ar ...
- ELK收集njinx
前提:安装elk 1.yum安装nginx 2.修改配置文件 vim /etc/nginx/nginx.conf.d 3.重新启动 nginx -s reload 4.安装压测命令 压测文件 5.写完 ...
- windows系统PC设置多ip
1. 打开 "[打开网络和共享中心]" 2 "更改适配器设置" 3."[本地连接]"-- "[属性]" 4.打开 [ ...
- 使用Python实现给企业微信发送allure报告,并实现微信查看
1.注册企业微信 搜索企业微信直接注册 2.创建应用 3.查看企业id.Secret.应用id.部门id 4.发送代码 import os import jenkins import requests ...
- java Comparator和Comparable的区别?
参考:https://blog.csdn.net/m0_71087031/article/details/124850080 Comparable是一个内比较器,可以和自己比较的 Comparator ...
- 使用python脚本批量造数据
本篇将采用 Python 脚本的方式进行批量给mysql造数据. 为了使 Python 可以连上数据库(MySQL),并且可以与数据库交互(增删改查等操作),则需要安装 MySQL 客户端操作库. ...
- Java基础|03.基础语法(2)
Java安全|03.Java基础语法(2) 00x1 单例模式 定义: 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一 ...