nslookup 与 host 是什么
两者都是 BIND 发行包里的 DNS 查询工具:把域名解析成地址(正向),或把地址反查成域名(反向)。nslookup 几乎预装在所有系统上,Windows 自带且支持交互模式和单条命令;host 输出只有关键行,几乎没有格式噪音,适合脚本里直接抓取。它们的定位是「快速验证」,不做 DNSSEC 校验、不给完整的委派链,遇到解析异常需要看授权链与缓存细节时仍要换 dig。
基本信息
| 适用系统 | Linux / Unix(host、nslookup);Windows、部分网络设备(仅 nslookup) |
|---|---|
| 可查类型 | A / AAAA / MX / NS / TXT / CNAME / SOA / PTR / CAA |
| 指定解析器 | nslookup 把服务器 IP 写在查询名之后,或交互模式 set server |
| 默认端口 | UDP 53,响应被截断时自动改用 TCP 53 |
| 输出风格 | nslookup 偏交互可读,host 偏一行一记录 |
典型使用场景
- 验证解析变更是否生效:指定权威服务器或公共 DNS 查询,避开本机缓存给出旧答案
- 排查邮件投递异常:查 MX 记录、SPF 的 TXT 记录、DMARC 的 _dmarc 子域记录
- 定位 IP 归属:用 PTR 反查地址属于哪家运营商或云厂商
- Windows 主机与网络设备上做最小验证:这些环境通常没有 dig
- 写巡检脚本:host 的简洁输出比 dig 的完整输出更容易解析
- 确认通配解析与 CDN 调度是否按预期返回多条地址
最小示例
最小示例
nslookup example.com # 用系统默认解析器查 A 记录
nslookup -type=MX example.com 223.5.5.5 # 指定公共 DNS 查邮件交换记录
nslookup -type=TXT _dmarc.example.com # 查 DMARC 策略记录
host -t AAAA example.com 1.1.1.1 # host 指定解析器查 IPv6 地址
host -t NS example.com # 看区域委派了哪些权威
host 203.0.113.10 # 反查 PTR(需反向区已配置)
nslookup # 进交互模式,set server 8.8.8.8 换解析器输出怎么读
| 输出行 | 含义 | 正常还是异常 |
|---|---|---|
| Server / Address | 本次真正使用的解析器 | 应与你指定的服务器一致,不一致说明参数没生效 |
| Non-authoritative answer | 答案来自递归缓存,未带 AA 标志 | 默认现象,不是错误 |
| Name / Address | 查询对象与解析出的地址 | 地址为空或 NXDOMAIN 说明记录不存在 |
| can't find ... NXDOMAIN | 域名或该类型记录不存在 | 检查拼写与类型,别急着改解析 |
| REFUSED | 解析器拒绝为你递归 | 常见于直接查权威服务器时 |
指定权威服务器直查时不要期待递归结果:多数权威只回答自己负责的区域,问无关域名会返回 REFUSED。企业内部 DNS 也可能只对特定网段开放递归。
nslookup 的交互输出会随版本与系统语言变化,做脚本解析容易翻车;需要被程序消费时用 host 或 dig +short。