【第1季第2篇】Windows Server 2019 DNS 服务器:部署、正向反向解析、常见故障全攻略
系列:爱依航 · Windows Server 2019 运维系列
本篇主题:DNS 服务器部署与常见故障排查
环境:域名 iehang.cn / IP 192.168.10.10 / NetBIOS IEHANG
开篇:DNS 为什么是 AD 的命根子
很多人装 AD 域报错,第一反应是"域服务出问题了"。
实际上 90% 的 AD 部署报错,根子都在 DNS。
AD 域里几乎所有服务发现都靠 DNS:域控制器之间靠 SRV 记录互相找对方,客户端加域靠 DNS 解析域控制器的 IP,加域后访问共享资源靠 DNS 解析服务器名称。
DNS 一旦有问题,AD 就像断了导航的车——功能还在,但找不到路。
Part 1 · DNS 基础与环境规划
DNS 与 AD 的关系
AD 域控制器安装时,会自动在 DNS 服务器中注册以下记录:
| 记录类型 | 作用 |
| --------- | ------ |
|---|---|
| A 记录 | 域名 → IP(例:dc.iehang.cn → 192.168.10.10) |
| PTR 记录 | IP → 域名(反向解析) |
| SRV 记录 | 定位域服务(_ldap._tcp.dc._msdcs.iehang.cn) |
| SOA 记录 | 权威 DNS 服务器信息 |
| NS 记录 | 域名服务器记录 |
本系列环境 DNS 服务器与域控制器共用 IP:192.168.10.10
新建 DNS 前置条件
确保 AD 域服务(AD DS)已安装(本系列第1篇已完成)。DNS 服务器角色依赖 AD DS 运行。
Part 2 · 部署 DNS 服务器
步骤一:安装 DNS 服务器角色
打开"服务器管理器" → 添加角色和功能 → 服务器角色 → 勾选 DNS 服务器。
一路下一步,点击"安装"。完成后,无需重启。
步骤二:配置正向查找区域
AD 域控制器安装后,DNS 中已自动创建 iehang.cn 的 Active Directory 集成主区域,这一步通常已由 AD 安装向导完成。
如需新建独立区域,按以下步骤操作:
右键"正向查找区域" → 新建区域 → 选择"主要区域" → 勾选"在 Active Directory 中存储区域" → 区域名称填写:iehang.cn → 动态更新选择"不允许动态更新"(推荐生产环境)。
步骤三:配置反向查找区域
右键"反向查找区域" → 新建区域 → 主要区域 → 选择 IPv4 反向查找 → 网络 ID 填写:192.168.10 → 区域文件使用默认名称 → 动态更新选择"不允许动态更新"。
步骤四:手动添加常用记录
在正向查找区域的 iehang.cn 上右键 → 新建主机(A 或 AAAA):
| 主机名 | IP 地址 | 说明 |
| ------- | --------- | ------ |
|---|---|---|
| dc | 192.168.10.10 | 域控制器 |
| dhcp | 192.168.10.11 | DHCP 服务器(后续部署) |
| wds | 192.168.10.12 | WDS 服务器(后续部署) |
| file | 192.168.10.13 | 文件服务器(按需) |
在反向查找区域 192.168.10.x-subnet 上,为上述 IP 新建对应的 PTR 记录。
步骤五:验证 DNS 解析
# 测试正向解析(域控制器 A 记录)
nslookup dc.iehang.cn
# 测试反向解析
nslookup 192.168.10.10
# 测试 AD 服务定位记录
nslookup -type=srv _ldap._tcp.dc._msdcs.iehang.cn
# 检查 AD 相关 SRV 记录是否完整注册
Get-DnsServerResourceRecord -ZoneName iehang.cn -RRType ServiceBuilding | Format-Table HostName,RecordType,TimeToLive
所有记录返回正常 IP,说明 DNS 基础可用。
Part 3 · DNS 转发器配置(访问外网的关键)
域控制器自带的 DNS 只能解析内部域 iehang.cn,解析不了的域名(如 baidu.com、microsoft.com)需要转发给上游 DNS。
打开 DNS 管理器 → 右键服务器属性 → 转发器 → 编辑 → 添加上游 DNS 服务器:
首选转发器:192.168.10.1(路由器网关,或本地 ISP DNS)
备用转发器:8.8.8.8(Google 公共 DNS,备用)
如果内网机器需要同时访问内网(iehang.cn)和外网,务必确保转发器配置正确。
验证转发是否生效:
# 解析内网域名
nslookup dc.iehang.cn
# 解析外网域名
nslookup baidu.com
Part 4 · 常见故障 Top 3
故障一:SRV 记录缺失导致客户端加域失败
表现: 客户端加域时报错"找不到域控制器",或加域后无法使用域账号登录。
排查:
# 检查所有 SRV 记录
nslookup -type=srv _ldap._tcp.dc._msdcs.iehang.cn
nslookup -type=srv _kerberos._tcp.dc._msdcs.iehang.cn
nslookup -type=srv _gc._tcp.iehang.cn
- DNS 服务器 IP 配置错误(域控指向了公网 DNS 而不是自己)
- Netlogon 服务未正常运行
- 网络问题导致 DNS 记录无法注册
常见原因:
解决方法:
# 强制重新注册 Netlogon(SRV 记录由 Netlogon 服务注册)
nltest /dsregdns
# 重启 Netlogon 服务
Restart-Service Netlogon -Force
# 确认 Netlogon 服务状态
Get-Service Netlogon
如果上述命令后 SRV 记录仍未出现,检查 DNS 服务器角色是否正常运行,事件日志中是否有权限报错。
故障二:DNS 递归查询超时,内网解析时好时坏
表现: nslookup 解析内部域名偶尔超时,但 ping 能通。
原因: DNS 服务器未配置转发器,或者转发器超时设置过短;也有可能是防火墙阻断了 UDP 53 端口。
解决方法:
# 检查 DNS 服务器转发器配置
Get-DnsServerForwarder
# 设置合理的转发超时(秒)
Set-DnsServerForwarder -IPAddress 8.8.8.8 -Timeout 5
# 开启 DNS 递归(默认开启)
Set-DnsServerRecursion -Enable $true
同时检查服务器防火墙,确保 UDP 53 和 TCP 53 端口入站和出站均开放。
故障三:区域传送被拒绝,辅助 DNS 无法同步
表现: 部署了主从 DNS,但辅助 DNS 服务器无法获取区域数据。
原因: 主 DNS 服务器默认禁止了区域传送(Zone Transfer),这是安全加固的默认行为,但主从部署时需要手动允许。
解决方法:
在主 DNS 服务器上,定位到 iehang.cn 区域 → 右键属性 → 区域传送标签页 → 勾选"允许区域传送",并选择"只允许到以下服务器",填写辅助 DNS 的 IP 地址。
也可以通过 PowerShell 配置:
# 查看当前区域传送设置
Get-DnsServerZoneTransferPolicy -Name iehang.cn
# 允许指定 IP 的区域传送
Add-DnsServerZoneTransferPolicy -Name iehang.cn -NameServer 192.168.10.20 -TransferType Any -PassThru
Part 5 · 日常运维清单
每周检查
# 查看 DNS 区域记录数量(异常增加可能是恶意注册)
(Get-DnsServerResourceRecord -ZoneName iehang.cn).Count
# 检查是否存在异常 PTR 记录(内网不应有太多外网 IP)
Get-DnsServerResourceRecord -ZoneName "10.168.192.in-addr.arpa" | Select HostName,RecordType
# 查看 DNS 服务状态
Get-Service DNS
# 导出 DNS 记录清单
Get-DnsServerResourceRecord -ZoneName iehang.cn | Export-Csv -Path C:\Reports\DnsRecords_$(Get-Date -Format "yyyyMMdd").csv -NoTypeInformation
缓存清理(紧急排查时常用)
# 清除本地 DNS 缓存(客户端排查前先执行)
Clear-DnsClientCache
# 清除 DNS 服务器缓存
Clear-DnsServerCache -ComputerName localhost
# 查看缓存记录
Show-DnsServerCache -ComputerName localhost
安全加固
# 禁用递归查询(仅适用于纯内部权威 DNS 服务器)
Set-DnsServerRecursion -Enable $false
# 启用 DNS 递归时开启随机源端口(防放大攻击)
Set-DnsServerDnsSecSettings -EnablePacketDrop $true
# 定期检查 DNS 日志(4625 = 登录失败,4688 = 进程创建,可能涉及 DNS 枚举)
Get-WinEvent -FilterHashtable @{LogName="DNS Server";StartTime=(Get-Date).AddDays(-7)} -MaxEvents 50 | Select TimeCreated,ID,Message
下期预告
IP 地址怎么管?手动分配容易乱,地址冲突是噩梦。
下一期我们来讲:DHCP 服务器的部署与地址池管理,自动分配 IP、保留地址、超级作用域,一次搞定。