掌握 nslookup 命令:逐步教程与进阶技巧

LightNode
LightNode - · 更新于 2026-07-06

nslookup("Name Server Lookup",即"名称服务器查找"的缩写)是一个内置的命令行工具,用于查询 DNS(域名系统) 服务器,以查出某个域名对应的 IP 地址,或某个 IP 地址背后的域名。使用时,只需输入 nslookup,后跟你想要解析的域名即可。最常见的用法就是一次基本查找:

nslookup example.com

这会返回 example.com 所指向的 IP 地址,以及应答本次查询的 DNS 服务器。nslookup 在 Windows、macOS 和 Linux 上都已预装,因此无需任何配置,就能在任意终端或命令提示符中开箱即用。

你可以在这条命令的基础上稍作扩展,来完成最常见的几类 DNS 排障任务:

任务 命令
基本查找(域名 → IP) nslookup example.com
反向查找(IP → 域名) nslookup 8.8.8.8
使用指定的 DNS 服务器 nslookup example.com 8.8.8.8
查找邮件服务器(MX) nslookup -type=MX example.com
查找名称服务器(NS) nslookup -type=NS example.com
查找 TXT 记录(SPF、DKIM、域名验证) nslookup -type=TXT example.com

本指南的余下部分会逐一拆解这些用法,涵盖语法、真实输出、交互模式、脚本编写,以及 dighost 等替代工具。

引言

在互联网这个广阔而又彼此相连的世界里,域名系统(DNS) 扮演着举足轻重的角色——它负责把人类可读的域名(如 www.example.com)转换为机器能理解的 IP 地址(如 192.0.2.1)。这一转换对于在网络间路由流量、确保用户能够顺畅访问网站、服务和各类资源至关重要。

一旦 DNS 解析出现问题,网络管理员和 IT 专业人员就需要可靠的工具来诊断和排查故障。nslookup 命令正是这样一款不可或缺的工具。借助它,用户可以查询 DNS 服务器,获取有关域名、IP 地址以及各种 DNS 记录的信息。

什么是 nslookup

nslookup 的定义

nslookupName Server Lookup(名称服务器查找) 的缩写。它是一款命令行工具,用于查询 DNS(域名系统)服务器,以获取有关域名、IP 地址和其他 DNS 记录的信息。通过发起 DNS 查询,nslookup 帮助用户和管理员诊断并解决与 DNS 相关的问题。

nslookup 在网络诊断中的作用

DNS 是互联网正常运转的根基,DNS 服务一旦中断,网站和在线服务就可能变得无法访问。nslookup 作为一款诊断工具,可以:

  • 验证 DNS 服务器的配置。
  • 确认 DNS 记录是否存在及其配置是否正确。
  • 检测 DNS 传播(propagation)方面的问题。
  • 协助排查与 DNS 相关的连接故障。

通过对 DNS 查询和响应给出详尽的信息,nslookup 让用户能够高效地定位并解决 DNS 问题。

nslookup 与其他 DNS 工具的区别

虽然 nslookup 功能强大,但它并不是唯一的 DNS 工具。其他值得关注的工具还包括:

  • dig(Domain Information Groper,域名信息探测器): 相比 nslookup 提供了更详尽、更灵活的查询选项。因为输出信息更全面,许多网络管理员都更青睐它。
  • host 一款更简单的 DNS 查找工具,适合那种不需要大量输出的快速查询。

与这些工具相比,nslookup 在处理基本的 DNS 查询时通常被认为更易上手,对刚接触网络诊断的用户尤其友好。不过,若要进行进阶查询和脚本编写,dig 这类工具可能更为合适。

历史与背景

nslookup 的起源

nslookup 命令诞生于互联网的早期,最初是 BIND(Berkeley Internet Name Domain,伯克利互联网名称域)工具套件的一部分。它为方便 DNS 查询和排障而生,随后成为 UNIX、Linux、Windows 等各类操作系统上的标准工具。

工具随时间的演进

