菜鸟科技网

linux dns解析命令

核心命令

nslookup (Name LookUP)

这是最经典、最广为人知的 DNS 查询工具,它有两种模式:交互式和非交互式。

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

基本用法 (非交互式):

nslookup [域名] [DNS服务器]
  • [域名]: 你想要查询的域名,www.google.com
  • [DNS服务器] (可选): 指定要使用的 DNS 服务器,8.8.8 (Google DNS) 或 1.1.1 (Cloudflare DNS),如果不指定,则使用系统默认的 DNS 服务器。

示例:

# 查询 www.google.com 的 A 记录,使用默认 DNS 服务器
$ nslookup www.google.com
Server:         192.168.1.1
Address:        192.168.1.1#53
Non-authoritative answer:
Name:   www.google.com
Address: 142.250.74.78
Name:   www.google.com
Address: 2404:6800:4005:80c::200e
# 查询 www.google.com 的 A 记录,使用 Google DNS 服务器
$ nslookup www.google.com 8.8.8.8
Server:         8.8.8.8
Address:        8.8.8.8#53
Non-authoritative answer:
Name:   www.google.com
Address: 142.250.74.78
Name:   www.google.com
Address: 2404:6800:4005:80c::200e
# 查询 MX (邮件交换) 记录
$ nslookup -query=mx example.com

交互式模式:

直接输入 nslookup 进入交互模式,然后输入命令。

linux dns解析命令-图2
(图片来源网络,侵删)
$ nslookup
> set type=mx  # 设置查询类型为 MX 记录
> example.com
> exit         # 退出交互模式

dig (Domain Information Groper)

dig 是一个比 nslookup 更强大、更灵活的 DNS 查询工具,其输出信息更详细、格式更易于脚本解析,在现代 Linux 系统中,它是首选的 DNS 诊断工具。

基本用法:

dig [@DNS服务器] [域名] [查询类型]
  • @DNS服务器 (可选): 指定 DNS 服务器,前面需要加 符号。
  • [域名]: 你想要查询的域名。
  • [查询类型] (可选): 指定查询的记录类型,如 A, AAAA, MX, TXT, NS, SOA 等,默认是 A

示例:

# 查询 www.google.com 的 A 记录,使用默认 DNS 服务器
$ dig www.google.com
# 查询 www.google.com 的 A 记录,使用 Google DNS 服务器
$ dig @8.8.8.8 www.google.com
# 查询 example.com 的 MX 记录
$ dig example.com MX
# 查询 example.com 的所有记录 (ANY)
$ dig example.com ANY
# 只显示查询答案部分,适合脚本使用
$ dig +short www.google.com
142.250.74.78
2404:6800:4005:80c::200e

dig 输出详解: dig 的输出分为几个部分:

linux dns解析命令-图3
(图片来源网络,侵删)
  • HEADER: 请求的头部信息。
  • QUESTION: 你提出的查询问题。
  • ANSWER SECTION: DNS 服务器返回的答案。
  • AUTHORITY SECTION: 权威 DNS 服务器信息。
  • ADDITIONAL SECTION: 额外的辅助信息。
  • QUERY TIME: 查耗时,单位毫秒。

host

host 是一个简单、快速的命令行工具,专门用于 DNS 查询,它的输出比 dig 简洁,比 nslookup 更现代化。

基本用法:

host [域名] [DNS服务器]
  • [域名]: 你想要查询的域名。
  • [DNS服务器] (可选): 指定 DNS 服务器。

示例:

# 查询 www.google.com,使用默认 DNS 服务器
$ host www.google.com
Using domain server:
Name: 192.168.1.1
Address: 192.168.1.1#53
Aliases:
www.google.com has address 142.250.74.78
www.google.com has address 142.250.74.110
www.google.com has IPv6 address 2404:6800:4005:80c::200e
www.google.com has IPv6 address 2404:6800:4005:80c::2010
# 查询 example.com 的 MX 记录
$ host -t MX example.com
# 使用 Google DNS 服务器查询
$ host www.google.com 8.8.8.8

其他相关命令

getent hosts

这个命令并不直接是 DNS 查询工具,但它会查询系统的名称服务开关库,包括 /etc/hosts 文件和配置的 DNS 服务,它的作用是“解析主机名到 IP 地址”。

基本用法:

getent hosts [域名或IP]

示例:

# 解析 www.google.com
$ getent hosts www.google.com
142.250.74.78   www.google.com
142.250.74.110  www.google.com
2404:6800:4005:80c::200e www.google.com
2404:6800:4005:80c::2010 www.google.com
# 解析 IP 到主机名 (反向解析)
$ getent hosts 8.8.8.8
dns.google.      has address 8.8.8.8

注意: getent hosts 的行为受 /etc/nsswitch.conf 文件控制,如果配置为 hosts: files dns,它会先检查 /etc/hosts,再查询 DNS。

ping

ping 通过发送 ICMP 包来测试网络连通性,但它内部会首先对目标主机名进行 DNS 解析。

示例:

$ ping www.google.com
PING www.google.com (142.250.74.78) 56(84) bytes of data.
64 bytes from hkg12s01-in-f14.1e100.net (142.250.74.78): icmp_seq=1 time=15.2 ms
...

可以看到,ping 的第一行输出了域名解析后的 IP 地址。


如何检查当前系统使用的 DNS 服务器?

在使用上述命令时,如果不指定 DNS 服务器,它们会使用系统默认的配置,你可以通过以下文件查看:

  1. /etc/resolv.conf (最直接) 这个文件列出了系统当前使用的 DNS 服务器(nameserver)和搜索域(search)。

    cat /etc/resolv.conf
    # 输出示例
    nameserver 192.168.1.1
    nameserver 8.8.8.8
    search localdomain
  2. NetworkManager (桌面系统, 如 Ubuntu, Fedora) 对于使用 NetworkManager 的系统,DNS 配置通常由它管理,你可以使用 nmcli 查看。

    nmcli connection show "你的连接名" | grep ipv4.dns
    # 或查看所有活跃连接的 DNS
    nmcli connection show --active | grep ipv4.dns
  3. systemd-resolved (现代发行版, 如 Ubuntu 18.04+, Debian 10+) 许多现代系统使用 systemd-resolved 作为本地 DNS 解析器,它会在 0.0.53 监听,并实际转发到配置的 DNS 服务器。

    # 查看 systemd-resolved 的 DNS 配置
    resolvectl status

命令 优点 缺点 适用场景
dig 功能强大,输出详细,格式规范,适合脚本 相对复杂,初学者可能觉得输出信息过多 首选的 DNS 诊断工具,深度排查,自动化脚本
nslookup 经典,几乎所有系统都自带,交互式模式方便 输出格式不一致,功能相对有限 快速查询,兼容性要求高的旧环境
host 简单、快速、输出清晰 功能比 dig 快速检查域名解析,获取 MX 等记录
getent hosts 反映系统最终解析结果(包含 hosts 文件) 不是一个纯粹的 DNS 工具 检查系统是否能正确解析域名,排查 /etc/hosts 问题
ping 测试网络连通性,附带 DNS 解析 无法控制查询类型(如 MX),输出不详细 快速测试主机名是否可达和解析是否正常

推荐使用场景

  • 日常快速检查: hostping
  • 深入故障排查: dig 是你的最佳选择,它能提供最全面的 DNS 交互信息。
  • 编写脚本: dig +short 是提取 IP 地址等信息的利器。
  • 检查系统配置: getent hostscat /etc/resolv.conf
分享:
扫描分享到社交APP
上一篇
下一篇