目录

  • DNS 域名系统
  • nslookup
  • 初识 nslookup 工具
  • nslookup 命令语法
  • 实验操作
  • ipconfig
  • 使用 Wireshark 追踪 DNS
  • 实验操作
  • 问题解答
  • nslookup 的 DNS 查询①
  • 实验步骤
  • 问题解答
  • nslookup 的 DNS 查询②
  • 实验步骤
  • 问题解答
  • nslookup 的 DNS 查询③
  • 实验步骤
  • 问题解答
  • 参考资料

DNS 域名系统

域名系统 DNS(Domain Name System) 是互联网使用的命名系统,用于把便于大家使用的机器名字转换为 IP 地址。许多应用层软件经常直接使用 DNS,但计算机的用户只是间接而不是直接使用域名系统。 互联网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS。DNS 被设计为一个联机式数据库系统,并采用客户服务器方式,使大多数名字都在本地进行解析。名字到 IP 地址的解析是由若干个域名服务器程序完成的,域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器

当一个应用进程需要把主机名解析为 IP 地址是,该用户进程就调用解析程序,并成为 DNS 的一个客户,把待解析的域名放在 DNS 请求报文中,以 UDP 用户数据报的方式发给本地域名服务器。本地域名服务器查找域名后,把对应的 IP 地址放在回答报文中返回。若本地域名服务器不能回答该请求,则该本地域名服务器就暂时成为 DNS 中的另一个客户,并向其他域名服务器发出查询请求。

wireshark检索域名 wireshark 域名_服务器

nslookup

初识 nslookup 工具

nslookup 工具允许主机查询任何指定的 DNS 服务器的 DN S记录。DNS 服务器可以是根 DNS 服务器,顶级域 DNS 服务器,权威 DNS 服务器或中间 DNS 服务器。要完成此任务,nslookup 将 DNS 查询发送到指定的 DNS 服务器,然后接收 DNS 回复,并显示结果。要在 Windows 中运行,请打开命令提示符并在命令行上运行 nslookup。

wireshark检索域名 wireshark 域名_DNS_02


接下来我们来测试 3 个命令,首先我们想得到集美大学的官网:“ https://www.jmu.edu.cn/ ”的 IP 地址。

nslookup www.jmu.edu.cn

wireshark检索域名 wireshark 域名_服务器_03


说这个命令的作用是获取主机 www.jmu.edu.cn 的 IP 地址。此命令的响应提供两条信息:

  1. 提供响应的 DNS 服务器的名称和 IP 地址;
  2. 响应本身,即 www.jmu.edu.cn 的主机名和 IP 地址。本地 DNS 服务器很可能会迭代地联系其他几个 DNS 服务器来获得结果。

现在我们要获取发送 jmu.edu.cn 的 DNS 主机名:

nslookup -type=NS mit.edu

wireshark检索域名 wireshark 域名_DNS_04


通过添加选项 "-type=NS "和域名 "jmu.edu.cn"。命令的含义为 nslookup 将 NS 记录发送到默认的本地 DNS 服务器,转换为“人话”的含义为“获取发送 jmu.edu.cn 的权威 DNS 的主机名”,当不使用 -type 选项时,nslookup 将使用默认值,即查询 A 类记录。

来看看回显的数据,首先是提供响应的 DNS 服务器,即默认本地 DNS 服务器。紧随其后是以及 7 个 MIT 域名服务器,这些服务器中的每一个都是集美大学校园主机的权威 DNS 服务器。不过 nslookup 显示这些是非权威应答,表示着这个响应来自某个服务器的缓存,而不是来自权威 MIT DNS 服务器。最后显示了集美大学权威 DNS 服务器的 IP 地址。

接下来我们想试试不通过默认服务器,而是通过 DNS 服务器 bitsy.mit.edu 看看能不能成功解析集美大学官网。

nslookup www.jmu.edu.cu bitsy.mit.edu

wireshark检索域名 wireshark 域名_wireshark检索域名_05


看来不行哦,这个服务器上没有集美大学官网的信息。下面看一个成功的例子:

wireshark检索域名 wireshark 域名_服务器_06

nslookup 命令语法

nslookup [-option1] [-option2] host-to-find dns-server

nslookup 可以不添加选项,或者添加一两个甚至更多选项。

