Nslookup显示可用来诊断域名系统 (DNS) 基础结构的信息。只有在已安装 TCP/IP 协议的情况下才可以使用 Nslookup 命令行工具。

语法
nslookup [-option] [hostname] [server]

Nslookup 有两种模式:交互式和非交互式。

要随时中断交互式命令,请按 CTRL+C。
要退出,请键入 exit。
要将内置命令当作计算机名,请在该命令前面放置转义字符(/)
如果查找请求失败,nslookup 将打印错误消息。下表列出可能的错误消息。 错误消息 说明
Timed out 重试一定时间和一定次数之后,服务器没有响应请求。可以通过 set timeout 子命令设置超时期。而利用 set retry 子命令设置重试次数。
No response from server 服务器上没有运行 DNS 名称服务器。
No records 尽管计算机名有效,但是 DNS 名称服务器没有计算机当前查询类型的资源记录。查询类型使用 set querytype 命令指定。
Nonexistent domain 计算机或 DNS 域名不存在。
Connection refused   or   Network is unreachable
无法与 DNS 名称服务器或指针服务器建立连接。该错误通常发生在 ls 和 finger 请求中。
Server failure DNS 名称服务器发现在其数据库中内部不一致而无法返回有效应答。
Refused DNS 名称服务器拒绝为请求服务。
Format error DNS 名称服务器发现请求数据包的格式不正确。可能表明 nslookup 中存在错误。

范例
每个命令行选项均由连字符 (-) 后紧跟命令名组成,有时是等号 (=) 后跟一个数值。例如,要将默认的查询类型更改为主机(计算机)信息,并将初始超时更改为 10 秒,请键入:

nslookup -querytype=hinfo -timeout=10

概要
Nslookup.exe 是命令行管理工具,用于测试或解决 DNS 服务器问题。此工具是通过“控制面板”与 TCP/IP 协议一起安装的。本文包含使用 Nslookup.exe 的若干提示。

更多信息
要使用 Nslookup.exe,请注意以下方面: • TCP/IP 协议必须安装在运行 Nslookup.exe 的计算机上。
• 在 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 )中的搜索列表,将不会发生抽取操作。查询将被附加到列表中指定的域后缀中。要避免使用搜索列表,请始终使用“完全合格的域名称”(即,在名称中添加尾随点)。

Nslookup.exe 可以在两种模式下运行:交互式和非交互式。当需要返回单块数据时,请使用非交互式模式。非交互模式的语法如下:

nslookup [-option] [hostname] [server]

要在交互模式下启动 Nslookup.exe,只需在命令提示符下输入 nslookup:

C:/> nslookup
Default Server: nameserver1.domain.com
Address: 10.0.0.1
>

在命令提示符下输入 help 或 ? 将生成可用的命令列表。在命令提示符下输入的任何内容,如果它不是有效命令,则假设它是主机名,尝试使用默认服务器来解析它。要中断交互命令,请按 CTRL+C。要退出交互模式并返回到命令提示符下,并在命令提示符下输入 exit。

