区域传送操作指的是一台后备服务器使用来自主服务器的数据刷新自己的zone数据库。这为运行中的DNS服务提供了一定的冗余度,其目的是为了防止主域名服务器因意外故障变得不可用时影响到全局。一般来说,DNS区域传送操作只在网络里真的有后备域名DNS服务器时才有必要执行,但许多DNS服务器却被错误地配置成只要有人发出请求,就会向对方提供一个zone数据库的拷贝。如果所提供的信息只是与连到因特网上且具备有效主机名的系统相关,那么这种错误配置不一定是坏事,尽管这使得***者发现潜在目标要容易得多。真正的问题发生在一个单位没有使用公用/私用DNS机制来分割外部公用DNS信息和内部私用DNS信息的时候,此时内部主机名和 IP地址都暴露给了***者。把内部IP地址信息提供给因特网上不受信任的用户,就像是把一个单位的内部网络完整蓝图或导航图奉送给了别人。

 
系统管理员来说,允许不受信任的因特网用户执行DNS区域传送(zone transfer)操作是后果最为严重的错误配置之一。
 
 
 
 
 
Nslookup显示可用来诊断域名系统 (DNS) 基础结构的信息。只有在已安装 TCP/IP 协议的情况下才可以使用 Nslookup 命令行工具。
 
语法
 
nslookup [-SubCommand ...] [{ComputerToFind| [-Server]}]
 
参数
 
-SubCommand ...
 
将一个或多个 nslookup 子命令指定为命令行选项。
 
ComputerToFind
 
如果未指定其它服务器,就使用当前默认 DNS 名称服务器查阅 ComputerToFind 的信息。要查找不在当前 DNS 域的计算机,请在名称上附加句点。
 
-Server
 
指定将该服务器作为 DNS 名称服务器使用。如果省略了 -Server,将使用默认的 DNS 名称服务器。
 
{help|?}
 
显示 nslookup 子命令的简短总结。
 
注释
 
如果 ComputerToFind 是 IP 地址,并且查询类型为 A 或 PTR 资源记录类型,则返回计算机的名称。如果 ComputerToFind 是一个名称,并且没有跟踪期,则向该名称添加默认 DNS 域名。此行为取决于下面 set 子命令的状态:domain、srchlist、defname 和 search。
 
如果键入连字符 (-) 代替 ComputerToFind,命令提示符更改为 nslookup 交互式模式。
 
命令行长度必须少于 256 个字符。
 
Nslookup 有两种模式:交互式和非交互式。
 
如果仅需要查找一块数据,请使用非交互式模式。对于第一个参数,键入要查找的计算机的名称或 IP 地址。对于第二个参数,键入 DNS 名称服务器的名称或 IP 地址。如果省略第二个参数,nslookup 使用默认 DNS 名称服务器。
 
如果需要查找多块数据,可以使用交互式模式。为第一个参数键入连字符 (-),为第二个参数键入 DNS 名称服务器的名称或 IP 地址。或者,省略两个参数,则 nslookup 使用默认 DNS 名称服务器。下面是一些有关在交互式模式下工作的提示:
 
要随时中断交互式命令,请按 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 中存在错误。
 
nslookup –qt=类型 目标域名
 
注意qt必须小写。
 
类型可以是一下字符,不区分大小写:
 
A 地址记录(Ipv4)
AAAA 地址记录(Ipv6)
AFSDB Andrew文件系统数据库服务器记录(不懂)
ATMA ATM地址记录(不是自动提款机)
CNAME 别名记录
HINFO 硬件配置记录,包括CPU、操作系统信息
ISDN 域名对应的ISDN号码
MB 存放指定邮箱的服务器
MG 邮件组记录
MINFO 邮件组和邮箱的信息记录
MR 改名的邮箱记录
MX 邮件服务器记录
NS 名字服务器记录
PTR 反向记录(从IP地址解释域名)
范例 

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

 
nslookup -querytype=hinfo -timeout=10 

 
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 服务器上为该子域创建一个新主域。

 
/********************************************************************************************/

 
              常用的一些 option/command 
1. set all 
可以得知目前 nslookup 的一些 default 设定值 
tung@traveler:~> nslookup 
Default Server:  sun4.ee.ncku.edu.tw 
Address:  140.116.72.14 
> set all 
Default Server:  sun4.ee.ncku.edu.tw 
Address:  140.116.72.14 
Set options: 
  nodebug         defname         search          recurse 
  nod2            novc            noignoretc      port=53 
  querytype=A     class=IN        timeout=5       retry=4 
  root=a.root-servers.net. 
  domain=ee.ncku.edu.tw 
  srchlist=ee.ncku.edu.tw

 

 