实验操作

  1. 运行 nslookup 以获取一个亚洲的 Web 服务器的 IP 地址。该服务器的IP地址是什么?

刚刚做过啦!
2. 运行 nslookup 来确定一个欧洲的大学的权威 DNS 服务器。

我选择的是剑桥大学 https://www.cam.ac.uk/

wireshark检索域名 wireshark 域名_DNS_07


wireshark检索域名 wireshark 域名_DNS_08


3.运行 nslookup,使用上一个操作中一个已获得的 DNS 服务器,来查询 Yahoo! 邮箱的邮件服务器。它的 IP 地址是什么?雅虎邮箱的域名为 “mail.yahoo.com”,我选择服务器 “auth0.dns.cam.ac.uk” 来找。

wireshark检索域名 wireshark 域名_wireshark检索域名_09


查找成功。这里也可以用递归来找:

wireshark检索域名 wireshark 域名_IP_10

ipconfig

IPConfig 实用程序和它的等价图形用户界面—— Windows 95/98 中的 WinIPCfg 可用于显示当前的 TCP/IP 配置的设置值。这些信息一般用来检验人工配置的 TCP/IP 设置是否正确。但是,如果你的计算机和所在的局域网使用了动态主机配置协议(Dynamic Host Configuration Protocol,DHCP——Windows NT 下的一种把较少的 IP 地址分配给较多主机使用的协议,类似于拨号上网的动态 IP 分配),这个程序所显示的信息也许更加实用。——百度百科

ipconfig 是主机中最实用的程序之一,调试网络问题时作用很大。ipconfig 可用于显示您当前的TCP/IP信息,包括您的地址,DNS服务器地址,适配器类型等。我们来看几个指令:

ipconfig /all

wireshark检索域名 wireshark 域名_服务器_11


主机可以缓存最近获得的 DNS 记录,使用 ipconfig 可以查看这些缓存记录:

ipconfig /displaydns

wireshark检索域名 wireshark 域名_wireshark检索域名_12


显示了一堆数据。每个条目显示剩余的生存时间(TTL)(秒)。

当我想要清除这些缓存,就需要使用这个指令:

ipconfig /flushdns

该指令将清除所有条目并从 hosts 文件重新加载条目。

使用 Wireshark 追踪 DNS

实验操作

熟悉 nslookupipconfig 之后,首先让捕获一些由常规上网活动生成的 DNS 数据包:

  1. 使用ipconfig清空主机中的DNS缓存。
    由于我不想搞没这些数据,所以跳过。

2.打开浏览器并清空浏览器缓存。

  1. 打开 Wireshark,然后在过滤器中输入:
ip.addr==your_IP_address

先使用 ipconfig 获取 IP 地址。此过滤器将删除既从你主机不发出也不发往你主机的所有数据包。

wireshark检索域名 wireshark 域名_服务器_13


4. 在 Wireshark 中启动数据包捕获。

wireshark检索域名 wireshark 域名_wireshark检索域名_14


emm……看样子干扰挺大!

5. 使用浏览器访问网页: http://www.ietf.org

wireshark检索域名 wireshark 域名_IP_15


6. 停止数据包捕获。

问题解答

由于干扰很大,我使用现成的包来分析。

wireshark检索域名 wireshark 域名_DNS_16


4. 找到DNS查询和响应消息。它们是否通过UDP或TCP发送?

wireshark检索域名 wireshark 域名_服务器_17


由此可见是 UDP。

5. DNS是查询消息的目标端口是什么? DNS响应消息的源端口是什么?

wireshark检索域名 wireshark 域名_DNS_18


wireshark检索域名 wireshark 域名_服务器_19


由此可见都是 53 端口。

6. DNS 查询消息发送到哪个 IP 地址?使用 ipconfig 来确定本地 DNS 服务器的 IP 地址。这两个 IP 地址是否相同?

wireshark检索域名 wireshark 域名_DNS_20


由于这不是我抓的包,此处无法验证。

7. 检查 DNS 查询消息。DNS 查询是什么 "Type" 的?查询消息是否包含任何 "answers"?

wireshark检索域名 wireshark 域名_DNS_21


Type 为 “A”,表示查询 IP 地址,没有任何 "answers"。

