linux dns 解析 命令行

Linux DNS解析用 dignslookup、host 命令

Linux DNS 解析命令行详解

在 Linux 系统中,DNS(域名系统)解析是网络通信的核心环节,掌握命令行工具进行 DNS 解析调试和故障排查,是每个运维工程师和开发者的必备技能,本文将系统介绍 Linux 中常用的 DNS 解析命令及其高级用法。


核心 DNS 解析命令

dig 命令

全称:Domain Information Groper
功能:综合性 DNS 查询工具,支持多种记录类型和查询模式

参数 作用
example.com 查询 A 记录(默认)
+short 仅显示简洁结果(IP地址)
+nocmd 不显示查询指令信息
+nocomments 移除注释行
+noquestion 不显示查询问题部分
+answer 仅返回权威应答(ANSWER SECTION)
@8.8.8.8 指定 DNS 服务器
+trace 启用递归追踪(显示完整查询路径)
+stats 显示统计信息(响应时间、消息大小等)
+ignore 忽略特定类型的回复(如 +ignoreauthority 忽略权威记录)
p port 指定非标准端口(如 p 5353
t type 指定查询记录类型(如 t MX

示例

# 查询 A 记录并追踪递归过程
dig www.baidu.com +trace
# 查询 MX 记录并显示详细过程
dig t MX gmail.com +nocmd +nocomments +noquestion
# 指定 Google DNS 服务器查询
dig @8.8.8.8 example.com

nslookup 命令

功能:交互式 DNS 查询工具,支持正向/反向解析

参数 作用
query=TYPE 指定查询类型(如 AXFRCNAMETXT
server SERVER 指定 DNS 服务器
type=TYPE query,兼容旧版本
port=PORT 指定非标准端口(如 port 5353
debug 显示详细调试信息(包含 EDNS 扩展信息)
timeout=N 设置超时时间(秒)
retry=N 设置重试次数

示例

# 交互模式查询
nslookup > Server: 114.114.114.114
> www.qq.com
# 直接查询反向解析
nslookup 104.28.7.100
# 指定服务器查询 TXT 记录
nslookup server 1.1.1.1 type=TXT 'oo.mybank.com'

host 命令

功能:轻量级 DNS 查询工具,适合快速查询

参数 作用
t TYPE 指定记录类型(如 t MX
a 自动选择正向/反向解析(根据输入判断)
v 显示详细解析过程
C 允许多行输入(用于复杂域名)
T 执行 AXFR 区域传输(需权限)

示例

linux dns 解析 命令行

# 查询 NS 记录
host t NS example.com 8.8.8.8
# 反向解析 IPv6 地址
host 6 2404:6800:4004:805::1001

高级应用场景

递归追踪与性能分析

使用 dig +trace 可观察完整的递归查询路径:

dig +trace www.example.com

输出示例:

;; global options: +cmd
.           <root>      IN      NS      h.rootservers.net.
...
example.com      IN      NS      a.ianaservers.org.
...
www.example.com  IN      A       93.184.216.34

DNSSEC 验证

添加 +dnssec 参数验证签名:

dig +dnssec example.com @dns.google

输出中会包含 ADFLAG 标志和 RRSIG/DNSKEY 记录。

EDNS Client Subnet (ECS)

现代 DNS 解析支持客户端子网信息:

linux dns 解析 命令行

dig @1.1.1.1 b 192.168.1.0/24 example.com +nocmd

此参数会影响 CDN 服务商的智能路由策略。


DNS 配置管理命令

修改解析配置

编辑 /etc/resolv.conf 文件:

nameserver 114.114.114.114
search localdomain.com
options ndots:1

Systemdresolved 管理

现代 Linux 系统使用 systemdresolved:

# 查看当前配置
systemdresolve status
# 修改 stub resolver 配置
sudo bash c 'echo "DNS=8.8.8.8" >> /etc/systemd/resolved.conf'
sudo systemctl restart systemdresolved

常见问题与解决方案

无法解析域名

现象 排查步骤
dig example.com 超时 检查网络连通性
更换 nameserver
检查防火墙规则
返回 SERVFAIL 检查域名拼写
尝试根服务器查询(@a.rootservers.net
循环解析 清理 /var/cache/dns/* 缓存文件

DNS 缓存问题

清除缓存方法:

# glibc NSCD 缓存
sudo /etc/init.d/nscd restart
# systemdresolved 缓存
sudo systemdresolve flushcaches

特殊场景处理

TCP 模式查询

当 UDP 查询返回 TRUNCATE 时改用 TCP:

linux dns 解析 命令行

dig @8.8.8.8 example.com p 53 +tcp

批量查询工具

使用 masscannmap 进行批量探测:

nmap sU p 53 script dnsaxfr <ip> # 测试区域传输漏洞

相关问题与解答

Q1: dignslookup 的主要区别是什么?

A:

  • dig 是综合工具,支持更多参数和脚本化操作,输出标准化;
  • nslookup 提供交互模式,适合手动调试;
  • host 是简化工具,适合快速查询。

Q2: 如何测试某个 DNS 服务器是否支持递归查询?

A:
向该服务器发送不带递归的查询请求:

dig @dnsserverip example.com +norec +noall +answeronly

若返回 SERVFAIL,说明不支持递归;若返回正确结果,则

来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/200888.html

Like (0)
小编小编
Previous 2025年5月9日 05:07
Next 2025年5月9日 05:22

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注