以下是帮助输出,其中包含选项的完整列表:

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
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,
and so on
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 (for example, A, ANY, CNAME, MX,
NS, PTR, SOA, SRV)
querytype=X - same as type
class=X - set query class (for example, 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 (for example, A, CNAME,
MX, NS, PTR, and so on)

view FILE - sort an 'ls' output file and view it with pg
exit - exit the program

通过在命令提示符下运行 set 命令,可以在 Nslookup.exe 中设置许多不同的选项。要得到这些选项的完整列表,只需输入 set all。请参见以上内容,在 set 命令下,得到可用选项的打印输出。

查找不同的数据类型

要在域名空间中查找不同的数据类型,请在命令提示符下使用 set type 或 set q[uerytype] 命令。例如,要查询邮件交换器数据,请输入:
C:/> nslookup
Default Server: ns1.domain.com
Address: 10.0.0.1

> set q=mx
> mailhost
Server: ns1.domain.com
Address: 10.0.0.1

mailhost.domain.com MX preference = 0, mail exchanger =
mailhost.domain.com
mailhost.domain.com internet address = 10.0.0.5
>

第一次查询是查找远程名称,答案是权威的,但随后的查询是非权威的。第一次查询远程主机时,本地 DNS 服务器与作为该域权威的 DNS 服务器取得联系。然后,本地 DNS 服务器缓存该信息,以便从本地服务器缓存中非权威地回答随后的查询。

直接从另一个名称服务器中进行查询

要直接查询另一个名称服务器,请使用 server 或 lserver 命令切换到该名称服务器。lserver 命令使用本地服务器得到要切换的服务器地址,而 server 命令使用当前默认服务器得到该地址。

例如:
C:/> nslookup

Default Server: nameserver1.domain.com
Address: 10.0.0.1

> server 10.0.0.2

Default Server: nameserver2.domain.com
Address: 10.0.0.2
>

使用 Nslookup.exe 转移整个区域

使用 ls 命令,Nslookup 可以用于转移整个区域。查看远程域中的所有主机,这是有用的。ls 命令的语法如下:

ls [- a | d | t type] domain [> filename]

不带参数使用 ls 命令将返回所有地址和名称服务器数据的列表。-a 参数将返回别名和正式名称,-d 将返回所有数据,而 -t 将按类型进行筛选。

例如:

>ls domain.com
[nameserver1.domain.com]
nameserver1.domain.com. NS server = ns1.domain.com
nameserver2.domain.com NS server = ns2.domain.com
nameserver1 A 10.0.0.1
nameserver2 A 10.0.0.2

>

在 DNS 服务器中可以按块转移区域,以便只有授权的地址和网络才可以执行此操作。如果设置了区域安全,将返回以下错误消息:

*** Can't list domain example.com .: Query refused

Nslookup.exe 的疑难解答

默认服务器超时

当启动 Nslookup.exe 工具时,以下错误可能出现:

*** Can't find server name for address w.x.y.z : Timed out

备注: w.x.y.z 是在“DNS 服务搜索顺序”列表中列出的第一个 DNS 服务器。

*** Can't find server name for address 127.0.0.1: Timed out

第一个错误指出不能连接 DNS 服务器,或者该计算机上的服务没有运行。要解决此问题,启动该服务器上的 DNS 服务,或检查可能存在的连接问题。

第二个错误指出在“DNS 服务搜索顺序”列表中还没有定义服务器。要解决此问题,请将有效 DNS 服务器的 IP 地址添加到此列表中。

启动 Nslookup.exe 时找不到服务器名

启动 Nslookup.exe 工具时,可能出现以下错误:

*** Can't find server name for address w.x.y.z: Non-existent domain

当没有名称服务器 IP 地址的 PTR 记录时,会出现此错误。当 Nslookup.exe 启动时,它执行反向搜索,以得到默认服务器的名称。如果没有 PTR 数据,则返回此错误消息。要解决此问题,请确保反向搜索区域存在,并包含名称服务器的 PTR 记录。

Nslookup 在子域上无法执行

当在子域上执行查询或进行区域转移时,Nslookup 可能返回以下错误:

*** ns.domain.com can't find child.domain.com.: Non-existent domain
*** Can't list domain child.domain.com.: Non-existent domain

在 DNS Manager 中,可以在主区域下添加一个新域,这样就创建了一个子域。用这种方法创建子域并不为该域创建一个单独的 db 文件,这样在该域进行查询或在该域进行区域转移时将会产生以上错误。在父域上进行区域转移时将同时列出父域数据和子域数据。要解决此问题,请在 DNS 服务器上为该子域创建一个新主域。

语法
nslookup [-子命令...] [{要查找的计算机 | -服务器}]

参数
-子命令...

将一个或多个 nslookup 子命令指定为命令行选项。
☆Nslookup:exit
—— exit the program

☆Nslookup:finger
——与当前计算机上的指针服务器连接。语法
finger [UserName] [{[>] FileName|[>>] FileName}]
参数
UserName 指定要查找的用户名。
FileName          指定用于保存输出的文件名。可以使用大于号 (>) 和两个大于号 (>>) 字符按普通方式重定向输出。

☆ Nslookup:help (?)
——print info on common commands

☆Nslookup:ls
——列出域名系统 (DNS) 域的信息。
ls [Option] DNSDomain [{[>] FileName|[>>] FileName}]
参数
-tQueryType 列出指定类型的所有记录。有关 QueryType 的说明,请参阅相关主题中的 setquerytype。
-a 列出该 DNS 域中计算机的别名。该参数是 -t CNAME 的同义词。
-d 列出 DNS 域的所有记录。该参数是 -t ANY 的同义词。
-h 列出该 DNS 域的 CPU 和操作系统信息。该参数是 -t HINFO 的同义词。
-s 列出该 DNS 域中计算机的知名服务。该参数是 -t WKS 的同义词。
DNSDomain 指定需要其信息的 DNS 域。

☆ Nslookup:lserver
——将默认服务器更改到指定的域名系统 (DNS) 域。
lserver DNSDomain
lserver 命令使用初始服务器搜索关于指定 DNS 域的信息。该命令与使用当前默认服务器的 server 命令相反。

☆Nslookup:root
——将默认的服务器更改为域名系统 (DNS) 域名空间的根服务器。
通常使用 ns.nic.ddn.mil 名称服务器。该命令是 lserver ns.nic.ddn.mil 的同义词。可以使用 set root 命令更改根服务器的名称。

☆Nslookup:服务器
——将默认服务器更改到指定的域名系统 (DNS) 域。
serverDNSDomain

☆ Nslookup:set
——更改影响查找工作方式的配置设置。
set KeyWord[=Value]
参数
KeyWord 识别从 set 子命令派生的子命令。例如,子命令 set d2 包含一个 [no]d2 关键字。有关从 set 子命令派生的子命令列表,请参阅相关主题。使用 set all 查看当前设置的列表。
Value 为每个子命令指定 nslookup 配置设置值。

☆ Nslookup:set all
——打印配置设置的当前值。

☆ Nslookup:set class
——更改查询类别。该类别指定信息的协议组。
set cl[ass]=Class
参数
Class默认类别为 IN。下表列出了此命令的有效值。
   IN 指定 Internet 类别。
   CHAOS 指定 Chaos 类别。
   HESIOD 指定 MIT Athena Hesiod 类别。
   ANY 指定以前列出的任何通配符。

☆ Nslookup:set d2
——打开或关闭穷举调试模式。每个数据包的所有字段均打印。
set [no]d2
参数
nod2关闭穷举调试模式。默认语法为 nod2。
d2打开穷举调试模式。

☆ Nslookup:set debug
——打开或关闭调试模式。
set [no]deb[ug]

☆ Nslookup:set defname
——将默认的域名系统 (DNS) 域名附加到单个组件查找请求。单个组件是指不包含任何复合的组件。
set [no]def[name]

☆ Nslookup:set domain
——将默认的域名系统 (DNS) 域名更改为指定名称。
set do[main]=DomainName默认域名为主机名。

☆ Nslookup:set ignore
——忽略数据包截断错误。
set [no]ig[nore]

☆ Nslookup:set port
——将默认的 TCP/UDP 域名系统 (DNS) 名称服务器端口更改为指定值。
setpo[rt]=Port
参数
端口 指定新的默认 TCP/UDP DNS 名称服务器端口值。默认端口为 53。

☆ Nslookup:set querytype
——更改用于查询的资源记录类型。
set q[uerytype]=ResourceRecordType
参数
ResourceRecordType指定 DNS 资源记录类型。默认的资源记录类型为 A。下表列出此命令的有效值。
   A 指定计算机 IP 地址。
   ANY 指定所有数据类型。
   CNAME 指定用于别名的规范名称。
   GID 指定组名的组标识符。
   HINFO 指定计算机 CPU 以及操作系统类型。
   MB 指定邮箱域名。
   MG 指定邮件组成员。
   MINFO 指定邮箱或邮件列表信息。
   MR 指定邮件重命名域名。
   MX 指定邮件交换器。
   NS 指定用于命名区域的 DNS 名称服务器。
   PTR 如果查询是 IP 地址,则指定计算机名;否则指定指向其他信息的指针。
   SOA 指定用于 DNS 区域的“起始授权机构”。
   TXT 指定文本信息。
   UID 指定用户标识符。
   UINFO 指定用户信息。
   WKS 描述已知服务。

☆ Nslookup:set recurse
——如果没有该信息,则告知域名系统 (DNS) 名称服务器查询其他服务器。
set [no]rec[urse]

☆ Nslookup:set retry
——设置重试的次数。
set ret[ry]=Number
参数
Number指定新的重试次数值。默认重试次数为 4 次。

☆ Nslookup:set root
——更改用于查询的根服务器的名称。
setro[ot]=RootServer
参数
RootServer为根服务器指定新名称。默认值为 ns.nic.ddn.mil。

☆ Nslookup:set search
——向请求追加 DNS 域搜索列表中的域名系统 (DNS) 域名,直到收到应答为止。该命令应用于如下情况:当设置和查找请求包含至少一个时期,但不是以跟踪期结束时。
set [no]sea[rch]

☆ Nslookup:set srchlist
——更改默认的域名系统 (DNS) 域名和搜索列表。
Set srchl[ist]=DomainName[/...]

☆ Nslookup:set timeout
——更改等待对请求答复的初始秒数。
set ti[meout]=Number
参数
Number指定等待答复的秒数。默认等待秒数为 5 秒。

☆ Nslookup:set type
——更改用于查询的资源记录类型。
setty[pe]=ResourceRecordType
参数
ResourceRecordType指定 DNS 资源记录类型。默认的资源记录类型为 A。

☆ Nslookup:set vc
——指明向服务器发送请求时使用或不使用虚电路。
set [no]v[c]

☆ Nslookup:查看
——排序和列出前一个 ls 子命令或命令组的输出。
view FileName

要查找的计算机

如果未指定其他服务器,请使用当前默认 DNS 名称服务器查找要查找的计算机的信息。要查找不在当前 DNS 域的计算机,请在名称上附加句点。

-服务器

指定将该服务器作为 DNS 名称服务器使用。如果省略了 -服务器,将使用默认的 DNS 名称服务器。

{ help| ?}

显示 nslookup 子命令的简短摘要。

注释
☆ 如果要查找的计算机是 IP 地址,并且查询类型为 A 或 PTR 资源记录类型,则返回计算机的名称。如果要查找的计算机是一个名称,并且没有尾部句号,则向该名称添加默认 DNS 域名。该行为依赖于下列 set 子命令的状态:domain、srchlist、defname 和 search。

☆ 如果键入连字符 (-) 代替要查找的计算机,则命令提示符更改为 nslookup 交互式模式。

☆ 命令行长度必须少于 256 个字符。