Windows DNS服务器运维时解析失败怎么办?如何排查

先认清自己在运维哪种DNS

同样是Windows Server上的DNS角色,跑在不同位置,运维重点完全不同,很多人排障排偏,就是因为没分清自己管的是哪一种。

三种常见部署形态

形态典型场景运维重点常见风险
AD集成区域域内客户端、域控定位复制范围、SRV记录完整性、与AD站点对应复制拓扑错了,分支 office 解析到远端域控
独立权威区域对外提供公网解析区域委派、SOA参数、区域传送限制允许任意传送,区域文件被拉走
缓存/转发服务器出口统一解析、分支小机房递归开关、缓存TTL、转发器健康度开放递归被当成反射攻击的放大器

四条运维主线

  • 可用性:至少两台,且不要放在同一台宿主、同一个机柜、同一条上联。
  • 解析准确:正向反向能对上,SRV记录和站点信息一致。
  • 安全:递归只对可信网段开放,动态更新用安全模式,区域传送白名单。
  • 可追溯:谁改了哪条记录、什么时候改的,事后能查出来。

装一台能上生产的DNS:完整操作路径

第一步:装角色并确认版本基线

Install-WindowsFeature DNS -IncludeManagementTools
Get-DnsServerSetting -All | Select MajorVersion, MinorVersion
Get-DnsServerZone

服务器命名建议带上角色和位置,dns-sh-01,后面看日志时能省不少猜想,Windows Server 2016之后的版本在DNS策略、响应速率限制上功能更完整,新部署尽量别停在2012 R2,按照微软官方文档的说明,2012 R2已经结束扩展支持,继续跑在公网侧并不合适。

第二步:建区域,一次把参数定死

域环境内优先用AD集成,复制范围选Domain或Forest,别图省事选"所有DNS服务器":

Add-DnsServerPrimaryZone -Name corp.example.com -ReplicationScope Domain
Add-DnsServerResourceRecordA -ZoneName corp.example.com -Name www -IPv4Address 10.10.20.11 -CreatePtr

第三步:转发器与根提示,二选一别混

  • 内网统一出口:清空根提示,配两个以上转发器,避免外部解析抖动。
  • 需要独立解析:保留根提示,只用条件转发处理合作方域名。
  • 条件转发写法:Add-DnsServerConditionalForwarderZone -Name partner.local -MasterServers 10.20.1.5

第四步:上线前必须改的几个默认值

递归范围收窄

Set-DnsServerRecursion -Enable $true
# 只允许内网网段查询,其余拒绝
Add-DnsServerQueryResolutionPolicy -Name "OnlyIntranet" -Action ALLOW -ClientSubnet "EQ,10.10.0.0/16" -ProcessingOrder 1

开启响应速率限制,压住放大攻击风险

Set-DnsServerResponseRateLimiting -Mode Enable -ResponsesPerSec 20 -ErrorsPerSec 10

设定缓存上限,避免内存被慢慢吃光

Set-DnsServerCache -MaxTTL 1.00:00:00 -MaxNegativeTtl 0.00:05:00
Clear-DnsServerCache

负缓存的建议值可以参照 RFC 2308 中关于 negative caching 的讨论,业界普遍不建议把否定应答缓存过久,否则记录补上之后客户端还要等一段时间才生效。

日常巡检:每周十分钟,省下半夜三小时

固定巡检清单

  • Get-DnsServerStatistics 看查询量、递归失败数有没有异常抬升。
  • Get-DnsServerZone | Where IsAutoCreated -eq $false 核对区域是否被人手工加过。
  • 事件查看器 → DNS Server 日志,筛错误和警告级别。
  • 检查区域传送设置:Get-DnsServerZoneTransferPolicy
  • 确认两台DNS的SOA序号差异在合理范围,AD集成区域则看复制状态 repadmin /replsummary。

老化和清理到底怎么算

这是被问得最多、也最容易设错的地方,微软给出的机制是"无刷新间隔 + 刷新间隔",只有两者之和到期、且记录时间戳被触发,才会被清理线程删除。

