设置 PTR 记录
除非服务提供商授予我们访问权限以更改 PTR 记录或者以其他方式将控制权委托给我们自己的 DNS 服务器,否则我们将无法控制地址的解析。
如果我们有动态 IP 地址,则更不可能设置 PTR 记录,因为当 IP 更改时,记录将变得不正确。
在大多数情况下,我们会要求 rDNS 与 ISP 或者网络托管服务提供商一起设置,因为他们将对此进行控制。
在过去,我们可以将 in-addr.arpa 域指向的最小 IP 地址块是 /24 范围,因此如果我们可以控制 1.1.1.0 1.1.1.255 这将是 1.1.1.0/24 的范围并且我们可以将范围委托给我们自己的名称服务器。
但是,现在使用无类反向 DNS,可以将较小的范围子委托给具有 CNAME 记录的特定名称服务器。
DNS 传统上用于将域名解析为 IP 地址,这称为正向解析。
反向 DNS (rDNS) 与此相反,将 IP 地址解析为域。
rDNS 使用 arpa(地址和路由参数区域)顶级域 (TLD)。
in-addr.arpa 域用于 IPv4,而 ip6.arpa 用于 IPv6 地址。
反向 DNS 是干什么用的?
人们可以出于与 DNS 相同的原因使用反向 DNS,它比一串数字更容易记住和识别名称。
尽管 rDNS 不如典型的正向 DNS 重要,例如我们需要正向 DNS 记录才能加载网站,但是如果没有设置反向 DNS,这仍然可以按预期工作。
rDNS 的一个常见用途是用于反垃圾邮件目的,即可以根据域名查找 IP 地址。
许多邮件服务器被设置为拒绝来自没有 rDNS 的 IP 地址的邮件。
通常 rDNS 记录是什么并不重要,它通常只是设置为邮件服务器的主域名。
通常,这不是防止垃圾邮件的好方法,但它很常用。
rDNS 通常也用于日志记录,以帮助为人类提供可读数据,而不是完全由 IP 地址组成的日志。
用于将 IP 地址解析为域名的 DNS 记录称为指针 (PTR) 记录。
如果我们为 8.8.4.4 的 IP 地址查找 rDNS,实际的 PTR 记录是反向的 IP 地址,因此在本例中为 4.4.8.8.in-addr.arpa
测试
一旦你有了 PTR 记录,一个简单的测试方法是使用带有 -a 标志的 ping 命令,它将地址解析为主机名。
C:\Windows\system32>ping -a 8.8.4.4 Pinging google-public-dns-b.google.com [8.8.8.8] with 32 bytes of data: Reply from 8.8.4.4: bytes=32 time=5ms TTL=57
目的地有没有响应不重要,重要的是8.8.4.4已经解析到google-public-dns-b.google.com的记录
我们还可以使用 nslookup 进行测试,在查找 IP 地址时,它会自动执行反向查找。
在下面的示例中,我使用 8.8.8.8 作为我计算机上的 DNS 服务器,这就是为什么首先指定它,只是为了混淆。
C:\Windows\system32>nslookup 8.8.4.4 Server: google-public-dns-a.google.com Address: 8.8.8.8 Name: google-public-dns-b.google.com Address: 8.8.4.4
在 Linux 中,我们还可以将 dig 命令与 -x 结合使用,这将执行反向查找。
[jack@onitroad ~]# dig -x 8.8.4.4 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.1 <<>> -x 8.8.4.4 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63804 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;4.4.8.8.in-addr.arpa. IN PTR ;; ANSWER SECTION: 4.4.8.8.in-addr.arpa. 86400 IN PTR google-public-dns-b.google.com. ;; Query time: 839 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Tue Nov 24 14:28:04 2014 ;; MSG SIZE rcvd: 82