nslookup测试或解决 DNS 服务器问题。 - 清风轩

时间:2024-03-02 19:01:13

nslookup可以指定查询的类型,可以查到DNS记录的生存时间还可以指定使用那个DNS服务器进行解释。在已安装TCP/IP协议的电脑上面均可以使用这个命令。主要用来诊断域名系统 (DNS) 基础结构的信息。

 

Nslookup(name server lookup)( 域名查询):是一个用于查询 Internet 域名信息或诊断DNS 服务器问题的工具.

 

实例

查询163.com域名信息

D:>nslookup

Default Server: ns-px.online.sh.cn

Address: 202.96.209.5

当前的DNS服务器 ,可用server命令改变。

设置查选条件为所有类型记录(A、MX等)

查询域名,注意有.

Server: ns-px.online.sh.cn

Address: 202.96.209.5

查询结果~~

Non-authoritative answer:

未权威回答,出现此提示表明该域名的注册主DNS非提交查询的DNS服务器

163.com nameserver = NS.NEASE.NET

163.com nameserver = NS2.NEASE.NET

查询域名的名字服务器

163.com

primary name server = ns.163.com

主要名字服务器

responsible mail addr = admin.NEASE.NET

联系人邮件地址admin@nease.net

serial = 20010348

区域传递序号,又叫文件版本,当发生区域复制时,该域用来指示区域信息的更新情况。

refresh = 10800 (3 hours)

重刷新时间,当区域复制发生时,指定区域复制的更新时间间隔

retry = 3600 (1 hour)

重试时间,区域复制失败时,重新尝试的时间

expire = 360000 (4 days 4 hours)

有效时间,区域复制在有效时间内不能完成,则终止更新

default TTL = 3600 (1 hour)

TTL设置

被查询域名的资料

163.com MX preference = 50, mail exchanger = m218.163.com

163.com MX preference = 50, mail exchanger = m207.163.com

163.com MX preference = 50, mail exchanger = m208.163.com

163.com MX preference = 50, mail exchanger = m209.163.com

163.com MX preference = 50, mail exchanger = m210.163.com

163.com MX preference = 50, mail exchanger = m229.163.com

163.com MX preference = 50, mail exchanger = m246.163.com

163.com MX preference = 50, mail exchanger = m180.163.com

163.com MX preference = 50, mail exchanger = m214.163.com

163.com internet address = 202.106.185.77

163.com nameserver = NS.NEASE.NET

163.com nameserver = NS2.NEASE.NET

NS.NEASE.NET internet address = 202.106.185.75

NS2.NEASE.NET internet address = 61.145.113.57

m218.163.com internet address = 202.108.44.218

m207.163.com internet address = 202.108.44.207

m208.163.com internet address = 202.108.44.208

m209.163.com internet address = 202.108.44.209

m210.163.com internet address = 202.108.44.210

m229.163.com internet address = 202.108.44.229

m246.163.com internet address = 202.108.44.246

m180.163.com internet address = 202.108.44.180

被查询域名的满足条件记录

------------------------

该命令的帮助

(汉字部分为说明)

Commands: (identifiers are shown in uppercase, [] means optional)

命令,标记有[]为可选

NAME - print info about the host/domain NAME using default server

查询主机或域名,用缺省服务器

NAME1 NAME2 - as above, but use NAME2 as server

查询主机或域名,用NAME2做提交查询服务器

help or ? - print info on common commands

打印帮助信息

set OPTION - set an option

设置选项

all - print options, current server and host

打印当前选项和服务器

[no]debug - print debugging information

打印调试信息

[no]d2 - print exhaustive debugging information

打印详细的调试信息

[no]defname - append domain name to each query

在查询中增加域名

[no]recurse - ask for recursive answer to query

请求递归查询

[no]search - use domain search list

使用域名搜索列表

[no]vc - always use a virtual circuit

始终使用虚电路

domain=NAME - set default domain name to NAME

设置缺省域名

srchlist=N1[/N2/.../N6] - set domain to N1 and search list to N1,N2, etc.

设置域名列表搜索列表

root=NAME - set root server to NAME

设置根服务器

retry=X - set number of retries to X

设置重试次数

timeout=X - set initial time-out interval to X seconds

设置超时时间

type=X - set query type (ex. A,ANY,CNAME,MX,NS,PTR,SOA,SRV)

设置查询记录类型

querytype=X - same as type

与上同

class=X - set query class (ex. IN (Internet), ANY)

设置查询类

[no]msxfr - use MS fast zone transfer

使用快速区域传递

ixfrver=X - current version to use in IXFR transfer request

