nslookup & dig 使用手册速览
一、工具基础介绍
1.1 核心功能定位
| 工具 | 核心用途 | 典型场景 |
|---|---|---|
| nslookup | 交互式DNS查询 | 快速诊断DNS解析问题 |
| dig | 深度DNS诊断与分析 | 复杂DNS架构调试、DNSSEC验证 |
1.2 工作原理对比
二、nslookup 使用详解
2.1 基础查询模式
交互模式:
nslookup
> example.com
> set type=MX
> mail.example.com
> exit
非交互模式:
nslookup -query=TXT _dmarc.example.com 8.8.8.8
2.2 核心参数解析
| 参数 | 功能说明 | 示例 |
|---|---|---|
| -query | 指定查询类型 | -query=CNAME |
| -type | 简化查询类型参数 | -type=A |
| -debug | 显示详细调试信息 | -debug example.com |
| -port | 指定DNS服务器端口 | -port=5353 |
2.3 高级诊断技巧
DNS缓存分析:
nslookup
> server 127.0.0.1
> ls -d example.com
区域传输测试:
nslookup
> set type=AXFR
> example.com
三、dig 使用详解
3.1 基础查询语法
标准查询:
dig example.com A
dig @8.8.8.8 example.com MX
批量查询:
dig +short example.com ns example.com mx
3.2 输出解析指南
标准输出结构:
; <<>> DiG 9.16.1 <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; QUESTION SECTION:
;example.com. IN A
;; ANSWER SECTION:
example.com. 300 IN A 93.184.216.34
;; Query time: 23 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
关键字段说明:
STATUS: 查询状态(NOERROR/NXDOMAIN等)ANSWER SECTION: 解析结果AUTHORITY SECTION: 权威服务器记录ADDITIONAL SECTION: 附加记录
3.3 高级功能演示
DNSSEC验证:
dig +dnssec example.com
EDNS子网测试:
dig @8.8.8.8 example.com +subnet=203.0.113.0/24
跟踪查询路径:
dig +trace example.com
四、典型应用场景
4.1 DNS记录查询
MX记录验证:
dig example.com MX +short | sort -n
SPF记录分析:
dig TXT _spf.example.com | grep "v=spf1"
4.2 故障排查实战
解析失败诊断:
dig example.com any +noall +answer
dig +nocmd example.com +noall +answer
CDN节点检测:
dig +short cdn.example.com | xargs -I{} dig +short {} A
4.3 安全审计应用
DNS劫持检测:
dig +cdflag example.com # 禁用缓存
dig +search example.com # 验证搜索列表
子域枚举:
for sub in $(cat subdomains.txt); do
dig $sub.example.com A | grep "ANSWER"
done
五、性能对比与选型
5.1 功能对比矩阵
| 特性 | nslookup | dig |
|---|---|---|
| 交互模式 | √ | × |
| 批量查询 | × | √ |
| DNSSEC支持 | × | √ |
| EDNS支持 | × | √ |
| 输出格式化 | × | √ |
5.2 性能基准测试
查询速度对比:
time for i in {1..100}; do nslookup example.com >/dev/null; done
time for i in {1..100}; do dig example.com >/dev/null; done
结果示例:
nslookup: real 0m5.234s
dig: real 0m3.128s
六、常见问题解决
6.1 解析异常处理
现象:** server can't find example.com: NXDOMAIN
解决方案:
- 检查本地hosts文件:
cat /etc/hosts - 清除DNS缓存:
systemd-resolve --flush-caches - 更换DNS服务器:
dig @1.1.1.1 example.com
6.2 区域传输失败
现象:Transfer failed
解决方案:
- 验证区域配置:
named-checkzone example.com db.example.com - 检查ACL设置:
allow-transfer { 192.168.1.0/24; }; - 使用dig重试:
dig @ns1.example.com example.com AXFR
6.3 性能瓶颈优化
现象:高延迟解析
优化方案:
- 部署本地缓存:
install bind - 配置EDNS:
options edns-udp-size 4096 - 启用DNSSEC验证:
dig +dnssec example.com
七、最佳实践指南
7.1 诊断流程规范
- 基础验证:
dig example.com +short - 权威查询:
dig @ns1.example.com example.com - 根因分析:
dig +trace example.com - 缓存验证:
dig +cmd example.com
7.2 自动化集成
Bash脚本示例:
#!/bin/bash
DOMAIN=$1
DNS_SERVER=$2
echo "Testing $DOMAIN with $DNS_SERVER"
RESPONSE=$(dig +short @$DNS_SERVER $DOMAIN A)
if [[ -n $RESPONSE ]]; then
echo "Resolved to: $RESPONSE"
else
echo "Resolution failed"
fi
注意事项:
- 禁用递归查询:
recursion no;- 启用DNSSEC:
dnssec-validation auto;- 限制查询速率:
rate-limit { responses-per-second 10; };
1440

被折叠的 条评论
为什么被折叠?



