nslookup 是 Windows、Linux、BSD 等系统自带 DNS 的诊断工具,也是最常用的 DNS 诊断工具之一 ,但是只有已安装 TCP/IP 协议才可以使用。

nslookup 提供交互式和非交互式。在交互式操作过程中会接受用户的输入,并且实时的把查询到的结果显示在屏幕上;非交互式就如一般 DOS 命令,输出结果之后就退出 nslookup。交互式的操作简单直观,更容易使用,非交互式会自动退出 nslookup 程序,适合于仅作单次查询。


  1. 非交互式查询

    1. 命令格式
      nslookup [-option ...] [computer-to-find][server]

      参数 [-option...]

      表示将一个或多个 nslookup 命令指定为命令行选项。要得到所有 option 列表,可以在交互模式下用”help”或”?”列出。例如,要将默认的查询类型更改为主机(计算机)信息,并将初始超时更改为 10 秒,您可以键入:

      C:\>nslookup -querytype=hinfo -timeout=10 www.google.com. 202.96.209.5

    2. 参数 [computer-to-find]
      表示需要查询的内容(域名/主机名/Ip地址)。如果 computer-to-find 是名称,并且没有后缀句点,则默认的 DNS 域名附加到该名称上。该操作取决于 set 选项的状态:domains、srchlist、defname 和 search。要查找不在当前 DNS 域的计算机,请在名称上附加句点。

    3. 参数 [server]
      指定到那台服务器上查询,默认(不输入)时是当前机器的默认DNS服务器。

    4. 注意事项:
    5. 命令行长度必须少于 256 个字符。


  2. 交互式查询

    命令格式
    nslookup [server]

    参数 [server]
    与非交互式的一样,指定在那台服务器上查询,省略将使用默认的DNS服务器。

    在输入该命令之后,就会出现以下的画面,程序等待输入。

    >C:\>nslookup
    Default Server: ns-px.online.sh.cn
    Address: 202.96.209.5

    >

     在这里输入需要查询的内容(域名/主机名/IP地址),或者是使用set 改变查询类型,也可以使用help/?查看帮助。 举一个例子来说:假如我们需要知道谷歌英文网站的IP地址和名称服务器,以及其SOA设定。可以这样来查询,如图:

    > server 202.96.209.5
    Default Server: ns-px.online.sh.cn
    Address: 202.96.209.5

    > set type=a
    > www.google.com.
    Server: ns-px.online.sh.cn
    Address: 202.96.209.5

    Non-authoritative answer:
    Name: www-china.l.google.com
    Addresses: 64.233.189.104, 64.233.189.99, 64.233.189.147
    Aliases: www.google.com, www.l.google.com

    > set type=ns
    > www.google.com.
    Server: ns-px.online.sh.cn
    Address: 202.96.209.5

    Non-authoritative answer:
    www.google.com   canonical name = www.l.google.com
    www.l.google.com   canonical name = www-china.l.google.com

    l.google.com
        primary name server = d.l.google.com
        responsible mail addr = dns-admin.google.com
        serial = 1367942
        refresh = 900 (15 mins)
        retry = 900 (15 mins)
        expire = 1800 (30 mins)
        default TTL = 60 (1 min)
    >

    1. 我们首先输入"server 202.96.209.5",指定在202.96.209.5d这个服务器上查询(可以是ISP提供,也可以是自己架设。可以使用域名或者是Ip地址)。
    2. 然后使用"set type=a"设定我们要查询的类型是A记录。
    3. 接着输入我们需要查询到内容"www.google.com." 之所以最后带一个点是防止后面加上我们的域名后缀服务器返回指向www.google.com 域名的Ip地址也就是A记录的内容。
    4. 接下来我们使用"set type=ns"指定查询类型为ns记录。然后再输入需要查询的"www.google.com." 域名。软件查询到结果后显示在屏幕上。其中包括了ns记录和SOA记录。

    提示:

    1. 要随时中断交互式命令,请按 CTRL+C。
    2. 要退出,请键入 exit。
    3. 要将内置命令当作计算机名,请在该命令前面放置转义字符 (\)。
    4. 将无法识别的命令解释为计算机名。

  3. 错误消息说明:

    nslookup在查询结果出现错误的时候会给出很多参考信息,以下是常见的错误信息解释。

    1. Timed out
      重试一定时间和一定次数之后,服务器没有响应请求。可以通过 set timeout 子命令设置超时期。而利用 set retry 子命令设置重试次数。

    2. No response from server
      服务器上没有运行 DNS 名称服务器。

    3. No records
      尽管计算机名有效,但是 DNS 名称服务器没有计算机当前查询类型的资源记录。查询类型使用 set querytype 命令指定。

    4. Nonexistent domain
      计算机或 DNS 域名不存在。

    5. Connection refused or Network is unreachable
      无法与 DNS 名称服务器或指针服务器建立连接。该错误通常发生在 ls 和 finger 请求中。

    6. Server failure DNS
      名称服务器发现在其数据库中内部不一致而无法返回有效应答。

    7. Refused DNS
      名称服务器拒绝为请求服务。

    8. Format error DNS
      名称服务器发现请求数据包的格式不正确。可能表明 nslookup 中存在错误。