server NAME - set default server to NAME, using current default server

lserver NAME - set default server to NAME, using initial server

finger [USER] - finger the optional NAME at the current default host

root - set current default server to the root

ls [opt] DOMAIN [> FILE] - list addresses in DOMAIN (optional: output to FILE)

-a - list canonical names and aliases

-d - list all records

-t TYPE - list records of the given type (e.g. A,CNAME,MX,NS,PTR etc.)

view FILE - sort an ls output file and view it with pg

exit - exit the program

退出程序

------------

一些说明

1、任何合法有效的域名都必须有至少一个主的名字服务器。当主名字服务器失效时,才会使用辅助名字服务器。这里的失效指服务器没有响应。

NSLOOKUP图形工具截图

2、DNS中的记录类型有很多,分别****不同的作用,常见的有A记录(主机记录,用来指示主机地址),MX记录(邮件交换记录,用来指示邮件服务器的交换程序),CNAME记录(别名记录),SOA(授权记录),PTR(指针)等。

3、一个有效的DNS服务器必须在注册机构注册,这样才可以进行区域复制。所谓区域复制,就是把自己的记录定期同步到其他服务器上。当DNS接收到非法DNS发送的区域复制信息,会将信息丢弃。

4、DNS有两种,一是普通DNS,一是根DNS,根DNS不能设置转发查询,也就是说根DNS不能主动向其他DNS发送查询请求。如果内部网络的DNS被设置为根DNS,则将不能接收网外的合法域名查询,请注意,有关根DNS的说明。

> set type=any > 163.com. > help

TCP/IP 协议必须安装在运行 nslookup 的计算机上。

在 Microsoft TCP/IP 属性页的 DNS 选项卡的“DNS 服务搜索顺序”字段中必须至少指定一个 DNS 服务器。

Nslookup 一直从当前上下文中的名称中抽去后缀。如果无法进行完全合格的名称查询(即,使用尾随点),那么查询将被附加到当前上下文中。例如,当前 DNS 设置是 att.com,并且在 www.microsoft.com 中执行查询,那么第一个查询将作为 www.microsoft.com.att.com 而失败,因为查询是不合格的。这种方式与其他供应商的 Nslookup 方式可能不一致,本文的目的在于阐明 Microsoft Windows NT Nslookup.exe 的处理方式。

如果已经使用 Microsoft TCP/IP 属性页 DNS 选项卡上定义的“域后缀搜索顺序”(Domain Suffix Search Order )中的搜索列表,将不会发生抽取操作。查询将被附加到列表中指定的域后缀中。要避免使用搜索列表,请始终使用“完全合格的域名称”(即,在名称中添加尾随点)。

qa段标记

A 地址记录(Ipv4)

AAAA 地址记录(Ipv6)

AFSDB Andrew文件系统数据库服务器记录

ATMA ATM地址记录

CNAME 别名记录

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

ISDN 域名对应的ISDN号码

MB 存放指定邮箱的服务器

MG 邮件组记录

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

MR 改名的邮箱记录

MX 邮件服务器记录

NS 名字服务器记录

PTR 反向记录

RP 负责人记录

RT 路由穿透记录

SRV TCP服务器信息记录

TXT 域名对应的文本信息

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

查询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或域名
我们可看看以下的命令结果:

这个命令直接从*域名服务器查询oray.net的NS记录。所有的二级域名的NS记录都存放在*域名服务器中,这是最权威的解释。注意这次没有非授权结果的提示。对于二级域名的NS记录查询来说这肯定是授权结果。*域名服务器的名称是a到j.gtld-servers.net共十台服务器。(gtld是Global Top Level Domain的缩写)。当我们修改域名的NS记录的时候可以通过上述查询知道修改的结果是不是已经在*域名服务器上生效。不过即使已经生效也可能不能正常解释,注意我在上一篇文章中提到的缓存时间的问题。
那么到底缓存多久呢?
检查域名的缓存时间
检查域名的缓存时间需要我们使用一个新的参数:-d
格式如下:
nslookup –d [其他的参数] 目标域名 [指定的服务器地址]
请看范例

我们忽略其他的看看Got answer后面几行,包括了一个ttl数值。这个数值就是域名记录的生存时间。
这种查询将整个DNS数据包的所有部分都揭示出来,大家可以看到DNS实际上并不是想象中那么简单的东西。具体的各部分解释大家可以去看看相关的标准文档。需要提醒大家的是一定要找到ANSWER:的内容,其他的东西都不是描述最终的结果。上面就不止一个地方又TTL数值。

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

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