DNS反向查询

摘要:
DNS反向查询大致定义为从IP地址获取PTR记录。事实上,PRT代表POINTER,它在DNS系统中是唯一的,并将IP地址与规范化的主机名相关联。此资源记录可以是A记录、CNAME记录或MX记录,而PTR记录用于从IP地址反向检查域名。DNS反向查询的使用场景rDNS的最初目的是通过traceroute、ping和SMTP电子邮件的“Received:”跟踪标头字段来解决网络问题,并通过网站跟踪用户。然后本地/etc/hosts将提供DNS服务。
DNS反向查询是什么

DNS反向查询大概的一个定义就是:
从 IP 地址获取 PTR 记录。也就是说,通过使用一些网络工具可以将 IP 地址转换为主机名。 实际上,PRT 代表 POINTER,在 DNS 系统有唯一性,将 IP 地址与规范化的主机名联系起来。PTR 记录其实是 NDS 系统的一部分,但是由专门的区域文件组成的,使用的是传统的 in-addr.arpa 格式。

最简单的理解就是使用一个在线服务来查询一个IP对应的域名服务
DNS反向查询第1张

原理就是 dig -x ip

➜  ~ dig -x 192.30.252.153

...

;; ANSWER SECTION:
153.252.30.192.in-addr.arpa. 3505 IN    PTR    lb-192-30-252-153-iad.github.com.

...

反向查询的一个应用,是可以防止垃圾邮件,即验证发送邮件的IP地址,是否真的有它所声称的域名,如果反向查询和声称不一致,那么就可以认为有风险。

注意:
反向查询是根据一个资源记录查询域名,不一定是IP。这个资源记录可能是A记录,也可能是CNAME记录或者MX记录(见“DNS开源服务器BIND最小配置详解”),而PTR记录用于从IP地址反查域名。

DNS反向查询的使用场景
  • rDNS的最初用途:通过traceroute,ping和SMTP电子邮件的“Received:”跟踪标题字段进行网络故障排除,网站跟踪用户(特别是在Internet论坛上)等。

  • 一种电子邮件反垃圾邮件技术:检查rDNS中的域名是否可能来自拨号用户,或动态分配的地址不太可能被合法邮件服务器使用。这些IP地址的所有者通常会为其分配通用的rDNS名称,例如“1-2-3-4-dynamic-ip.example.com”。一些反垃圾邮件过滤器假设来自这些地址的电子邮件可能是垃圾邮件,并可能拒绝连接。

  • 向确认反向DNS(FCrDNS)验证可以创建验证的形式示出了域名的所有者,并且已经在给定IP地址的服务器的所有者之间的关系有效。虽然不是很正全面,但这种验证足够强大,经常用于白名单目的,因为垃圾邮件制造者和钓鱼者在使用僵尸计算机伪造域记录时通常无法实现前向验证。

  • 系统日志记录或监视工具通常会接收仅由IP地址指定的相关设备的条目。为了提供更多可用的数据,这些程序通常在写入日志之前执行反向查找,从而写入名称而不是IP地址。

从使用场景中也能发现这个技术点也是攻守双方博弈的战场,防守方通过反向查询来确认攻击方的信息,而攻击方为了隐藏自己的信息,也会让反向查询得到的域名并不是真实的,因为攻击者会在反向查找的记录中插入伪造的数据,达到迷惑的作用。

实验

为了加强理解,我写了段py代码来帮助理解

import sys
import socket

try:
    # gethostbyaddr的作用是通过IPv4的地址来获取主机信息,并放在hostent结构体中
    result = socket.gethostbyaddr(sys.argv[1])

    # 显示查找到的主机名
    print("Primary hostname: " + result[0])

    # 显示还返回的可用地址列表
    print("Addresses: ")
    for item in result[2]:
        print("           " + item)
except socket.error as e:
    print("Failed to look up hostname:", e)

运行:查询 127.0.0.1 ,得到了域名

