Wireshark TS | DNS 后缀解析问题

410 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

问题背景

一直以来对 DNS 协议处于一个一知半解的的水平,仅仅是理解它工作的原理,对于 DNS 数据包也只是停留在基本的分析。也是近期打算系统的学习研究下 DNS 协议,在学习过程中从数据包分析的角度记录下碰到的问题,本案例为 DNS 后缀解析相关的一个问题记录。

问题信息

问题来由是在办公电脑上做了 nslookup 解析,同时用 Wireshark 做了捕获,信息如下:

$ nslookup www.baidu.com
服务器:  UnKnown
Address:  xx.xx.xx.xx         <----- 公司 local DNS ip

DNS request timed out.
    timeout was 2 seconds.
非权威应答:
名称:    www.a.shifen.com
Addresses:  180.101.49.12
          180.101.49.11
Aliases:  www.baidu.com

数据包跟踪文件如下,Client 和 LocalDNS 进行了一共 8 次交互( Query 和 Response 对应),包括 PTR、A 和 AAAA 解析记录。

问题分析

数据帧 No.1-2

首先客户端会向 Local DNS 服务器进行 PTR 查询请求,查询的 IP 为 Local DNS 服务器的 IP。格式采用非常特定的格式,譬如 IP 192.168.0.1,请求名字为 1.0.168.192.in-addr.arpa,即反转 IP 地址后附加 .in-addr.arpa。

PTR 记录是 A 记录的逆向记录,又称做 IP 反查记录或指针记录,负责将 IP 反向解析为域名。

之后 Local DNS 服务器响应查询结果为 No such name 。 在 nslookup 执行显示结果就为 服务器: UnKnown 。 此处是由于 Local DNS 服务器一般习惯性只使用默认的正常查找区域,也就是只使用 DNS 服务器把域名解析成 IP 地址的功能。出现上述情况,实际上是因为 DNS 服务器没有创建反向查找区域,DNS 服务器无法根据自己的 IP 地址解析成对应的域名。另外值的注意的是这个报文中还会包含一个 AUTHORITY SECTION,内容为该主域名(譬如 168.192.in-addr.arpa)的 SOA 记录。

以下以 114.114.114.114 PTR 解析为例,指定 DNS 服务器为 8.8.8.8 ,查询 114.114.114.114 ,如下:

$ nslookup -qtype=ptr 114.114.114.114 8.8.8.8
服务器:  dns.google
Address:  8.8.8.8

非权威应答:
114.114.114.114.in-addr.arpa    name = public1.114dns.com

$

首先客户端仍会向 DNS 服务器 8.8.8.8 进行 IP 8.8.8.8 的 PTR 查询请求,正常返回查询响应域名为 dns.google,之后再向 DNS 服务器 8.8.8.8 进行 IP 114.114.114.114 的 PTR 查询请求,正常返回查询响应域名为 public1.114dns.com。

数据帧 No.3-6

没进行抓包之前,个人以为是直接进行 www.baidu.com 的 A 记录和 AAAA 记录请求,然后得到相关响应。但从实际抓包结果来看,过程并非如此。

首先客户端会向 Local DNS 服务器进行 No.3 A 记录查询请求,查询的域名为 www.baidu.com.xx.xx.com.cn 。 格式采用特定的格式,会在 www.baidu.com 附加后缀 xx.xx.com.cn 。

此处附加的后缀 xx.xx.com.cn 到底是什么? 查了很多资料,发现应该是和公司使用的域相关,譬如所在的域 aa.bb.com.cn,通过 ipconfig/all 可看到主 DNS 后缀为 aa.bb.com.cn,同时也包括 DNS 后缀搜索列表 aa.bb.com.cn 、 bb.com.cn 以及 com.cn

典型名称解析过程使用主 DNS 后缀和任何特定于连接的 DNS 后缀。 如果这些后缀不起作用,则名称解析过程将尝试解析主 DNS 后缀。

在客户端上配置域后缀搜索列表时,仅使用该列表。 不使用主 DNS 后缀和任何特定于连接的 DNS 后缀,也不尝试解析主后缀。

客户端有一个 DNS 后缀搜索列表(ipconfig /all 可以查询该列表内容),当我们查询的域名不存在时,DNS 会将你查询的地址加上该 DNS 后缀再尝试进行搜索。

$ ipconfig/all

