DNS,这篇给你讲明白了( 六 )


反向 DNS 查询
我们上面一直讨论的是 DNS -> IP 的这种转换方式,这种方式也是 DNS 的精髓所在 。但是如果你认真看了图 7 - 1 的话,你会发现还存在一种 IP -> DNS 的转换方式,这种反向的转换也被叫做反向 DNS 查询 。他们之间的关系很像 ARP 和 RARP。
反向 DNS 查询向 DNS 服务器查询 PTR(Pointer Record)记录,如果服务器没有 PTR 记录,则无法解析反向查找这个过程 。PTR 也是一种 RR 资源记录,见表 7 - 1 。
PTR 记录会存储 IP 地址,反向查询时,PTR 中存储的 IP 地址会颠倒过来,并附上 .in-addr.arpa 字段,比如如果域的 IP 地址为 192.137.8.22,那么反向查询时,PTR 记录就是 22.8.137.192.in-addr.arpa。
反向 DNS 查询通常用于电子邮件协议中,电子邮件服务器会检查电子邮箱中的电子邮件消息是否来自真实有效的服务器,垃圾邮件发送者经常使用被劫持机器的,这些邮件过来后就不会有 PTR 记录 。电子邮件服务器会拒绝不支持反向查找的服务器或者不太合法的服务器邮件 。
SOA 记录
如果是权威 DNS 服务器的响应的话,会显示记录存储有关区域的重要信息,这种信息就是 SOA 记录 。所有的 DNS 区域都需要一个 SOA 记录才能符合 IETF 标准 。SOA 记录对于区域传输也很重要 。
SOA 记录除具有 DNS 解析器响应的字段外,还具有一些额外的字段,如下

DNS,这篇给你讲明白了

文章插图
 
图 7-17
具体字段含义
 
  • PNAME:即 Primary Name Server,这是区域的主要名称服务器的名称 。
  • RNAME:即 Responsible authority's mailbox,RNAME 代表管理员的电子邮件地址,@ 用 . 来表示,也就是说 admin.example.com 等同于 admin@example.com 。
  • 序列号:即 Serial Number,区域序列号是该区域的唯一标识符 。
  • 刷新间隔:即 Refresh Interval,在请求主服务器提供 SOA 记录以查看其是否已更新之前,辅助服务器应等待的时间(以秒为单位) 。
  • 重试间隔:即 Retry Interval,服务器应等待无响应的主要名称服务器再次请求更新的时间 。
  • 过期限制:即 Expire limit,如果辅助服务器在这段时间内没有收到主服务器的响应,则应停止响应对该区域的查询 。
 
上面提到了主要名称服务器和辅助名称服务器,他们之间的关系如下 。
DNS,这篇给你讲明白了

文章插图
 
图 7-18
这块我们主要解释了 RR 类型为 A(IPv4) 和 SOA 的记录,除此之外还有很多类型,这篇文章就不再详细介绍了,读者朋友们可以阅读 《TCP/IP 卷一 协议》和 cloudflare 的官网 https://www.cloudflare.com/learning/dns/dns-records/ 查阅,值得一提的是,cloudflare 是一个学习网络协议非常好的网站 。
区域传输和 DNS NOTIFY
区域传输通常指一块区域内 DNS 服务器中的 RR 资源更新,这样做的目的是为了保证多台服务器保证内容同步 。如果区域中一台服务器失效了,那么其他服务器可以临时顶上,充当临时 DNS 服务器的角色 。区域传输通常在轮询(polling)后开启,在轮询中,从服务器会周期性的检查主服务器,查看区域是否已经更新,区域传输需要开启 。
一旦启动区域传输,就会存在两种传输方式:
 
  1. 全量传输:即传输整个区域的消息,全量传输会传输整个区域(使用 AXFR)的消息 。
  2. 增量传输:增量传输就是传输一部分消息,增量传输使用(使用 DNS IXFR)的消息 。
 
但是使用轮询这种方式有一些弊端,因为从服务器会定期检查主服务器上内容是否更新,这是一种资源浪费,因为绝大多数情况下都是一次无效检查,所以为了改善这种情况,DNS 设计了 DNS NOTIFY 机制,DNS NOTIFY 允许修改区域内容后主服务器通知从服务器内容需要更新,应该启动区域传输 。
DNS 网络排查工具
DNS 常用的排查工具有两种,一种是 nslookup,这是一般书籍中推荐使用的排查工具,下面我们先来介绍一下这个工具的使用,一会儿我们再来介绍另外一种工具 。
nslookup
nslookup 是一款用来解决 DNS 相关问题排查的工具 。


推荐阅读