(python3) ➜  dns_anti_found python foundip.py 127.0.0.1      
Primary hostname: localhost
Addresses: 
           127.0.0.1
DNS反向查询第2张

运行:查询百度的ip 115.239.211.110,发现是Unknown host

(python3) ➜  dns_anti_found python foundip.py 115.239.211.110
Failed to look up hostname: [Errno 1] Unknown host

我猜测,不是每一个IP地址都存在反向的映射(事实上很多IP地址就没有对应的域名),后面查了一下,发现这个猜测是错误的,

手动在/etc/hosts下增加一下映射
DNS反向查询第3张
发现域名可以查询出来了
DNS反向查询第4张

查询网上资料之后,得出结论,要使用socket.gethostXxx( )函数,本地要有反向解析的服务。如果你使用的不是服务器,是没有反向解析服务的,如果你使用本地电脑,肯定没有域名解析服服务。那么 本地的/etc/hosts就会提供DNS服务。你添加上记录,那么能查询出来,你没添加上去,那么就什么都没有,只能报错了。

参考#

https://www.cnblogs.com/wunaozai/p/3753731.html
https://www.dnsqueries.com/zh/reverse_lookup.php
https://blog.csdn.net/t_tzz/article/details/79779226

 
转自https://www.cnblogs.com/mysticbinary/p/13344930.html

免责声明:文章转载自《DNS反向查询》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇页面框架加载完自动执行函数$(function(){});CSS3的新增选择器下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

CentOS 7 修改设置静态IP和DNS

用虚拟机装了个CentOS,使用的NAT的网络模式,采用的是动态ip,所以ip经常莫名其妙的就变了。 如果只用putty这类工具还好,只需要改一下ip地址就可以了。但在项目中,很多地方,都需要指定虚拟机的ip地址。这样一来,当ip发生改变后,项目中需要改变的地方非常之多,如配置文件、redis、数据库、solr等,非常非常麻烦。 为了防止再次启动系统的时候...

Centos7 下配置主从dns(bind)

dns 主备搭建 环境说明 系统:CentOS 7.6 x86_64 主master:10.0.0.182 备slave:10.0.0.115 1、安装主要包,在主备机器都执行如下命令 yum install bind bind-utils bind-chroot -y 2、进行配置配置 主master上配置 /etc/named.conf // // n...

Nginx中rewrite实现二级域名、三级域名、泛域名、路径的重写

最常见的: 静态地址重定向到带参数的动态地址 rewrite "^(.*)/service/(.*).html$" $1/service.php?sid=$2 permanent;   反过来: 带参数的动态地址重定向到静态地址 if ($query_string ~* id=(.*)) { set $id $1; rewrite "^(.*)/artic...

〖Linux〗noip免费域名申请,及更新域名的API

1. 登录 http://www.noip.com2. 选择 Hosts/Redirects -- Add A Host3. 填写 期望的域名即可(如下图) 4. 更新域名的API: wget -q -O - --http-user=username --http-password=passwd "https://dynupdate.no-ip.com/...

Nginx实现多域名证书HTTPS

目前公司有2个域名,其中这次涉及到3个子域名需要更改为HTTPS传输,分别为: passport.abc.com www.test.com admin.test.com 那么就涉及到购买ssl证书的问题,由于价格问题使用3个不同的证书(每个域名一个)。 由于实验环境,我们就手动生成3个ssl证书 建立目录,及进入目录 [root@gz122haproxy9...

Windows7&IIS7.5部署Discuz全攻略

组长说在内网部署一个论坛,这可难不倒我,装个Discuz嘛。部署环境就一台普通的PC,四核i3,Windows7。这就开搞了。 准备工作 系统是Windows 7 专业版,自带IIS7.5(家庭版不带)。IIS7开始带了FastCgi,对PHP支持好了许多,所以也不必装Apache啦。下载 PHP 5.4、 MySQL 5.5 以及Discuz X2。 对...