TOC

DNS 反解(反向解析)

在日常网络排查中,我们经常会把域名解析成 IP 地址,例如将 www.example.com 解析为 93.184.216.34。这个过程叫做正向解析(Forward DNS Lookup)
而 DNS 反解(Reverse DNS Lookup)则正好相反:根据 IP 地址查询对应的域名。

-> % dig +noall +answer -x 8.8.8.8
8.8.8.8.in-addr.arpa.   17864   IN  PTR dns.google.

这里表示 IP 地址 8.8.8.8 对应的主机名为 dns.google

原理

核心:DNS PTR(Pointer)记录。

DNS 设计了一套特殊域名空间:in-addr.arpa,比如要查询 120.48.97.18 的反解记录,就去查询域名 18.97.48.120.in-addr.arpa.(IPv4 地址倒序)的 PTR 记录。

可以通过以下命令观察全过程:

dig +trace -x 8.8.8.8

IPv6 地址反解

只是域名空间改成了 ip6.arpa 而已,然后地址变长了一些,不再是 4 段,而是 32 段。

IPv4 地址 32 bits,每段 8 bits(0-255),分成 4 段。
IPv6 地址 128 bits,每段 4 bits(0-f),分成 32 段。

-> % dig +noall +answer -x 2001:4860:4860::8888
8.8.8.8.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.6.8.4.0.6.8.4.1.0.0.2.ip6.arpa. 9710 IN PTR dns.google.

注意

  1. 多数 IP 没有反向解析。
  2. 正向解析和反向解析是由不同管理员独立配置,不一定对应。
  3. PTR 记录通常由 IP 地址拥有者配置,普通人无法直接操作。
    如果是云服务商提供的 IP,要看他们是否提供了 “反向解析” 或 “PTR Record” 配置功能,如果没有就只能提交工单,找售后了。

应用场景

核心的应用场景:邮件系统会检查发信 IP 是否存在合法 PTR 记录。

邮件系统经常要求正反向一致验证,英文叫做 Forward Confirmed Reverse DNS (FCrDNS)。
我随便找了一封阿里云的邮件,根据 Received 中给的发信 IP 做一个检验:

-> % dig +noall +answer -x 47.90.197.163
163.197.90.47.in-addr.arpa. 7200 IN PTR out197-163.us.a.dm.aliyun.com.
-> % dig +noall +answer out197-163.us.a.dm.aliyun.com.
out197-163.us.a.dm.aliyun.com. 60 IN    A   47.90.197.163

这里面 47.90.197.163 和 out197-163.us.a.dm.aliyun.com. 就是能够互相对应的。

很多邮件服务商会将 FCrDNS 作为信誉评估的重要指标,如果没有对应上,邮件可能被判定为可疑来源。

除此之外,反解还可辅助判断 IP 归属:

  1. 运维排查异常连接时手动反查;
  2. 部分服务写日志时会自动记录 PTR 主机名;
  3. 少数系统也用于访问控制。

参考资料与拓展阅读

如果你有魔法,你可以看到一个评论框~