环境:Windows Server 2019,域名为 corp.example.com


一、环境规划(案例参数)

  • 域控 DC01:192.168.10.10/24,网关 192.168.10.1
  • 域控 DC02:192.168.10.11/24(额外域控)
  • 域名:corp.example.com
  • 外网转发:223.5.5.5、114.114.114.114
  • 客户端:DNS 只写域控,不写公网 DNS
    在这里插入图片描述

二、域控网卡 DNS 配置(关键!)

1)第一台域控 DC01(安装 AD+DNS 前)

  • 静态 IP:192.168.10.10
  • 首选 DNS:192.168.10.10(指向自己)
  • 备用 DNS:留空(单域控不要填公网)

2)第二台域控 DC02(额外域控)

  • 静态 IP:192.168.10.11
  • 首选 DNS:192.168.10.10(指向 DC01)
  • 备用 DNS:192.168.10.11(自己)
  • 等复制正常后,可互换

原则:域控网卡 DNS 只写域内 DNS,不写公网;多域控互相指向,避免单点故障。


三、安装 AD 时的 DNS 选项

运行 dcpromo 或服务器管理器安装 AD DS:

  1. 勾选:DNS 服务器
  2. DNS 选项页:
    • 选择:创建新域林
    • 根域名:corp.example.com
    • 勾选:动态更新
      在这里插入图片描述

安装完成后,DNS 会自动生成:

  • corp.example.com 正向区域
  • _msdcs.corp.example.com(AD 必需)

四、DNS 管理器配置(转发器+静态记录)

1)设置外网转发器(域控上网用)

  1. 打开 DNS 管理器 → 服务器名 → 转发器
  2. 新建转发器:
    • 223.5.5.5
    • 114.114.114.114
  3. 勾选:如果没有转发器可用,请使用根提示
    在这里插入图片描述

2)添加域控 A 记录(自动生成,核对即可)

  • DC01:A → 192.168.10.10
  • DC02:A → 192.168.10.11

五、域内客户端/服务器 DNS 配置(默认)

1)手动设置(静态 IP 机器)

  • 首选 DNS:192.168.10.10
  • 备用 DNS:192.168.10.11
  • 不要填公网 DNS(会导致域解析异常)

2)DHCP 服务器选项(自动下发)

DHCP → 作用域 → 选项配置:

  • 006 DNS 服务器:192.168.10.10, 192.168.10.11
  • 015 DNS 域名:corp.example.com

3)组策略强制推送 DNS(域内所有机器)

  1. 新建 GPO:Set-DNS-Corp
  2. 计算机配置 → 策略 → 网络 → DNS 客户端:
    • DNS 服务器:192.168.10.10,192.168.10.11
    • DNS 后缀:corp.example.com
  3. 链接到 整个域/所有 OU

六、命令行配置(可直接复制)

1)设置网卡 DNS(DC01)

netsh interface ip set dns "以太网" static 192.168.10.10 primary
netsh interface ip add dns "以太网" 127.0.0.1 index=2

2)设置转发器(PowerShell)

Add-DnsServerForwarder -IPAddress 223.5.5.5
Add-DnsServerForwarder -IPAddress 114.114.114.114

七、验证(必做)

1)域控验证

nslookup corp.example.com
nslookup dc01.corp.example.com
dcdiag /test:dns

2)客户端验证

ping dc01
ping corp.example.com
nslookup 百度.com  # 走转发器

八、常见坑

  1. ❌ 域控网卡 DNS 填公网:AD 复制/登录慢、组策略异常
  2. ❌ 客户端只填公网 DNS:加域失败、找不到域控
  3. ✅ 正确:域控互指+转发器;客户端只指域控

PowerShell 脚本,包含域控、转发器等核心配置,适配案例环境。

# ------------- 核心参数配置(按需修改)-------------
$dc01Ip = "192.168.10.10"
$dc02Ip = "192.168.10.11"
$domainName = "corp.example.com"
$forwarder1 = "223.5.5.5"
$forwarder2 = "114.114.114.114"
$nicName = "以太网"

# ------------- 1. 第一台域控(DC01)网卡DNS配置 -------------
Write-Host "=== 开始配置DC01网卡DNS ===" -ForegroundColor Green
# 清除现有DNS配置
netsh interface ip delete dns $nicName all
# 设置首选DNS为自身,备用DNS为127.0.0.1(兜底)
netsh interface ip set dns $nicName static $dc01Ip primary
netsh interface ip add dns $nicName 127.0.0.1 index=2
Write-Host "DC01网卡DNS配置完成:首选$dc01Ip,备用127.0.0.1" -ForegroundColor Green

# ------------- 2. 第二台域控(DC02)网卡DNS配置 -------------
Write-Host "`n=== 开始配置DC02网卡DNS ===" -ForegroundColor Green
# 清除现有DNS配置
netsh interface ip delete dns $nicName all
# 设置首选DNS为DC01,备用DNS为自身
netsh interface ip set dns $nicName static $dc01Ip primary
netsh interface ip add dns $nicName $dc02Ip index=2
Write-Host "DC02网卡DNS配置完成:首选$dc01Ip,备用$dc02Ip" -ForegroundColor Green

# ------------- 3. DNS转发器配置(所有域控通用)-------------
Write-Host "`n=== 开始配置DNS转发器 ===" -ForegroundColor Green
# 清除现有转发器(可选,避免重复)
Remove-DnsServerForwarder -IPAddress * -ErrorAction SilentlyContinue
# 添加外网转发器
Add-DnsServerForwarder -IPAddress $forwarder1
Add-DnsServerForwarder -IPAddress $forwarder2
# 启用根提示(无转发器时兜底)
Set-DnsServerRootHint -Enable $true
Write-Host "DNS转发器配置完成:$forwarder1$forwarder2" -ForegroundColor Green

# ------------- 4. 组策略推送DNS(域内所有机器)-------------
Write-Host "`n=== 开始创建组策略,强制推送DNS ===" -ForegroundColor Green
# 1. 创建GPO
New-GPO -Name "Set-DNS-Corp" -Comment "域内机器DNS强制配置" | Out-Null
# 2. 配置GPO:设置DNS服务器和DNS后缀
$gpoPath = "CN=Set-DNS-Corp,CN=Policies,CN=System,DC=corp,DC=example,DC=com"
# 配置DNS服务器(替换为实际域控IP)
Set-GPRegistryValue -Name "Set-DNS-Corp" -Key "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" -ValueName "NameServer" -Type String -Value "$dc01Ip,$dc02Ip"
# 配置DNS后缀
Set-GPRegistryValue -Name "Set-DNS-Corp" -Key "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" -ValueName "Domain" -Type String -Value $domainName
# 3. 将GPO链接到整个域
New-GPLink -Name "Set-DNS-Corp" -Target "DC=corp,DC=example,DC=com" -LinkEnabled Yes | Out-Null
Write-Host "组策略配置完成:已创建Set-DNS-Corp,链接到整个域,强制推送DNS为$dc01Ip、$dc02Ip" -ForegroundColor Green

# ------------- 5. 配置验证(可选,手动执行)-------------
Write-Host "`n=== 配置完成!建议执行以下命令验证 ===" -ForegroundColor Cyan
Write-Host "1. 域控DNS验证:nslookup $domainName"
Write-Host "2. 转发器验证:nslookup 百度.com"
Write-Host "3. 域控健康检查:dcdiag /test:dns"
Write-Host "`n脚本执行完毕!" -ForegroundColor Green
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