菜鸟科技网

linux nslookup命令

nslookup 是一个用于查询 DNS(域名系统)信息的网络诊断工具,它的名称是 "Name Server Lookup"(名称服务器查询)的缩写,通过这个命令,你可以轻松地查找域名对应的 IP 地址(正向解析),或者查询 IP 地址对应的域名(反向解析),以及获取更详细的 DNS 记录信息。

linux nslookup命令-图1
(图片来源网络,侵删)

基本语法

nslookup 的基本语法非常简单:

nslookup [选项] [域名或IP地址]
  • 选项: 可选,用于指定查询类型或其他操作。
  • 域名或IP地址: 必选,是你想要查询的目标,你可以查询一个域名(如 www.google.com)或一个 IP 地址(如 8.8.8)。

两种主要模式

nslookup 有两种主要的交互模式:

a. 非交互模式

这是最常用的模式,当你只想执行一次查询后就退出时使用,只需在命令后直接跟上要查询的域名或 IP。

示例:查询域名对应的 IP 地址

linux nslookup命令-图2
(图片来源网络,侵删)
nslookup www.google.com

输出示例:

Server:         192.168.1.1  # 你的默认DNS服务器
Address:        192.168.1.1#53
Non-authoritative answer: # 非权威答案,可能来自缓存
Name:   www.google.com
Address: 142.250.191.78
Name:   www.google.com
Address: 2404:6800:4005:80a::200e  # IPv6地址

示例:查询 IP 地址对应的域名(反向解析)

nslookup 8.8.8.8

输出示例:

Server:         192.168.1.1
Address:        192.168.1.1#53
Non-authoritative answer:
8.8.8.8.in-addr.arpa  name = dns.google.
Authoritative answers can be found from:

b. 交互模式

当你需要连续执行多个查询时,可以使用交互模式,只需输入 nslookup 并按回车,即可进入一个提示符(>)状态。

linux nslookup命令-图3
(图片来源网络,侵删)

如何进入交互模式:

nslookup

交互模式下的常用命令:

  • set type=...: 设置要查询的 DNS 记录类型。
  • server <域名或IP>: 更改查询所使用的 DNS 服务器。
  • exitquit: 退出交互模式。

示例:在交互模式下查询不同类型的记录

# 1. 进入交互模式
nslookup
# 2. 查询 www.google.com 的 A 记录(默认)
> www.google.com
... (输出 IP 地址) ...
# 3. 更改查询类型为 MX(邮件交换记录)
> set type=mx
> google.com
... (输出 MX 服务器信息) ...
# 4. 更改查询类型为 NS(名称服务器记录)
> set type=ns
> google.com
... (输出 Google 的权威名称服务器) ...
# 5. 更改查询类型为 ANY(所有记录)
> set type=any
> google.com
... (输出所有可用的 DNS 记录) ...
# 6. 退出
> exit

常用查询类型

通过 set type= 命令,你可以查询多种 DNS 记录:

记录类型 描述 示例
A 将域名指向一个 IPv4 地址。 nslookup example.com (默认)
AAAA 将域名指向一个 IPv6 地址。 nslookup example.com (有时会同时显示)
MX 指定负责处理该域名邮件交换的服务器。 nslookup -query=mx example.com
NS 指定该域名的权威名称服务器。 nslookup -query=ns example.com
CNAME 指定别 Canonical Name,即域名别名。 nslookup -query=cname www.example.com
TXT 存储任意文本信息,常用于 SPF、DKIM 等邮件验证。 nslookup -query=txt example.com
SOA 获取该域名的起始授权机构记录,包含管理信息。 nslookup -query=soa example.com
ANY 查询该域名所有可用的 DNS 记录。 nslookup -query=any example.com

非交互模式下指定查询类型的快捷方式:

你也可以在命令行中直接使用 -query=-q= 选项来指定查询类型,而无需进入交互模式。

# 查询 example.com 的 MX 记录
nslookup -query=mx example.com
# 或者使用简写 -q
nslookup -q=mx example.com
# 查询 example.com 的所有记录
nslookup -q=any example.com

常用选项

  • -query=<type>-q=<type>: 指定查询的记录类型。
  • -type=<type>: -query 的别名。
  • -server=<server>- <server>: 指定要查询的 DNS 服务器,而不是使用系统默认的。

示例:使用公共 DNS 服务器进行查询

如果你想绕过本地网络 DNS,直接使用 Google 或 Cloudflare 的公共 DNS 进行查询,这非常有用。

# 使用 Google 的 DNS 服务器 (8.8.8.8) 查询
nslookup -query=any www.google.com 8.8.8.8
# 使用 Cloudflare 的 DNS 服务器 (1.1.1.1) 查询
nslookup www.baidu.com 1.1.1.1

dighost 的比较

在 Linux 系统中,除了 nslookup,还有另外两个常用的 DNS 查询工具:dighost

工具 特点 适用场景
nslookup 功能强大,有交互和非交互模式,界面比较“古老”,输出信息有时冗余。 传统的、交互式的故障排查。
dig 功能最强大、最灵活,输出格式清晰、详细,默认显示更完整的信息(如响应时间、权威服务器等)。 系统管理员和网络工程师的首选,用于深入、精确的 DNS 分析。
host 最简单、最简洁,只提供最基本的查询功能,输出非常易读。 快速、简单的域名到 IP 的正向或反向查询。

简单对比示例:

查询 google.com 的 A 记录:

  • nslookup:

    nslookup google.com

    输出较多,包含服务器信息和多个可能的答案。

  • dig:

    dig google.com

    输出结构化,包含头部、问题、答案、授权和附加部分,信息最全。

  • host:

    host google.com

    输出最简洁,直接给出结果。

    Using domain server:
    Name: 192.168.1.1
    Address: 192.168.1.1#53
    Aliases:
    google.com has address 142.250.196.100
    google.com mail is handled by 10 aspmx.l.google.com.
    ...

  • nslookup 是一个经典且功能全面的 DNS 诊断工具,尤其适合需要交互式查询的场景。
  • 掌握其非交互模式可以快速完成日常查询。
  • 掌握其交互模式set type 命令可以进行更深入的 DNS 记录分析。
  • 了解如何使用 -server 选项可以让你从特定的 DNS 服务器获取信息,这对于排查 DNS 污染或缓存问题至关重要。
  • 虽然 dig 在专业用户中更受欢迎,但 nslookup 依然被广泛支持和使用,是每个 Linux 用户都应该了解的基础命令之一。
分享:
扫描分享到社交APP
上一篇
下一篇