NSLOOKUP命令详解(域名DNS诊断)
NSLOOKUP 命令详解(域名DNS 诊断)2010-11-02 10:22最近在网上查询同IP 网站查询,可以知道自己的网站跟哪些网站放在同一个服务器。最近突然发现,NSLOOKUP 也可以查询网
NSLOOKUP 命令详解(域名DNS 诊断)
2010-11-02 10:22
最近在网上查询同IP 网站查询,可以知道自己的网站跟哪些网站放在同一个服务器。最近突然发现,NSLOOKUP 也可以查询网站的IP 地址。
查询IP 地址
nslookup 最简单的用法就是查询域名对应的IP 地址,包括A 记录和CNAME 记录,如果查到的是CNAME 记录还会返回别名记录的设置情况。其用法是:
nslookup 域名
以下是A 记录的返回情况。

nslookup 命令会采用先反向解释获得使用的DNS 服务器的名称,由于我这里使用的是一个内部的DNS 服务器所以没有正确的反向记录,导致结果的前面几行出错。大家可以不必理会。重点看的是最后的两行这里看到的是www.oray.net 的IP 地址是61.145.112.212。注意即使www.oray.net 的主机没有在线同样能够返回结果。
如果目标域名是一个别名记录(CNAME),nslookup 就开始显示出和ping 命令不同的地方了,请看查询CNAME 记录的结果。由于CNAME 和A 记录最后都是活的IP 地址,所以一般情况下两者是等同看待的,命令的格式相同。

注意这次nslookup 返回了三行信息,前两行显示这是一个CNAME 记录,对应的域名和IP 地址。最后显示的就是目标域名, 并注明Alias (别名)。
如果域名不存在会怎样呢?

看得懂最后以行的英文吗,不懂没关系记住形状就可以了。如果一个指定类型的域名不存在对应的记录同样也是这种结果。
查询其他类型的域名
前面两个命令我们没有加任何参数,所以默认情况下nslookup 查询的是A 类型的记录。如果我们配置了其他类型的记录希望看到解释是否正常。这时候ping 就无能为力了。比如我们配置了MX 记录,但是邮件服务器只能发信不能收信,到底是域名解释问题还是其他的问题Ping 命令的检查只能让你误入歧途。nslookup 这时候可以模拟你的其他遇见服务器进行域名解释的情况。我们需要在nslookup 上加上适当的参数。指定查询记录类型的指令格式如下:
nslookup –qt=类型 目标域名
注意qt 必须小写。
类型可以是一下字符,不区分大小写:
A 地址记录(Ipv4)
AAAA 地址记录(Ipv6)
AFSDB Andrew文件系统数据库服务器记录(不懂)
ATMA ATM地址记录(不是自动提款机)
CNAME 别名记录
HINFO 硬件配置记录,包括CPU 、操作系统信息
ISDN 域名对应的ISDN 号码
MB 存放指定邮箱的服务器
MG 邮件组记录
MINFO 邮件组和邮箱的信息记录
,MR 改名的邮箱记录
MX 邮件服务器记录
NS 名字服务器记录
PTR 反向记录(从IP 地址解释域名)
RP 负责人记录
RT 路由穿透记录(不懂)
SRV TCP服务器信息记录(将有大用处)
TXT 域名对应的文本信息
X25 域名对应的X.25地址记录
看看oray.net 的邮件服务器记录吧。

看看,nslookup 把服务器的名称和地址都给出来了,注意preference 就是前面所说的优先级,该数值越小则优先级越高。
我再看看名字服务器记录是怎么样的。

看起来和MX 记录的格式差不多,一般情况下服务器会同时返回对应的地址。不过也有不返回的情况。
,在这里我希望大家注意一行显示“Non-suthoritativeanswer:”,这一行在前面的例子中都没有显示过。它的出现代表这个结果是从服务器的缓存中得到的。所以提醒你这不是一个授权的答案。前面我们进行的几次查询过程中192.168.1.104这台机器就采用了我们第一篇文章中描述的过程查询了oray.net 的域名。在这个过程中不但缓存了www.oray.net 、test.oray.net 以及oray.net 的MX 记录等最终结果。也包括获取的名字服务器等中间结果。隐含的查询了oray.net 的NS 记录。后面我们还会介绍这个过程。
指定使用的名字服务器
在默认情况下nslookup 使用的是我们在本机TCP/IP配置中的DNS 服务器进行查询,但有时候我们需要指定一个特定的服务器进行查询试验。这时候我们不需要更改本机的TCP/IP配置,只要在命令后面加上指定的服务器IP 或者域名就可以了。这个参数在我们对一台指定服务器排错是非常必要的,另外我们可以通过指定服务器直接查询授权服务器的结果避免其他服务器缓存的结果。命令格式如下:
nslookup [-qt=类型] 目标域名 指定的DNS 服务器IP 或域名
我们可看看以下的命令结果:

域名解释过程的模拟
,我们现在来模拟一下一台DNS 服务器接到一个不是自己管理的域的域名解释过程。回忆一下第一篇文章的过程:
首先我们会询问根服务器,然后根服务器会让我们去找对应的顶级服务器。如果查询的是oray.net ,就会要求我们去找net 的服务器。
看看下面的范例:
这里我们让21cn.com 的服务器解释www.oicp.net 的域名,很显然这台服务器不用有这个域,需要询问根服务器。一般情况下DNS 服务器会帮我们完成全部的过程。这种解释方式我们称之为递归解析,为了让大家看到这个过程我家了一个参数让21cn.com 的服务器不要这样做。这个参数是-norecurse 。这样理论上21cn.com 会让我们去问根服务器,不过由于它已经缓存了顶级服务器的记录,所以直接返回了管理net 的顶级服务器记录。实际上大部分的查询都不需要从根服务器开始。大家看到了所有的顶级域名服务器的地址都被返回。
我们随便选择一个在进行查询。

这次顶级服务器就返回了oicp.net 的服务器地址记录的。然后我们就向这些记录之一进行查询,一定能够得到答案。可能是一个地址、一个CNAME 记录或者告诉你不存在。
nslookup 的命令就介绍到这里,其实nslookup 还有许多其他参数。不过常用的就俄这么几个,另外如果大家不喜欢命令行方式的话。还有几个图形界面的nslookup 功能的工具。不过大家还是需要了解域名解释都有些什么才能够正确使用这些工具。