多年来,nslookup 经历了多次改进,功能和使用体验都得到了提升。虽然其核心用途始终是 DNS 查询,但历次更新引入了如下特性:

  • 交互模式,可在单个会话中执行多次查询。
  • 支持查询不同类型的 DNS 记录。
  • 更完善的错误处理和更清晰的提示信息。

尽管 dig 等替代工具相继出现,nslookup 凭借其简单易用和跨平台的普及度,至今仍被广泛使用。

当前状况及在各操作系统上的支持

如今,nslookup 是一款几乎随处可见的工具,绝大多数操作系统上都能用到,包括:

  • Windows: 作为操作系统的一部分预装。
  • macOS: 内置于系统的网络工具中。
  • Linux/UNIX: 默认自带,或作为 DNS 工具集的一部分通过包管理器安装。

正是这种跨平台的一致存在,让 nslookup 成为各种计算环境中进行 DNS 诊断的首选工具。

基本语法

要充分发挥 nslookup 的能力,理解它的基本语法必不可少。其总体结构如下:

nslookup [options] [hostname] [DNS server]

命令各部分说明

  • nslookup 命令本身。
  • [options] 用于改变命令行为的可选标志。
  • [hostname] 你想要查询的域名或 IP 地址。
  • [DNS server](可选)指定用于本次查询的 DNS 服务器。若省略,则使用系统默认的 DNS 服务器。

简单的 nslookup 命令示例

  1. 基本主机名查找:

    nslookup www.example.com
    

    使用默认 DNS 服务器,获取与 www.example.com 关联的 IP 地址。

  2. 反向 IP 查找:

    nslookup 93.184.216.34
    

    查出与 IP 地址 93.184.216.34 关联的主机名。

  3. 指定 DNS 服务器:

    nslookup www.example.com 8.8.8.8
    

    向 Google 公共 DNS 服务器(8.8.8.8)查询 www.example.com 的 IP 地址。

常见用法示例

nslookup 命令用途广泛,能够检索多种不同类型的 DNS 信息。下面列出一些常见的使用场景,并附上示例命令和说明。

查询 DNS 记录

DNS 记录保存着一个域名的相关信息,例如其 IP 地址、邮件服务器和别名。nslookup 可以检索多种类型的 DNS 记录,包括:

  • A(地址)记录: 将域名映射到一个 IPv4 地址。
  • AAAA(IPv6 地址)记录: 将域名映射到一个 IPv6 地址。
  • MX(邮件交换)记录: 指定负责为该域名接收邮件的邮件服务器。
  • CNAME(规范名称)记录: 把一个域名作为另一个域名的别名。

示例命令:

  1. 检索 A 记录:

    nslookup -type=A www.example.com
    

    获取 www.example.com 的 IPv4 地址。

  2. 检索 MX 记录:

    nslookup -type=MX example.com
    

    获取 example.com 的邮件服务器。

  3. 检索 CNAME 记录:

    nslookup -type=CNAME blog.example.com
    

    查出 blog.example.com 的规范名称(别名)。

预期输出:

对于 MX 记录查询:

example.com     MX preference = 10, mail exchanger = mail.example.com

这表明 mail.example.comexample.com 的邮件服务器,其优先级(preference)值为 10。

反向 DNS 查找

反向 DNS 查找,是指根据一个 IP 地址反查其对应的域名。这对于核实某个特定 IP 所关联的主机名很有用,有助于排障和安全评估。

示例命令:

nslookup 93.184.216.34

预期输出:

34.216.184.93.in-addr.arpa    name = www.example.com

这段输出表明,IP 地址 93.184.216.34 解析到的主机名是 www.example.com

指定 DNS 服务器

默认情况下,nslookup 会使用系统配置的 DNS 服务器来执行查询。不过,用户也可以指定另一台 DNS 服务器来查询,这在做测试或排查 DNS 服务器问题时会很有用。

示例命令:

nslookup www.example.com 8.8.8.8

说明:

这条命令不使用系统默认的 DNS 服务器,而是向 Google 公共 DNS 服务器(8.8.8.8)查询 www.example.com 的 IP 地址。

示例输出:

Server:  google-public-dns-a.google.com
Address:  8.8.8.8

Name:    www.example.com
Address: 93.184.216.34