2. server dns_server_ip 
表示将内定的 local DNS 换成另一部 server 
Ex: server 140.116.2.6 

 

 
3. set type=any 
表示在查询某个 domain name 时, 将和这个 domain name 的一些相关资料一并显示出来 
> set type=any 
> www.yohoo.com 
Server:  sun4.ee.ncku.edu.tw 
Address:  140.116.72.14 
Non-authoritative answer: 
www.yohoo.com   canonical name = yohoo.com 
Authoritative answers can be found from: 
yohoo.com       nameserver = ns1.netgateway.net 
yohoo.com       nameserver = ns2.netgateway.net 
ns1.netgateway.net      internet address = 216.116.98.7 
ns2.netgateway.net      internet address = 216.116.98.8 
在上面的这个例子, 我们除了知道 www.yohoo.com 的 IP 外, 我们还得知了 yohoo.com 是由哪部 name server 在负责的. 因此如果想要知道 www.yohoo.com 真正在 yohoo.com 上的记录是如何, 而不要有 local DNS cache 中传回的资料, 我们可以配合使用 server 这个 command 将 default local DNS 改为负责 yohoo.com 的 DNS, 然后再查询一次 
> server 216.116.98.7 
Default Server:  ns1.netgateway.net 
Address:  216.116.98.7 
> www.yohoo.com 
Server:  ns1.netgateway.net 
Address:  216.116.98.7 
Name:    yohoo.com 
Address:  216.116.98.143 
Aliases:  www.yohoo.com 

 

 
4. set type=ptr 
本来要由 IP 反查 domain name时, 在直接打 IP 就行了, 但如果已经下了 type=any 的话, 要由 IP 反查时就没那幺方便了, 此时 IP 4 个数字要倒着写, 最后还要加上 in-addr.arpa. 以查 140.116.72.219 为例, 要输入的就是 219.72.116.140.in-addr.arpa 
tung@traveler:~> nslookup 
Default Server:  sun4.ee.ncku.edu.tw 
Address:  140.116.72.14 
> 140.116.72.219 
Server:  sun4.ee.ncku.edu.tw 
Address:  140.116.72.14 
Name:    garfield.ee.ncku.edu.tw 
Address:  140.116.72.219 
> set type=any 
> 140.116.72.219 
Server:  sun4.ee.ncku.edu.tw 
Address:  140.116.72.14 
*** sun4.ee.ncku.edu.tw can't find 140.116.72.219: Non-existent host/domain 
> 219.72.116.140.in-addr.arpa 
Server:  sun4.ee.ncku.edu.tw 
Address:  140.116.72.14 
219.72.116.140.in-addr.arpa     name = garfield.ee.ncku.edu.tw 
72.116.140.IN-ADDR.ARPA nameserver = sun4.ee.ncku.edu.tw 
sun4.ee.ncku.edu.tw     internet address = 140.116.72.14 
另外一个办法就是先下 set type=ptr 或 set type=a 命令, 脱离 type=any 模式, 再进行 IP 反查 domain name 的 command 
> set typr=ptr 
> 140.116.72.219 
Server:  sun4.ee.ncku.edu.tw 
Address:  140.116.72.14 
219.72.116.140.in-addr.arpa     name = garfield.ee.ncku.edu.tw 
72.116.140.IN-ADDR.ARPA nameserver = sun4.ee.ncku.edu.tw 
sun4.ee.ncku.edu.tw     internet address = 140.116.72.14 

 

 
5. ls domain 
这个命令是要求 name server 将其负责的 zone 内容 show 出来, 这个动作相当于 name server 的整份记录从 server 端传回给 nslookup 这个程序, 这种传回整个 zone 的动作叫作 zone transfer 
> set type=any 
> ee.ncku.edu.tw 
Server:  cs.ncku.edu.tw 
Address:  140.116.2.6 
ee.ncku.edu.tw  nameserver = sun4.ee.ncku.edu.tw 
ee.ncku.edu.tw  preference = 1, mail exchanger = eembox.ee.ncku.edu.tw 
ee.ncku.edu.tw  internet address = 140.116.72.15 
ee.ncku.edu.tw 
        origin = sun4.ee.ncku.edu.tw 
        mail addr = root.sun4.ee.ncku.edu.tw 
        serial = 1999033001 
        refresh = 3600 (1H) 
        retry   = 900 (15M) 
        expire  = 3600000 (5w6d16h) 
        minimum ttl = 3600 (1H) 
ee.ncku.edu.tw  nameserver = sun4.ee.ncku.edu.tw 
sun4.ee.ncku.edu.tw     internet address = 140.116.72.14 
eembox.ee.ncku.edu.tw   internet address = 140.116.72.15 
> ls ee.ncku.edu.tw 
Default Server:  cs.ncku.edu.tw 
Address:  140.116.2.6 
> [sun4.ee.ncku.edu.tw] 
$ORIGIN ee.ncku.edu.tw. 
@                       1H IN A         140.116.72.15 
hdlib4                  1H IN A         140.116.72.4 
ds114                   1H IN A         140.116.72.114 
hdlib5                  1H IN A         140.116.72.5 
ds115                   1H IN A         140.116.72.115 
yokoyama1               1H IN A         140.116.227.217 
hdlib6                  1H IN A         140.116.72.6 
ds116                   1H IN A         140.116.72.116 
yokoyama2               1H IN A         140.116.227.218 
ds117                   1H IN A         140.116.72.117 
ds120                   1H IN A         140.116.72.120 
ds118                   1H IN A         140.116.72.118 
ds121                   1H IN A         140.116.72.121 
ds119                   1H IN A         140.116.72.119 
ds122                   1H IN A         140.116.72.122 
ds123                   1H IN A         140.116.72.123 
intelab01               1H IN A         140.116.227.39 

转自:http://snowice.sinaapp.com/?post=104