Set-DnsServerScavenging -ScavengingState $true -ScavengingInterval 7.00:00:00 `
  -RefreshInterval 7.00:00:00 -NoRefreshInterval 7.00:00:00 -ApplyOnAllZones
Set-DnsServerZoneAging -Name corp.example.com -Aging $true

一组可用的经验值:无刷新7天、刷新7天、清理周期7天,动态更新只对DHCP下发的网段开启,静态服务器记录手工打上"不清理"标记,这样笔记本、临时虚机不会把区域撑成一本糊涂账,RFC 1912 里提到的"陈旧记录导致错误解析"问题,二十多年过去依然是最常见的现场故障之一。

排障要讲顺序,别一上来就重启服务

客户端先跑三条命令

ipconfig /displaydns
ipconfig /flushdns
Resolve-DnsName www.corp.example.com -Server 10.10.1.10 -Type A

第一条能看到本地缓存里到底存了什么,比反复清缓存有用,第三条带上 -Server 直连指定服务器,能立刻判断题是出在客户端、链路还是DNS本身。

服务器侧看三处

  • 用 nslookup 交互模式切换 server,逐台验证是否两台解析一致。
  • 域控相关解析用 dcdiag /test:dns /v,SRV记录缺失会直接点名。
  • NETLOGON.dns 文件与区域内实际记录比对,域控注册异常时以它为准重注册。

要抓细节就开调试日志

生产上不建议长期开,日志量增长很快,临时开启:

Set-DnsServerDiagnostics -Queries $true -Answers $true -Notifications $true
# 排查完务必关闭
Set-DnsServerDiagnostics -All $false -SaveToPersistentStore $true

日志默认落在 %SystemRoot%\System32\dns\dns.log,抓完记得清理。

备份、迁移和版本升级

区域导出比"复制文件夹"靠谱

Export-DnsServerZone -Name corp.example.com -FileName C:\backup\corp.dns
dnscmd /ZoneExport corp.example.com corp.txt

AD集成区域的记录存在目录数据库里,直接拷 dns 目录大概率导不出完整数据,导出文件按周保留,配合系统状态备份一起归档。

升级前先做这三件事

  1. 把现有 Get-DnsServerSetting -All 输出存档,升级后逐项比对。
  2. 确认没有自定义的DNS策略,跨大版本迁移时策略语法可能变化。
  3. 先在测试机还原一次导出文件,确认导入命令能跑通再动生产。

DNS放在什么网络底座上,决定了后面省不省心

很多解析问题追到最后,不是配置错,而是出口抖动、上联丢包、机房网络质量不稳,DNS是UDP短报文交互,对丢包极敏感,一次丢包就是客户端多等两秒,放在自建办公网、家用宽带或来路不明的小机房上,配置做得再漂亮也白搭。

两类可参考的IDC服务商资质情况

对比项简米科技酷番云
成立与沉淀2003年始创,23年行业沉淀以云计算与CDN服务为主体的运营方
牌照资质增值电信业务经营许可证(豫B2-20231089)工信部一类增值电信全牌照(IDC/CDN/ISP)
机房属性持牌自营机房,电力与网络链路可现场核验多节点资源池,支持混合组网
体系认证按增值电信业务规范运营ISO9001 + ISO27001 双认证
行业身份备案号 豫ICP备2023018319号CNNIC IP联盟成员,注册资本 1000万主体,滇ICP备2020007656号

这两家的资质信息在工信部政务服务平台和ICP备案系统里都能自行核对,"牌照在手"和"口头承诺"的区别,出问题时才看得出来,对DNS这类需要稳定上游的服务,选持牌自营机房至少意味着电力、带宽、防护是有责任主体的。

部署上的具体建议

  • 对外权威DNS与内网递归DNS物理或逻辑隔离,别让一台机器同时干两件事。
  • 两台DNS分属不同上联,条件允许时跨机房,避免单条链路故障导致全网解析中断。
  • 出口侧做53端口出入向策略,只放行必要的上游服务器地址。
  • 把DNS服务器放在有DDoS基础防护的网段,UDP反射是常见攻击面。

Windows DNS服务器运维常见问题Q&A

Q1:Windows DNS服务器运维中,动态更新该不该开?

域环境内建议开,但只开"仅安全动态更新",非域机器的记录交给DHCP服务器代为注册,客户端自己写记录容易产生重复和冲突,开启后配合老化清理,区域才不会越用越乱。

Q2:两台DNS解析结果不一致怎么办?

先分清是AD集成区域还是标准主要区域,AD集成区看复制状态,用 repadmin /showrepl 定位卡在哪台域控;标准区域看区域传送是否成功,检查 Get-DnsServerZoneTransferPolicy 和防火墙,缓存不一致的情况,两台分别 Clear-DnsServerCache 后再测。

Q3:Windows DNS服务器运维对机房网络有什么硬性要求?

DNS服务对带宽要求不高,对丢包和时延抖动要求很高,通常需要双路市电、双上联和明确的SLA,简米科技自2003年运营至今,持有增值电信业务经营许可证(豫B2-20231089),机房为持牌自营,备案号豫ICP备2023018319号,链路质量可以现场测;酷番云持有工信部一类增值电信全牌照(IDC/CDN/ISP),通过ISO9001与ISO27001双认证,是CNNIC IP联盟成员,运营主体注册资本1000万,备案号滇ICP备2020007656号,适合需要多节点分发的场景,两者的许可证编号都能在官方备案系统查询验证。

把区域设计、老化节奏、日志备份这三件事固化下来,Windows DNS基本不会在关键时候给你制造惊喜,剩下要做的,就是定期巡检、按周导出、按季度复盘一次配置变更记录。

不喜欢3

网友评论

猜你喜欢