安装DNS服务,创建正反向区域,添加资源记录,配置转发与缓存策略
Windows服务器配置DNS完整指南
DNS服务
1 DNS基础概念
术语 |
说明 |
域名系统(DNS) |
将人类可读的域名转换为计算机IP地址的分布式数据库系统 |
正向解析 |
通过域名查找IP地址(如:www.example.com → 192.168.1.100) |
反向解析 |
通过IP地址查找域名(如:192.168.1.100 → www.example.com) |
区域(Zone) |
DNS数据存储单位,包含域名与IP的映射关系 |
名称服务器 |
存储和响应DNS查询的服务器 |
2 DNS服务器类型
类型 |
特点 |
适用场景 |
主DNS服务器 |
可读写,存储主副本 |
核心DNS服务 |
辅助DNS服务器 |
只读,从主服务器同步数据 |
冗余备份 |
缓存DNS服务器 |
不存储区域数据,仅缓存查询结果 |
提升查询性能 |
Windows DNS服务安装与配置
1 安装DNS服务器角色
- 打开【服务器管理器】→ 【添加角色和功能】
- 选择【基于角色或功能的安装】→ 勾选【DNS服务器】
- 安装完成后重启服务器(部分场景需要)
2 配置DNS服务器属性
路径 |
设置项 |
【DNS管理器】→ 服务器属性 |
正向查找区域命名为example.com 创建默认反向查找区域 |
【接口选项】 |
监听所有IP地址 启用TCP/IP筛选(建议端口53) |
【转发器】 |
设置上游DNS(如ISP DNS) 启用循环转发模式 |
3 创建正向查找区域
右键【正向查找区域】→ 新建主机(A/AAAA)
2. 设置示例:
名称:www
IP地址:192.168.1.100
创建相关指针(PTR)记录
4 创建反向查找区域
右键【反向查找区域】→ 新建区域
2. 网络ID设置为`192.168.1.`(自动生成区域文件)
3. 添加PTR记录:
主机IP:100.1.168.192.inaddr.arpa
指向:www.example.com
高级配置与优化
1 区域传输设置
设置项 |
说明 |
SCACP查询防护 |
防止未授权的区域传输请求(推荐启用) |
通知列表 |
配置辅助DNS服务器IP,当主区域更新时自动同步 |
安全设置 |
设置允许区域传输的IP白名单(建议仅限辅助服务器) |
2 DNS缓存配置
# 查看缓存条目数
GetDnsServerCache
# 清除缓存
ClearDnsServerCache
# 设置缓存过期时间(默认1小时)
SetItemProperty Path "CN=Cache,CN=MicrosoftDNS,CN=System" Name "MaxTtl" Value 3600
3 递归查询配置
参数 |
说明 |
NoRecursion |
禁用递归查询(适用于缓存服务器) |
AppendToForwarders |
允许转发请求附加到上游DNS列表 |
StaleAnswerTimeout |
设置陈旧记录的存活时间(默认24小时) |
故障排除与监控
1 常见错误代码
事件ID |
描述 |
解决方案 |
4001 |
区域文件加载失败 |
检查区域文件语法,确认%windir%\system32\dns目录存在区域文件 |
4520 |
名称冲突检测失败 |
运行dnscmd /zonereset 重置区域缓存 |
3004 |
动态更新失败 |
检查DHCP服务器配置,确认客户端具有更新权限 |
2 调试工具使用
- NSLookup:
nslookup www.example.com
- Dnscmd:
dnscmd /recordadd example.com A www 192.168.1.100
- 事件查看器:检查DNS服务日志(应用程序和服务日志→Microsoft→Windows→DNS)
安全加固建议
1 访问控制列表(ACL)
操作 |
命令示例 |
限制管理访问 |
dnsacl /server=localhost /action=deny /sddl="(A;;GX;;WD;)" |
允许特定用户 |
dnsacl /zone=example.com /user=Domain\Admins /t=allow /r=write |
2 签名与加密
- 启用DNSSEC:
- 生成密钥对:
dnscmd /keygen /ksk
- 签署区域:
dnscmd /zonesign example.com
- 配置在线签名:
SetDnsServerSigningSettings KeyMaster KSKSignatureValidityDays 365
相关问题与解答
Q1:客户端无法解析域名应如何排查?
A:按以下顺序检查:

- 确认DNS服务器IP配置正确(客户端网络设置)
- 检查DNS服务是否运行(服务管理器→DNS)
- 验证区域文件中是否存在对应记录
- 测试本地解析:
ipconfig /flushdns
后重试查询
- 检查防火墙是否阻止UDP/TCP 53端口
Q2:如何实现多台DNS服务器之间的负载均衡?
A:采用轮询(Round Robin)机制:

- 在区域文件中为同一主机名创建多个A记录:
主机名:mail
IP地址:192.168.1.101
IP地址:192.168.1.102
- 确保所有DNS服务器版本一致(避免解析差异)
- 配置SCACP查询保护,防止