直接向 DNS 服务器查询记录,区分解析失败与网络不通。
nslookup 有两种模式:带参数时做单次查询,不带参数时进入交互式提示符,可反复执行 set type=、server 和查询命令。它默认使用网卡配置的 DNS 服务器,也可以把服务器写在最后一位,直接向指定 DNS 查询 A、AAAA、MX、TXT、SRV、PTR 等记录。
边界:nslookup 直接发 DNS 查询,不读本机 DNS Client 缓存和 hosts 文件,也不一定遵循应用的 NRPT、分域解析或 DoH 策略;因此它和 ping、浏览器结果不同是正常的。查本机缓存用 ipconfig /displaydns,查能带策略的解析结果用 Resolve-DnsName。它只验证 DNS,不验证目标端口或网站内容。
Windows 10/11 都自带 nslookup,但微软更推荐在脚本里用 PowerShell 的 Resolve-DnsName 获取结构化结果。nslookup 不支持 DoH/DoT,默认走 UDP 53,响应被截断时自动转 TCP;VPN、防火墙和 DNS 转发器都可能改变结果。
# 1. 用系统配置的 DNS 查 A/AAAA,先看名称能否解析
C:\> nslookup example.com
# 2. 指定公共 DNS,排除本地 DNS 服务器或转发器的问题
C:\> nslookup example.com 8.8.8.8
# 3. 查邮件路由,确认 MX 优先级和目标主机
C:\> nslookup -type=MX example.com
# 4. 只查 IPv6 地址,验证双栈解析是否完整
C:\> nslookup -type=AAAA example.com
# 5. 反查 IP 的 PTR 记录,排查日志里的地址归属
C:\> nslookup -type=PTR 8.8.8.8
# 6. 查域控服务记录,确认 SRV 指向哪台主机和端口
C:\> nslookup -type=SRV _ldap._tcp.dc._msdcs.contoso.com
# 7. 末尾加点表示绝对域名,避免被 DNS 后缀搜索列表改写
C:\> nslookup example.com.
nslookup 正常但 ping 失败,可能是 hosts、DNS Client 缓存或应用走了别的解析策略;先 ipconfig /displaydns,再对比 ping 的解析结果。nslookup 失败但浏览器能打开,可能是浏览器用了 DoH、系统 NRPT 或代理;用 Resolve-DnsName 或抓包看实际查询,不要只凭 nslookup 下结论。Default Server: UnKnown 通常只是 DNS 服务器地址反查不到名称,不影响查询;看后面的 Address 和 Name 结果。Non-authoritative answer 表示答案来自递归缓存,不是错误;要看权威来源和 TTL,可指定权威服务器或用 -debug 观察。Non-existent domain 是 NXDOMAIN,Server failed 更像 SERVFAIL,Request to ... timed out 是没收到响应;三者分别指向域名不存在、服务器故障和网络/防火墙问题。-type=ANY 常被服务器拒绝或只返回部分记录;要什么类型就明确写 A、AAAA、MX、TXT、SRV,不要依赖 ANY。example.com 和 example.com. 的结果不同,脚本里优先用绝对形式。nslookup 的本地化文本或只依赖退出码;用 Resolve-DnsName 获取对象和状态,再判断解析是否成功。合上页面,先回答,再展开对照。
nslookup 能解析,ping 却解析到另一个地址?Non-authoritative answer 是错误吗?它说明答案来自哪里?
小程序版
微信扫码,随时查命令