DNS 域名系统
域名系统 DNS(Domain Name System) 是互联网使用的命名系统,用于把便于大家使用的机器名字转换为 IP 地址。许多应用层软件经常直接使用 DNS,但计算机的用户只是间接而不是直接使用域名系统。 互联网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS。DNS 被设计为一个联机式数据库系统,并采用客户服务器方式,使大多数名字都在本地进行解析。名字到 IP 地址的解析是由若干个域名服务器程序完成的,域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。
当一个应用进程需要把主机名解析为 IP 地址是,该用户进程就调用解析程序,并成为 DNS 的一个客户,把待解析的域名放在 DNS 请求报文中,以 UDP 用户数据报的方式发给本地域名服务器。本地域名服务器查找域名后,把对应的 IP 地址放在回答报文中返回。若本地域名服务器不能回答该请求,则该本地域名服务器就暂时成为 DNS 中的另一个客户,并向其他域名服务器发出查询请求。
nslookup
初识 nslookup 工具
nslookup 工具允许主机查询任何指定的 DNS 服务器的 DN S记录。DNS 服务器可以是根 DNS 服务器,顶级域 DNS 服务器,权威 DNS 服务器或中间 DNS 服务器。要完成此任务,nslookup 将 DNS 查询发送到指定的 DNS 服务器,然后接收 DNS 回复,并显示结果。要在 Windows 中运行,请打开命令提示符并在命令行上运行 nslookup。
接下来我们来测试 3 个命令,首先我们想得到集美大学的官网:“ https://www.jmu.edu.cn/ ”的 IP 地址。
nslookup www.jmu.edu.cn
说这个命令的作用是获取主机 www.jmu.edu.cn 的 IP 地址。此命令的响应提供两条信息:
- 提供响应的 DNS 服务器的名称和 IP 地址;
- 响应本身,即 www.jmu.edu.cn 的主机名和 IP 地址。本地 DNS 服务器很可能会迭代地联系其他几个 DNS 服务器来获得结果。
现在我们要获取发送 jmu.edu.cn 的 DNS 主机名:
nslookup -type=NS mit.edu
通过添加选项 "-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
看来不行哦,这个服务器上没有集美大学官网的信息。下面看一个成功的例子:
nslookup 命令语法
nslookup [-option1] [-option2] host-to-find dns-server
nslookup 可以不添加选项,或者添加一两个甚至更多选项。
实验操作
- 运行 nslookup 以获取一个亚洲的 Web 服务器的 IP 地址。该服务器的IP地址是什么?
刚刚做过啦!
2. 运行 nslookup 来确定一个欧洲的大学的权威 DNS 服务器。
我选择的是剑桥大学 https://www.cam.ac.uk/
3.运行 nslookup,使用上一个操作中一个已获得的 DNS 服务器,来查询 Yahoo! 邮箱的邮件服务器。它的 IP 地址是什么?
雅虎邮箱的域名为 “mail.yahoo.com”,我选择服务器 “auth0.dns.cam.ac.uk” 来找。
查找成功。这里也可以用递归来找:
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
主机可以缓存最近获得的 DNS 记录,使用 ipconfig 可以查看这些缓存记录:
ipconfig /displaydns
显示了一堆数据。每个条目显示剩余的生存时间(TTL)(秒)。
当我想要清除这些缓存,就需要使用这个指令:
ipconfig /flushdns
该指令将清除所有条目并从 hosts 文件重新加载条目。
使用 Wireshark 追踪 DNS
实验操作
熟悉 nslookup 和 ipconfig 之后,首先让捕获一些由常规上网活动生成的 DNS 数据包:
- 使用ipconfig清空主机中的DNS缓存。
由于我不想搞没这些数据,所以跳过。
2.打开浏览器并清空浏览器缓存。
- 打开 Wireshark,然后在过滤器中输入:
ip.addr==your_IP_address
先使用 ipconfig 获取 IP 地址。此过滤器将删除既从你主机不发出也不发往你主机的所有数据包。
4. 在 Wireshark 中启动数据包捕获。
emm……看样子干扰挺大!
5. 使用浏览器访问网页: http://www.ietf.org
6. 停止数据包捕获。
问题解答
由于干扰很大,我使用现成的包来分析。
4. 找到DNS查询和响应消息。它们是否通过UDP或TCP发送?
由此可见是 UDP。
5. DNS是查询消息的目标端口是什么? DNS响应消息的源端口是什么?
由此可见都是 53 端口。
6. DNS 查询消息发送到哪个 IP 地址?使用 ipconfig 来确定本地 DNS 服务器的 IP 地址。这两个 IP 地址是否相同?
由于这不是我抓的包,此处无法验证。
7. 检查 DNS 查询消息。DNS 查询是什么 "Type" 的?查询消息是否包含任何 "answers"?
Type 为 “A”,表示查询 IP 地址,没有任何 "answers"。
8. 检查DNS响应消息。提供了多少个"answers"?这些答案具体包含什么?
提供了 2 个 "answers",是该域名的 2 个 IPV4 地址。
9. 考虑从您主机发送的后续 TCP SYN 数据包。 SYN 数据包的目的 IP 地址是否与 DNS 响应消息中提供的任何 IP 地址相对应?
是相对应的。
10. 这个网页包含一些图片。在获取每个图片前,您的主机是否都发出了新的 DNS 查询?
并没有,因为本机 DNS 已经被缓存了,因此不需要发起新的 DNS 查询。
nslookup 的 DNS 查询①
实验步骤
现在抓取 nslookup 产生的包。
- 启动数据包捕获。
- 使用nslookup查询 www.mit.edu
3. 停止数据包捕获。
我们只分析其中一个包。
问题解答
- DNS查询消息的目标端口是什么? DNS响应消息的源端口是什么?
目标端口和源端口都是 53。
2. DNS 查询消息的目标 IP 地址是什么?这是你的默认本地 DNS 服务器的 IP 地址吗?
192.168.67.1,是我的默认本地 DNS 服务器的 IP 地址。
3. 检查 DNS 查询消息。DNS 查询是什么 "Type" 的?查询消息是否包含任何 "answers"?
Type 为 “A”,表示查询 IP 地址,没有任何 "answers"。
4. 检查 DNS 响应消息。提供了多少个 "answers"?这些答案包含什么?
提供了 2 个 "answers",是该域名的 IPV4 地址。
nslookup 的 DNS 查询②
实验步骤
重复上一个实验,但换成以下命令:
nslookup -type=NS mit.edu
问题解答
- DNS 查询消息发送到的 IP 地址是什么?这是您的默认本地 DNS 服务器的 IP 地址吗?
192.168.67.1,是我的默认本地 DNS 服务器的 IP 地址。
2. 检查DNS查询消息。DNS 查询是什么 "Type" 的?查询消息是否包含任何 "answers"?
Type 为 “NS”,表示查询权威 DNS 服务器,没有任何 "answers"。
3. 检查 DNS 响应消息。响应消息提供的 MIT 域名服务器是什么?此响应消息还提供了 MIT 域名服务器的 IP 地址吗?
响应消息没提供 MIT 的域名的 IP 地址。
nslookup 的 DNS 查询③
实验步骤
重复上一个实验,但换成以下命令:
nslookup www.aiit.or.kr bitsy.mit.edu
问题解答
- DNS 查询消息发送到的 IP 地址是什么?这是您的默认本地 DNS 服务器的 IP 地址吗?
18.0.72.3,不是我的默认本地 DNS 服务器的 IP 地址。
2. 检查DNS查询消息。DNS 查询是什么 "Type" 的?查询消息是否包含任何 "answers"?
Type 为 “A”,表示查询 IP 地址,没有任何 "answers"。
3. 检查 DNS 响应消息。提供了多少个 "answers"?这些答案包含什么?
提供了 1 个 "answers",是该域名的 IPV4 地址。
参考资料
《计算机网络 自顶向下方法》 [美] James F.Kurose,Keith W.Ross 著,陈鸣 译,机械工业出版社
域名系统(服务)协议
ipconfig