递归查询是客户端向本地DNS服务器发一次请求后等待结果,由该服务器代为完成全部查询;迭代查询则是DNS服务器之间逐级查询、仅提供下一级线索,不代劳到底。
递归查询是客户端向dns服务器发一次请求、坐等结果;迭代查询是dns服务器之间逐级问路、不包办到底。两者分工明确,用错场景会导致解析失败或排查困难。
什么时候该用递归查询
日常上网、访问网站、运行应用时,系统默认走递归。你的电脑只对本地配置的DNS(比如192.168.1.1或114.114.114.114)发一次请求,后面所有查根、找.com、问权威服务器的事,都由它代劳。
- Windows中执行nslookup example.com(没指定服务器),就是递归查询
- 浏览器打开网址、ping域名、PowerShell里用Resolve-DnsName example.com,也默认递归
- 企业内网DNS若禁止外网IP递归,员工可能打不开网页——不是网络断了,是DNS拒绝帮你查
什么时候必须用迭代查询
迭代不是给普通用户用的,而是DNS服务器之间的协作方式,也是运维排障和验证解析链路的核心手段。
- 用nslookup -norecurse example.com 192.168.1.1,强制本地DNS不递归,只给线索
- 用dig example.com +trace(Linux/macOS)或Resolve-DnsName example.com -DnsOnly(Windows),能一步步看到从根→TLD→权威的完整路径
- 当发现“nslookup www.a.com 8.8.8.8 成功,但换成本地DNS就超时”,大概率是本地DNS没开递归,或转发器失效
Windows DNS服务的关键配置项
装了Windows Server DNS角色后,不能依赖默认设置,尤其在生产环境。
- 检查递归是否开启:Get-DnsServerRecursion,返回EnableRecursion : True才算生效
- 禁用递归后,必须配好转发器(如指向114.114.114.114),否则连迭代都走不动
- 若转发器不可达或超时太长(默认5秒),所有解析会卡住——不是慢,是直接失败
- 别让任意公网IP都能向你的DNS发起递归请求,否则可能被利用做DNS放大攻击
常见问题与快速定位方法
很多DNS故障表面是“上不了网”,实际是查询模式或权限配置出了偏差。
- nslookup example.com 192.168.1.1超时,但nslookup example.com 8.8.8.8正常 → 查本地DNS是否启用递归、防火墙是否放行UDP 53出站
- 内网用户能解析内网域名,但无法解析www.baidu.com → 检查转发器配置,或Get-DnsServerRootHint是否有有效根提示
- 用Resolve-DnsName example.com -Server 198.41.0.4 -Type A -DnsOnly能通,但普通解析不行 → 说明根服务器可达,问题出在本地DNS的递归逻辑或缓存策略


















