第1季 · WS2019 · DNS

DNS 部署与常见故障排查

【第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

解决方法:


# 强制重新注册 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、保留地址、超级作用域,一次搞定。