在 Windows Server 2019 上配置 DNS 转发器,通常通过 DNS 管理器图形界面或 PowerShell 完成。操作前请确保服务器已安装 DNS 服务器角色,并以管理员身份登录。此配置适用于内部 DNS 服务器需要将无法解析的外部请求转交给上游 DNS 的场景。
先说结论:配置转发器能让内部 DNS 服务器把外部域名解析请求交给更可靠的上游,避免自己递归查询带来的延迟或失败。
- 适合:内部 DNS 服务器需要解析互联网域名,且不希望直接暴露给公网根服务器
- 先准备:确认上游 DNS 服务器 IP 地址(优先使用企业内部 DNS 或合规公共 DNS)可达
- 验收:配置完成后使用 nslookup 测试外部域名是否能正常解析
前置环境检查
在配置前,请确认 DNS 服务已就绪:
- 打开 PowerShell(管理员身份)。
- 运行命令检查 DNS 角色状态:
Get-WindowsFeature DNS - 确认输出中 Install State 为 Installed。若未安装,需先通过服务器管理器添加 DNS 服务器角色。
配置方法
方法一:图形界面配置(推荐)
- 打开服务器管理器,点击工具,选择 DNS,或者运行
dnsmgmt.msc。 - 在左侧树状图中,右键点击服务器名称(例如 WIN-SERVER-2019),选择属性。
- 切换到转发器选项卡。
- 点击编辑按钮,输入上游 DNS 服务器的 IP 地址,每行一个,点击确定。
- 建议至少配置两个不同的 IP,以防单点故障。
- 点击应用并确定保存配置。
方法二:PowerShell 配置
- 以管理员身份打开 PowerShell。
- 运行以下命令添加转发器(注意:示例 IP 仅为演示,生产环境请替换为合规上游 DNS):
Add-DnsServerForwarder -IPAddress 8.8.8.8 Add-DnsServerForwarder -IPAddress 8.8.4.4 - 若有多个,可重复运行该命令。
- 查看当前配置确认生效:
Get-DnsServerForwarder - 配置完成后,无需重启服务,立即生效。
验证方法
配置完成后,不要急着离开,先确认解析是否正常:
- 打开命令提示符或 PowerShell。
- 输入
nslookup www.microsoft.com。 - 观察返回结果:如果显示了非权威的应答(Non-authoritative answer)且有 IP 地址,说明转发器工作正常。
- 如果显示请求超时(Request timed out),检查防火墙是否放行了 UDP 53 端口出站流量,或上游 DNS 是否可达。
- 也可以使用
Resolve-DnsName -Name www.microsoft.com查看更详细的解析过程。
常见坑与注意事项
- 转发循环:不要把转发器指向自己,或者指向另一个又指回你的 DNS 服务器,这会导致解析死循环。
- 根提示冲突:如果配置了转发器,Windows DNS 通常优先使用转发器。如果转发器全部不可用,且启用了根提示,它可能会尝试回退到根提示,但这取决于具体配置和超时设置。
- 安全合规风险:使用公共 DNS(如 8.8.8.8)作为示例可能不符合部分企业安全合规或隐私政策。生产环境建议优先使用运营商 DNS 或企业内部上级 DNS。
- 条件转发器混淆:注意区分普通转发器(所有外部域名)和条件转发器(特定域名转发到特定 DNS)。配置位置不同,不要配错。
- 防火墙拦截:服务器出站规则可能阻止 DNS 查询。确保 UDP 53 端口出站允许。
参考来源
- Microsoft Learn - DNS 服务器功能概述,URL: https://learn.microsoft.com/windows-server/networking/dns/dns-server-capabilities
- Microsoft Learn - 配置转发器,URL: https://learn.microsoft.com/windows-server/networking/dns/configure-forwarders