window下域名解析系统DNS诊断命令nslookup详解

发布于 2020-10-26  350 次阅读


原文地址

Ping 指令我们很熟悉了,它是一个检查网络状况的命令,在输入的参数是域名的情况下会通过 DNS 进行查询,但只能查询 A 记录和 CNAME(别名)记录,还会返回域名是否存在,其他的信息都是没有的。如果你需要对 DNS(域名解析系统)的故障进行排错就必须熟悉另一个强大的命令 - nslookup,Nslookup 可以用来诊断域名解析系统 (DNS) 的基础结构信息,可以指定查询的类型,可以查到 DNS 记录的生存时间,还可以指定使用那个 DNS 服务器进行解释,该命令在安装 TCP/IP 协议后方可以使用。

下面以百度的域名 www.baidu.com 为例,详细介绍 nslookup 命令在命令提示符(DOS)下的用法:

一、查询 IP 地址

nslookup 可以方便地查询到域名对应的 IP 地址,包括 A 记录和 CNAME 记录,如果查到的是 CNAME 记录还会返回别名记录的设置情况。

用法格式:nslookup 域名,如图:

1.png

回车后有三种不同的结果:

1.A 记录的返回,如图:
2.png

前面两行是您电脑所使用的 DNS 服务器名及其 IP 地址,出错也可以不理会,重点是最后的两行是 baidu.com 的 IP 地址是 61.135.169.125&61.135.169.121 ,请注意,即使 baidu.com 的应用服务主机没有在线也同样能够返回结果。

2. 别名记录 (CNAME) 的返回情况,如图:
3.png

这就显示出和 ping 命令不同了,请看查看 CNAME 记录的结果。由于 CNAME 和 A 记录最后都是活的 IP 地址,所以一般情况下两者是等同看待的,命令的格式相同。这次 nslookup 返回了三行信息,前两行显示这是一个 CNAME 记录,对应的域名和 IP 地址。最后显示的就是目标域名, 并注明是 Aliases(别名)。

3. 域名不存在的情况,如图:
4.png

最后一行的英文表示目标域名不存在。你选择不同的域名商或不同的 DNS 解析系统,返回的结果也可能有差异,但大同小异。

二、查询其它类型的域名

我们的域名一般还配置了其他类型的记录,如 MX 邮件服务器记录,查看解析是否正常,这时候用 ping 命令就不行了。邮件服务器只能发信不能收信,是域名解析的问题还是其他的问题,Ping 命令的检查只能让你误入歧途。nslookup 这时候可以模拟你的其他遇见服务器进行域名解析的情况。我们需要在 nslookup 上加上适当的参数。指定查询记录类型的指令格式如下:nslookup –qt = 类型 目标域名(注意 qt 必须小写)

以下是可以用的类型的格式(不区分大小写),仅提供常用的 MX 和 NS 的截图:

1.A 地址记录 (Ipv4)

2.AAAA 地址记录(Ipv6)

3.AFSDB Andrew 文件系统数据库服务器记录(不懂)

4.ATMA ATM 地址记录(不是自动提款机)

5.CNAME 别名记录

6.HINFO 硬件配置记录,包括 CPU、操作系统信息

7.ISDN 域名对应的 ISDN 号码

8.MB 存放指定邮箱的服务器

9.MG 邮件组记录

10.MINFO 邮件组和邮箱的信息记录

11.MR 改名的邮箱记录

12.MX 邮件服务器记录
5.png

注意:preference 为优先级,该数值越小则优先级越高。

13.NS 名字服务器记录
6.png

14.PTR 反向记录(从 IP 地址解释域名)

15.RP 负责人记录

16.RT 路由穿透记录

17.SRV TCP 服务器信息记录

18.TXT 域名对应的文本信息

19.X25 域名对应的 X.25 地址记录

三、指定使用的 DNS 解析服务

默认情况下 nslookup 使用的是我们在本机 TCP/IP 配置中的 DNS 服务器进行查询,但有时候我们需要指定一个特定的服务器进行查询试验。此时我们不需要更改本机的 DNS 配置,只要在命令后面加上指定的服务器 IP 或者域名就可以了。这个参数在我们对一台指定服务器排错是非常必要的,另外我们可以通过指定服务器直接查询授权服务器的结果避免其他服务器缓存的结果。

命令格式如下:nslookup [-qt = 类型] 目标域名 指定的 DNS 服务器 IP 或域名

如我们使用河北电信的另一个 DNS 服务器:219.146.0.130 查询 renhaibo.com 的 NS 记录,所有的二级域名的 NS 记录都存放在顶级域名服务器中,这是最权威的解释。注意这次没有非授权结果的提示。对于二级域名的 NS 记录查询来说这肯定是授权结果。顶级域名服务器的名称是 ns57.domaincontrol.com,ns58.domaincontrol.com 等 2 台服务器。当我们修改域名的 NS 记录的时候可以通过上述查询知道修改的结果是不是已经在顶级域名服务器上生效。不过即使已经生效也可能不能正常解释,还有缓存时间的问题,详查下文。

返回如图:
7.png

四、检查域名的缓存时间

检查域名的缓存时间需要使用一个新的参数:-d

格式:nslookup –d [其他的参数] 目标域名
8.png

我们忽略其他的,看看 Got answer 后面几行,包括了一个 ttl 数值。这个数值就是域名记录的生存时间。

这种查询将整个 DNS 数据包的所有部分都揭示出来,大家可以看到 DNS 实际上并不是想象中那么简单的东西。具体的各部分解释大家可以去看看相关的标准文档。需要提醒大家的是一定要找到 ANSWER: 的内容,其他的东西都不是描述最终的结果。上面就不止一个地方有 TTL 数值。

nslookup 的命令还有许多其他参数, 这里就介绍常用的这么几个。另外如果不喜欢命令行方式的话,还有图形界面的 nslookup 工具,自己去网上搜索一下吧。


或许明日太阳西下倦鸟已归时