前一篇文章我们介绍了如何快速搭建 DNS 服务器,本文将向大家介绍如何向 DNS 服务器添加反向解析记录,支持将指定的 IP 解析到对应的域名。
什么是反向域名解析
DNS 服务器里面有两种类型的 zone,即“正向查找区域”和“反向查找区域”,正向查找区域记录域名到 IP 的映射关系,反向查找区域记录 IP 到域名的映射关系,通过反向查找我们可以得到指定 IP 对应的域名信息,这个过程我们称之为反向域名解析,而 IP 映射到域名的信息记录我们称之为 PTR 记录。
反向解析的用途
邮件交换记录中有 A 记录和 PTR 记录两种,A 记录解析域名到 IP,PTR 记录解析 IP 到域名。反向域名解析主要用于确保邮件交换记录的有效性,用于拦截邮件服务系统中的垃圾邮件。
一般情况下,垃圾邮件发送者使用动态分配的 IP 地址或者没有注册域名的 IP 地址来发送垃圾邮件,通过反向解析可以判断邮件的合法性。当邮件服务器收到邮件时,邮件服务器会查看邮件由哪个 IP 地址发出,然后根据这个 IP 地址进行反向解析,如果反向解析得到的域名与发送方邮件的域名不一致则认为邮件发送者不是从真正的邮件服务器发出,则可以拒绝接收此邮件。比如当anonymous@qq.com 收到一份来自 simulate@163.com 的邮件时,qq邮件服务器会查看邮件来源的 IP,根据 IP 进行反向解析,如果解析到的域名和 163.com 一致则接收邮件,否则认为邮件来源的 IP 伪造拒绝这封邮件。
反向解析记录在域名系统中的实现
我们知道域名系统中正向解析是通过域名出发去寻找 IP 地址的,整个域名系统层次结构就是一个从根开始的域名树,但是反向解析是从 IP 出发查找域名,而一个 IP 地址可以对应多个域名,在域名树中查找 IP 对应的所有域名就需要遍历域名树,这样实现基本不可能。为了完成反向域名解析,域名系统提供了一个特别的域名,称之为反向解析域 in-addr.arpa,需要被解析的 IP 地址会被表达成类似域名的可显示串的形式,后缀为 in-addr.arpa。比如 IP 地址 61.129.7.47 的反向解析域名表达式为:47.7.129.61.in-addr.arpa,从而利用地址作为索引的域名空间完成快速的反向解析。
添加反向解析记录
我们以 IP 地址为 139.199.199.225 的 DNS 服务器为例(假设 139.199.199.225 已经搭建了 DNS 服务器,如何搭建 DNS 服务可以查考之前的文章,这里不在阐述。),介绍如何添加反向解析记录:
- 修改 /etc/named.rfc1912.zones 文件,假设需要反向解析的 IP 为 61.129.7.47,如下加入反向解析域配置;
zone "7.129.61.in-addr.arpa" IN {
type master;
file "data/61.129.7.zone";
};
- 新增 /var/named/data/61.129.7.zone 配置文件,配置文件如何所示;
$TTL 1D
@ IN SOA dns.qq.com. webmaster.qq.com. (
20181125 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS dns.qq.com.
@ IN MX 10 mail.qq.com.
4 IN PTR mail.qq.com.
88 IN PTR ptr.qq.com.
- 通过命令 systemctl restart named.service 重启 DNS 服务器,通过 netstat -npl|grep named 截图如下所示;
验证 DNS 服务器有效性
- 通过修改 PC 电脑的 /etc/resolv.conf 配置文件指定 nameserver,将 PC 的默认 DNS 服务器设置为我们搭建的 DNS 服务器;
- 通过 PC 电脑执行命令 dig -x 61.129.7.4,查看反向解析情况是否生效,结果如下图所示则反向记录生效;
- 通过 PC 电脑执行命令 dig -x 61.129.7.88,查看反向解析情况是否生效,结果如下图所示则反向记录生效;
至此,我们搭建了具备反向解析能力的 DNS 服务器。