nslookup 的定位
nslookup 是 Windows 与部分精简 Linux 环境自带的 DNS 查询工具,输出不如 dig 清晰、参数也不如 dig 灵活,但胜在跨平台一定存在。现场排障时经常遇到对方机器只有 nslookup 可用的情况,把它的输出结构读对,比争论「为什么不用 dig」更有价值。
输出结构怎么读
nslookup 的输出分两段:前一段 Server 与 Address 是它本次实际询问的 DNS 服务器及其地址,后一段才是查询结果。很多误判源于把 Address 里的地址当成解析结果。若这里出现 127.0.0.53 这类回环地址,说明系统用了 systemd-resolved 的本地存根,真实上游要另外查。
常用形式
常用形式
nslookup example.com # 使用系统默认 DNS
nslookup example.com 8.8.8.8 # 指定服务器,注意服务器参数在后
nslookup -type=mx example.com 8.8.8.8 # 查询邮件记录
nslookup -type=txt example.com # 查询文本记录
nslookup -type=any example.com # 通用查询,受 RFC 8482 限制结果有限
nslookup 8.8.8.8 # 反查,自动走 PTR 记录交互模式常用命令
| 命令 | 作用 | 备注 |
|---|---|---|
| server 223.5.5.5 | 切换当前使用的 DNS 服务器 | 切换后后续查询都发往它 |
| set type=mx | 设置查询的记录类型 | 等价于命令行 -type 参数 |
| set debug | 开启调试输出 | 能看到完整请求与应答细节 |
| set timeout=2 | 设置单次查询超时秒数 | 排查慢解析时很有用 |
| exit | 退出交互模式 | 脚本里不要进入交互模式 |
典型使用场景
- Windows 机器上快速确认域名解析结果,判断是否为 DNS 问题
- 精简容器或受限环境里没有 dig,用 nslookup 做最低限度的解析验证
- 对比不同 DNS 服务器的返回结果,定位解析不一致的来源
- 反查 IP 对应的域名,辅助判断对面是什么服务
- 验证邮件相关记录,排查外发邮件被拒的域名配置问题
nslookup 会使用系统的搜索域补全:查绝对域名时在结尾加一个点号(如 example.com.)可以避免被自动拼接后缀,减少歧义。
Windows 中文版的提示文字与英文版不同,用脚本解析 nslookup 输出时不要依赖固定字符串,优先改用 PowerShell 的 Resolve-DnsName 取结构化结果。