Windows IP 配置

   主机名  . . . . . . . . . . . . . : A123
   主 DNS 后缀 . . . . . . . . . . . : aa.bb.com.cn
   节点类型  . . . . . . . . . . . . : 混合
   IP 路由已启用 . . . . . . . . . . : 否
   WINS 代理已启用 . . . . . . . . . : 否
   DNS 后缀搜索列表  . . . . . . . . : aa.bb.com.cn
                                       bb.com.cn
                                       
$ nslookup -all
默认服务器:  (null)

设置选项:
  nodebug
  defname
  search
  recurse
  nod2
  novc
  noignoretc
  port=53
  type=A+AAAA
  class=IN
  timeout=2
  retry=1
  root=A.ROOT-SERVERS.NET.
  domain=aa.bb.com.cn
  MSxfr
  IXFRversion=1
  srchlist=aa.bb.com.cn/bb.com.cn/com.cn

默认服务器:  UnKnown
Address:  xx.xx.xx.xx

>                                       

因此客户端首先会向 Local DNS 服务器进行 No.3 A 记录查询请求,查询的域名为 www.baidu.com.aa.bb.com.cn, 之后 Local DNS 服务器响应查询结果为 No.4 No such name , 同时包含一个 AUTHORITY SECTION,内容为该主域名(譬如 aa.bb.com.cn)的 SOA 记录。

客户端之后会继续向 Local DNS 服务器进行 No.5 AAAA 记录查询请求,查询的域名为 www.baidu.com.aa.bb.com.cn, 之后 Local DNS 服务器响应查询结果为 No.6 No such name , 同样包含一个 AUTHORITY SECTION,内容为该主域名(譬如 aa.bb.com.cn)的 SOA 记录。

数据帧 No.7-10

上述 No.3-6 过程分析得知,DNS 查询请求会附加域后缀搜索列表,附加后缀 aa.bb.com.cn 无结果后,继续附加后缀 bb.com.cn 尝试请求,过程保持一致。

客户端向 Local DNS 服务器进行 No.7 A 记录查询请求,查询的域名为 www.baidu.com.bb.com.cn, 之后 Local DNS 服务器响应查询结果为 No.8 No such name , 同时包含一个 AUTHORITY SECTION,内容为该主域名(譬如 bb.com.cn)的 SOA 记录。

客户端继续向 Local DNS 服务器进行 No.9 AAAA 记录查询请求,查询的域名为 www.baidu.com.bb.com.cn, 之后 Local DNS 服务器响应查询结果为 No.10 No such name , 同样包含一个 AUTHORITY SECTION,内容为该主域名(譬如 bb.com.cn)的 SOA 记录。

数据帧 No.11和No.18、No.12-13

同样在附加后缀 bb.com.cn 无结果后,继续附加后缀 com.cn 尝试请求,过程保持一致。

这里稍微有点问题的是,在客户端向 Local DNS 服务器进行 No.11 A 记录查询请求,查询的域名为 www.baidu.com.com.cn, 但之后 Local DNS 服务器响应超时,超过了 2s ,因此在 nslookup 执行过程中显示了 DNS request timed out 提示,而抓包的结果一直到第 18 个数据包才由 Local DNS 服务器返回响应,查询结果为 No.18 No such name

$ nslookup www.baidu.com
...

DNS request timed out.        <----- DNS 请求超时
    timeout was 2 seconds.

...

之后客户端继续向 Local DNS 服务器进行 No.12 AAAA 记录查询请求,查询的域名为 www.baidu.com.com.cn, 之后 Local DNS 服务器响应查询结果为 No.13 No such name

数据帧 No.14-17

最后数据帧 No.14-17 即为真正请求 www.baidu.com 的 A 记录和 AAAA 记录请求,过程不再赘述,最后请求响应结果包含 CNAME 和 A 记录。

$ nslookup www.baidu.com
...

非权威应答:
名称:    www.a.shifen.com
Addresses:  180.101.49.12
          180.101.49.11
Aliases:  www.baidu.com

问题总结

诚如开头所说,是在公司办公电脑上所做的测试,包含了域相关环境,因此使用了域后缀搜索列表。如果是单机所进行的 DNS 查询请求并无相关内容,除非手动设置了相关配置,包括主 DNS 后缀、任何特定于连接的 DNS 后缀或者后缀搜索列表。

问题参考

docs.microsoft.com/zh-CN/troub…

social.technet.microsoft.com/Forums/lync…

blog.csdn.net/liliuteng/a…