前置知识: Networking

DNS 查询

2 min入门

dig 与 nslookup:DNS 记录查询、+trace 追踪解析链路、指定服务器对比排查。

dig 基本查询

基本写法:查询域名 A 记录 dig <域名>

# 查询 example.com 的 A 记录
dig example.com

基本写法:指定记录类型 dig <域名> <类型>

# 查询 MX 记录
dig example.com MX

基本写法:查询简短输出 dig +short <域名>

# 只输出解析的 IP 地址
dig +short example.com

基本写法:指定 DNS 服务器 dig @<DNS服务器> <域名>

# 使用 8.8.8.8 作为 DNS 服务器查询
dig @8.8.8.8 example.com

基本写法:查询所有记录类型 dig <域名> ANY

# 查询所有类型的 DNS 记录
dig example.com ANY

dig 常用记录类型

基本写法:查询 A 记录(IPv4) dig <域名> A

# 查询 IPv4 地址
dig example.com A

基本写法:查询 AAAA 记录(IPv6) dig <域名> AAAA

# 查询 IPv6 地址
dig example.com AAAA

基本写法:查询 CNAME 记录 dig <域名> CNAME

# 查询别名记录
dig www.example.com CNAME

基本写法:查询 NS 记录 dig <域名> NS

# 查询域名服务器记录
dig example.com NS

基本写法:查询 TXT 记录 dig <域名> TXT

# 查询 TXT 记录
dig example.com TXT

基本写法:查询 SOA 记录 dig <域名> SOA

# 查询起始授权机构记录
dig example.com SOA

dig 高级选项

基本写法:反向查询 dig -x <IP>

# 反向解析 IP 地址
dig -x 8.8.8.8

基本写法:追踪解析过程 dig +trace <域名>

# 显示 DNS 解析的完整路径
dig +trace example.com

基本写法:显示详细统计 dig +stats <域名>

# 显示查询统计信息
dig +stats example.com

基本写法:指定端口号 dig -p <端口> <域名>

# 指定 DNS 服务器端口
dig -p 5353 @8.8.8.8 example.com

基本写法:指定 TCP 协议 dig +tcp <域名>

# 使用 TCP 协议查询
dig +tcp example.com

基本写法:设置超时时间 dig +time=<秒数> <域名>

# 设置 5 秒超时
dig +time=5 example.com

nslookup 查询

基本写法:基本查询 nslookup <域名>

# 查询域名 IP 地址
nslookup example.com

基本写法:指定 DNS 服务器 nslookup <域名> <DNS服务器>

# 使用指定 DNS 服务器查询
nslookup example.com 8.8.8.8

基本写法:查询指定记录类型 nslookup -type=<类型> <域名>

# 查询 MX 记录
nslookup -type=mx example.com

基本写法:交互模式 nslookup

# 进入交互模式
nslookup
> server 8.8.8.8
> example.com
> exit

基本写法:反向解析 nslookup <IP>

# 反向解析 IP 地址
nslookup 8.8.8.8

基本写法:调试模式 nslookup -debug <域名>

# 显示详细查询过程
nslookup -debug example.com

host 命令

基本写法:查询域名 IP host <域名>

# 查询域名对应的 IP
host example.com

基本写法:查询指定记录类型 host -t <类型> <域名>

# 查询 MX 记录
host -t MX example.com

基本写法:查询所有记录 host -a <域名>

# 查询所有 DNS 记录
host -a example.com

基本写法:反向解析 host <IP>

# 反向解析 IP 地址
host 8.8.8.8

基本写法:指定 DNS 服务器 host <域名> <DNS服务器>

# 指定 DNS 服务器查询
host example.com 8.8.8.8

基本写法:查询域名服务器 host -t ns <域名>

# 查询域名的 NS 记录
host -t ns example.com

DNS 故障排查

基本写法:检查域名解析 dig +short <域名> A

# 快速获取域名 IP
dig +short example.com A

基本写法:对比不同 DNS 解析结果 dig @8.8.8.8 +short example.com; dig @1.1.1.1 +short example.com

# 对比 Google 和 Cloudflare DNS 解析结果
dig @8.8.8.8 +short example.com
dig @1.1.1.1 +short example.com

基本写法:检查 DNS 缓存 dig +nocmd +noall +answer <域名>

# 只显示 ANSWER 部分
dig +nocmd +noall +answer example.com

基本写法:检查 TTL 值 dig <域名> | grep -i ttl

# 查看记录的 TTL 值
dig example.com | grep -i ttl

whois 域名信息

基本写法:查询域名注册信息 whois <域名>

# 查询域名 whois 信息
whois example.com

基本写法:查询 IP 持有者 whois <IP>

# 查询 IP 地址归属
whois 8.8.8.8

基本写法:指定 whois 服务器 whois -h <服务器> <域名>

# 指定 whois 服务器查询
whois -h whois.verisign-grs.com example.com

批量 DNS 查询

基本写法:批量查询域名 for d in <域名1> <域名2>; do dig +short $d; done

# 批量查询多个域名
for d in google.com github.com; do echo "$d: $(dig +short $d)"; done

基本写法:从文件批量查询 while read d; do dig +short $d; done < <文件>

# 从文件读取域名批量查询
while read d; do echo "$d: $(dig +short $d)"; done < domains.txt

DNS 协议详解查询

基本写法:显示完整响应 dig +noall +answer <域名>

# 只显示 ANSWER 段
dig +noall +answer example.com

基本写法:显示 TTL 和详细信息 dig +noall +comments +answer <域名>

# 显示注释和答案
dig +noall +comments +answer example.com

基本写法:查询 DNSSEC 记录 dig +dnssec <域名>

# 查询 DNSSEC 相关记录
dig +dnssec example.com

基本写法:查询 CDN CNAME 链 dig +trace +nodnssec <域名>

# 追踪 CNAME 链
dig +trace +nodnssec www.example.com