参考
- 什么是DNS的正向解析与反向解析?代码实现?
正反 DNS
正向 DNS
正向 DNS:域名 --> IP(从域名解析 IP 地址)
作用:正向解析又称标准查询,根据计算机的DNS名称(即域名)解析出相应的IP地址
$ nslookup www.baidu.com
Server: 192.168.8.1
Address: 192.168.8.1#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 110.242.68.3
Name: www.a.shifen.com
Address: 110.242.68.4
反向 DNS
- 反向 DNS(rDNS):IP --> 域名(从 IP 地址对域名的 DNS 查找)
- 作用:根据计算机的IP地址解析其DNS名称,多用来为服务器进行身份验证(就是通过 IP 反向查找,验证对方的身份)
- 由于反向解析的特殊性,RFC 1304规定了固定格式的反向解析区域后缀格式in-addr.arpa
- 反向解析区域文件与正向解析区域文件格式相同,只是其主要内容是用于建立IP地址到DNS域名的转换记录,即PTR资源指针记录
- 注意: 与DNS名称不同,当IP地址从左到右读时,它们是以相反的方式解释的
# 注意此处 IP 是反着的
$ nslookup 3.68.242.110
Server: 192.168.8.1
Address: 192.168.8.1#53
Non-authoritative answer:
110.242.68.3.in-addr.arpa name = ec2-3-68-242-110.eu-central-1.compute.amazonaws.com. # 这个名称应该是 云主机名
Authoritative answers can be found from:
# 此 IP 可能没有建立 反向DNS 映射 也就是 域中没有 PTR 记录
$ nslookup 4.68.242.110
Server: 192.168.8.1
Address: 192.168.8.1#53
** server can't find 110.242.68.4.in-addr.arpa: NXDOMAIN
# 此 IP 是 google 的 dns
$ nslookup 8.8.8.8
Server: 192.168.8.1
Address: 192.168.8.1#53
Non-authoritative answer:
8.8.8.8.in-addr.arpa name = dns.google.
Authoritative answers can be found from:
反向 DNS 查找过程
由于正向 DNS 将主机名映射到 IP 地址,因此 rDNS(或反向 DNS)表明将服务器 IP 地址映射回主机名。
使用 rDNS,将 IP 地址反转,然后将in-addr.arpa
添加到末尾。
例如,如果我们使用 IPv4 地址
142.250.192.196
,使用 rDNS,它将变为196.192.250.142.in-addr.arpa
这种 IP 地址进行反向 DNS 解析的方法用到的是 PTR 记录。如果域有 PTR 记录,我们可以使用下面提到的方法进行 rDNS 查找。
反向 DNS 的使用
rDNS主要用于确保邮件交换记录的有效性,用于拦截邮件服务系统中的垃圾邮件。
一般情况下,垃圾邮件发送者使用动态分配的 IP 地址或者没有注册域名的 IP 地址来发送垃圾邮件,通过反向解析可以判断邮件的合法性。当邮件服务器收到邮件时,邮件服务器会查看邮件由哪个 IP 地址发出,然后根据这个 IP 地址进行反向解析,如果反向解析得到的域名与发送方邮件的域名不一致则认为邮件发送者不是从真正的邮件服务器发出,则可以拒绝接收此邮件。比如当 me@qq.com
收到一份来自 fake@163.com
的邮件时,qq邮件服务器会查看邮件来源的 IP,根据 IP 进行反向解析,如果解析到的域名和 163.com
一致,则接收邮件,否则认为邮件来源 IP 伪造成了163服务器 IP ,则拒绝这封邮件。
尽管 rDNS 记录可以阻止垃圾邮件,但主要用作额外保护,它不是一种可靠的方法。需要注意的是,仅启用 rDNS 仍可能由于各种原因导致消息被拒绝。此外,rDNS 还用于分析和日志记录,帮助提供人们可读的数据,而不是完全由 IP 地址组成的日志。