进阶功能

除了基本查询之外,nslookup 还提供了一些进阶功能,让它在全面的 DNS 分析和脚本编写中更为实用。

交互模式

交互模式允许用户在单个 nslookup 会话中输入多条命令,从而更高效地进行 DNS 排查。

进入交互模式:

直接输入不带任何参数的 nslookup 即可:

nslookup

交互示例:

Default Server:  resolver1.example.com
Address:  192.0.2.53

> set type=MX
> example.com
Server:  resolver1.example.com
Address:  192.0.2.53

example.com     MX preference = 10, mail exchanger = mail.example.com
> exit

交互模式中的常用命令:

  • set type=[record type] 指定要查询的 DNS 记录类型(例如 A、MX、CNAME)。
  • server [DNS server] 更改本次会话中用于查询的 DNS 服务器。
  • exit 退出交互模式。

设置查询类型

nslookup 允许用户指定想要查询的 DNS 记录类型,从而灵活地检索所需信息。

语法:

nslookup -type=[record type] [hostname]

示例命令:

  1. 查询 AAAA 记录:

    nslookup -type=AAAA www.example.com
    

    获取 www.example.com 的 IPv6 地址。

  2. 查询 TXT 记录:

    nslookup -type=TXT example.com
    

    获取与 example.com 关联的 TXT 记录,这类记录常用于 SPF、DKIM 和域名验证等用途。

  3. 查询 NS 记录:

    nslookup -type=NS example.com
    

    列出负责 example.com 的权威名称服务器,这在核实域名委派、以及在 DNS 变更后诊断传播问题时非常有用。

    示例输出:

    example.com     nameserver = a.iana-servers.net
    example.com     nameserver = b.iana-servers.net
    

在脚本中使用 nslookup

nslookup 可以集成进脚本,用来自动化 DNS 查询,从而实现批量处理和对 DNS 记录的监控。

示例:批量 DNS 查找脚本(Bash)

#!/bin/bash

# List of domains to query
domains=("example.com" "google.com" "nonexistentdomain.xyz")

# DNS server to use
dns_server="8.8.8.8"

# Loop through each domain and perform an A record lookup
for domain in "${domains[@]}"; do
    echo "Querying A record for $domain using DNS server $dns_server"
    nslookup -type=A "$domain" "$dns_server"
    echo "----------------------------------------"
done

说明:

这个脚本会遍历一个域名列表,用指定的 DNS 服务器(8.8.8.8)为每个域名执行一次 A 记录查找。输出会给出每个域名所关联的 IP 地址,便于批量分析 DNS。

nslookup 的替代工具

虽然 nslookup 是一款被广泛使用的 DNS 工具,但还有几款替代工具,各有不同的功能和优势。了解这些替代方案,可以让用户在 DNS 查询和诊断时有更多的选择。

dig

dig 命令概述

dig(Domain Information Groper,域名信息探测器)是一款灵活而强大的 DNS 查询工具,常用于 UNIX 和 Linux 环境。它能给出关于 DNS 响应的详尽信息,因此深受网络管理员喜爱,是深入分析 DNS 的利器。

dignslookup 的对比

  • 输出详尽程度: 相比 nslookupdig 的输出更详尽、更有条理,这对进阶排障很有帮助。
  • 灵活性: dig 对查询参数的控制更为精细,并支持更多用于自定义 DNS 查询的选项。
  • 脚本编写: 由于输出格式一致、易于解析,dig 往往更受脚本编写者青睐。

示例 dig 命令:

dig www.example.com MX

示例输出:

; <<>> DiG 9.20.4-Ubuntu <<>> www.example.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;www.example.com.        IN      MX

;; ANSWER SECTION:
www.example.com.  3600    IN      MX      10 mail.example.com.
www.example.com.  3600    IN      MX      20 mail2.example.com.

host

host 命令简介

host 命令是一款简单的 DNS 查找工具,其设计目标就是给出直白、简洁的 DNS 查询结果,非常适合快速检查和获取基本的 DNS 信息。