8. 检查DNS响应消息。提供了多少个"answers"?这些答案具体包含什么?

wireshark检索域名 wireshark 域名_DNS_22


提供了 2 个 "answers",是该域名的 2 个 IPV4 地址。

9. 考虑从您主机发送的后续 TCP SYN 数据包。 SYN 数据包的目的 IP 地址是否与 DNS 响应消息中提供的任何 IP 地址相对应?

wireshark检索域名 wireshark 域名_wireshark检索域名_23


是相对应的。

10. 这个网页包含一些图片。在获取每个图片前,您的主机是否都发出了新的 DNS 查询?

并没有,因为本机 DNS 已经被缓存了,因此不需要发起新的 DNS 查询。

nslookup 的 DNS 查询①

实验步骤

现在抓取 nslookup 产生的包。

  1. 启动数据包捕获。
  2. 使用nslookup查询 www.mit.edu

wireshark检索域名 wireshark 域名_DNS_24


3. 停止数据包捕获。

wireshark检索域名 wireshark 域名_服务器_25


我们只分析其中一个包。

问题解答

  1. DNS查询消息的目标端口是什么? DNS响应消息的源端口是什么?

wireshark检索域名 wireshark 域名_wireshark检索域名_26


wireshark检索域名 wireshark 域名_wireshark检索域名_27


目标端口和源端口都是 53。

2. DNS 查询消息的目标 IP 地址是什么?这是你的默认本地 DNS 服务器的 IP 地址吗?

wireshark检索域名 wireshark 域名_服务器_28


wireshark检索域名 wireshark 域名_IP_29


192.168.67.1,是我的默认本地 DNS 服务器的 IP 地址。

3. 检查 DNS 查询消息。DNS 查询是什么 "Type" 的?查询消息是否包含任何 "answers"?

wireshark检索域名 wireshark 域名_wireshark检索域名_30


Type 为 “A”,表示查询 IP 地址,没有任何 "answers"。

4. 检查 DNS 响应消息。提供了多少个 "answers"?这些答案包含什么?

wireshark检索域名 wireshark 域名_服务器_31


提供了 1 个 "answers",是该域名的 IPV4 地址。

nslookup 的 DNS 查询②

实验步骤

重复上一个实验,但换成以下命令:

nslookup -type=NS mit.edu

wireshark检索域名 wireshark 域名_IP_32


wireshark检索域名 wireshark 域名_DNS_33

问题解答

  1. DNS 查询消息发送到的 IP 地址是什么?这是您的默认本地 DNS 服务器的 IP 地址吗?

wireshark检索域名 wireshark 域名_wireshark检索域名_34


192.168.67.1,是我的默认本地 DNS 服务器的 IP 地址。

2. 检查DNS查询消息。DNS 查询是什么 "Type" 的?查询消息是否包含任何 "answers"?

wireshark检索域名 wireshark 域名_DNS_35


Type 为 “NS”,表示查询权威 DNS 服务器,没有任何 "answers"。

3. 检查 DNS 响应消息。响应消息提供的 MIT 域名服务器是什么?此响应消息还提供了 MIT 域名服务器的 IP 地址吗?

wireshark检索域名 wireshark 域名_wireshark检索域名_36


响应消息没提供 MIT 的域名的 IP 地址。

nslookup 的 DNS 查询③

实验步骤

重复上一个实验,但换成以下命令:

nslookup www.aiit.or.kr bitsy.mit.edu

wireshark检索域名 wireshark 域名_IP_37


wireshark检索域名 wireshark 域名_IP_38

问题解答

  1. DNS 查询消息发送到的 IP 地址是什么?这是您的默认本地 DNS 服务器的 IP 地址吗?

wireshark检索域名 wireshark 域名_wireshark检索域名_34


18.0.72.3,不是我的默认本地 DNS 服务器的 IP 地址。

2. 检查DNS查询消息。DNS 查询是什么 "Type" 的?查询消息是否包含任何 "answers"?

wireshark检索域名 wireshark 域名_IP_40


Type 为 “A”,表示查询 IP 地址,没有任何 "answers"。

3. 检查 DNS 响应消息。提供了多少个 "answers"?这些答案包含什么?

wireshark检索域名 wireshark 域名_IP_41


提供了 1 个 "answers",是该域名的 IPV4 地址。