host 更合适的使用场景

  • 快速 DNS 查询: 当用户只想快速查一下、并不需要详尽信息时。
  • 追求简洁: 对于那些不想要 dig 之类工具附带的大量细节、更偏好极简输出的用户。
  • 脚本编写: 适合那种只需要核心信息的脚本。

示例 host 命令:

host -t TXT example.com

示例输出:

example.com descriptive text "v=spf1 include:_spf.example.com ~all"

其他工具

除了 dighost,还有其他几款 DNS 工具,可根据需要来补充或替代 nslookup

whois

whois 既是一种协议,也是一款命令行工具,用于查询存有互联网资源(如域名和 IP 地址)注册人或受让人信息的数据库。它能提供域名归属、注册详情和联系方式等信息。

使用场景:

  • 域名注册信息: 查明某个特定域名归谁所有,以及其联系方式。

示例命令:

whois example.com

tcpdump

tcpdump 是一款强大的网络数据包分析器,能够抓取并显示网络流量。虽然它并非专门的 DNS 工具,但可以用来实时监控 DNS 查询和响应,从而辅助网络排障和安全分析。

使用场景:

  • 监控 DNS 流量: 观察 DNS 查询的模式,发现异常或恶意活动。

示例命令:

tcpdump -i eth0 port 53

Wireshark

Wireshark 是一款图形化的网络协议分析器,能对网络流量(包括 DNS 通信)给出详尽的洞察。它提供了友好的图形界面,用于抓取、过滤和分析 DNS 数据包。

使用场景:

  • 详尽的 DNS 分析: 用于深入剖析 DNS 交互过程和协议行为。

常见问题解答(FAQ)

nslookup 命令有什么用?

nslookup 是一款网络管理工具,用于查询 域名系统(DNS),以获取域名与 IP 地址的映射信息,以及其他各类 DNS 记录。它能揭示域名是如何被解析的,从而帮助用户和管理员排查与 DNS 相关的问题。

nslookup 可以在哪些操作系统上使用?

nslookup 在大多数主流操作系统上都能使用,包括:

  • Windows: 作为操作系统的一部分预装。
  • macOS: 内置于系统的网络工具中。
  • Linux/UNIX: 默认自带,或作为 DNS 工具集的一部分通过包管理器安装。

正因为普及度高,它成为适用于各种环境的通用工具。

如何用 nslookup 执行反向 DNS 查找?

反向 DNS 查找 让你能够根据一个给定的 IP 地址查出对应的主机名。用 nslookup 执行时,只需把 IP 地址作为查询内容输入即可。例如:

nslookup 93.184.216.34

示例输出:

34.216.184.93.in-addr.arpa    name = www.example.com

这段输出表明,IP 地址 93.184.216.34 解析到的主机名是 www.example.com

使用 nslookup 时如何指定另一台 DNS 服务器?

默认情况下,nslookup 会使用系统配置的 DNS 服务器。要为查询指定另一台 DNS 服务器,只需在命令末尾附上该 DNS 服务器的 IP 地址或主机名即可。例如:

nslookup www.example.com 8.8.8.8

这条命令会向 Google 公共 DNS 服务器(8.8.8.8)查询 www.example.com 的 IP 地址。

我可以用 nslookup 查询哪些类型的 DNS 记录?

nslookup 支持查询多种类型的 DNS 记录,包括:

  • A(地址)记录: 将域名映射到一个 IPv4 地址。
  • AAAA(IPv6 地址)记录: 将域名映射到一个 IPv6 地址。
  • MX(邮件交换)记录: 指定负责为该域名接收邮件的邮件服务器。
  • CNAME(规范名称)记录: 把一个域名作为另一个域名的别名。
  • TXT(文本)记录: 保存任意文本数据,常用于域名验证和安全用途。
  • NS(名称服务器)记录: 指明该域名的权威 DNS 服务器。

要查询某种特定类型的记录,使用 -type 选项并跟上记录类型。例如:

nslookup -type=MX example.com

如何在 nslookup 中更改查询类型?

更改查询类型能让你检索特定的 DNS 记录。使用 -type(或 -query)选项并跟上所需的记录类型。例如,要查询 example.com 的 MX 记录:

nslookup -type=MX example.com

示例输出:

example.com     MX preference = 10, mail exchanger = mail.example.com
example.com     MX preference = 20, mail exchanger = mail2.example.com

这段输出显示了与 example.com 关联的邮件服务器及其各自的优先级值。

我可以在脚本中用 nslookup 来自动执行 DNS 查询吗?

可以,nslookup 能够集成进脚本,用来自动执行 DNS 查询。这在批量处理、监控 DNS 记录或做定期检查时都很有用。下面是一个简单的 Bash 脚本示例,它用 nslookup 为一组域名检索 A 记录:

#!/bin/bash

# List of domains to query
domains=("example.com" "google.com" "nonexistentdomain.xyz")

# DNS server to use
dns_server="8.8.8.8"

# Loop through each domain and perform an A record lookup
for domain in "${domains[@]}"; do
    echo "Querying A record for $domain using DNS server $dns_server"
    nslookup -type=A "$domain" "$dns_server"
    echo "----------------------------------------"
done

说明:

这个脚本会遍历一个域名列表,用指定的 DNS 服务器(8.8.8.8)为每个域名执行一次 A 记录查找。输出会给出每个域名所关联的 IP 地址,便于批量分析 DNS。

nslookupdig 有什么区别?

nslookupdig 都是 DNS 查询工具,但两者存在一些差异:

  • 输出详尽程度: dig 的输出更详尽、更有条理,适合做深入的 DNS 分析;nslookup 的输出则更简洁,适合基本查询。
  • 灵活性: dig 对查询参数的控制更为精细,并支持更多用于自定义 DNS 查询的选项。
  • 脚本编写: 由于输出格式一致、易于解析,dig 往往更受脚本编写者青睐。
  • 可用性: nslookup 在各类操作系统上更常见、通常默认自带,而 dig 在某些平台上可能需要单独安装。

示例 dig 命令:

dig www.example.com MX

dig 示例输出:

; <<>> DiG 9.20.4-Ubuntu <<>> www.example.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;www.example.com.        IN      MX

;; ANSWER SECTION:
www.example.com.  3600    IN      MX      10 mail.example.com.
www.example.com.  3600    IN      MX      20 mail2.example.com.

如何进入 nslookup 的交互模式?

交互模式 让你能够在单个 nslookup 会话中执行多次 DNS 查询。要进入交互模式,只需输入不带任何参数的 nslookup 并按回车:

nslookup

交互示例:

Default Server:  resolver1.example.com
Address:  192.0.2.53

> set type=MX
> example.com
Server:  resolver1.example.com
Address:  192.0.2.53

example.com     MX preference = 10, mail exchanger = mail.example.com
> exit

交互模式中的常用命令:

  • set type=[record type] 指定要查询的 DNS 记录类型(例如 A、MX、CNAME)。
  • server [DNS server] 更改本次会话中用于查询的 DNS 服务器。
  • exit 退出交互模式。

如果 nslookup 返回错误或毫无响应,我该怎么办?

如果 nslookup 返回错误、或迟迟收不到响应,可以考虑以下排障步骤:

  • 检查网络连接: 确认你的设备已连上互联网。
  • 确认 DNS 服务器是否可用: 你所查询的 DNS 服务器可能宕机或无法访问,可以尝试换一台 DNS 服务器。
  • 核对域名是否正确: 确认你输入的域名拼写无误且确实存在。
  • 检查防火墙设置: 防火墙或安全软件有可能拦截了 DNS 查询。
  • 留意错误信息: 注意 nslookup 返回的具体错误信息(例如 "Server failed"、"NXDOMAIN"),以此判断问题所在。
  • 改用其他工具: 尝试用 dighost 等其他 DNS 工具,看看结果是否不同。

错误示例及解决办法:

nslookup nonexistentdomain.xyz

可能的输出:

** server can't find nonexistentdomain.xyz: NXDOMAIN

解决办法:

NXDOMAIN 这个错误表示该域名并不存在。请检查域名是否有拼写错误,或确认该域名是否是最近才注册的。

LightNode