Featured image of post Windows Server 2022 DNS 服务器:正向/反向区域、转发器与老化清理

Windows Server 2022 DNS 服务器:正向/反向区域、转发器与老化清理

Windows Server 2022 DNS 服务器:正向/反向区域、转发器与老化清理

这是「Windows Server 2022 虚拟机学习实验」系列第 5 篇。DNS 是第 6 篇 AD 域的命根子——域控找不到 DNS,域就建不起来。先打快照:DNS实验前。本篇图形界面为主:DNS 管理器(dnsmgmt.msc)就是为鼠标生的。

ping www.baidu.com 通,但 ping dc01.lab.local 不通?八成是 DNS 的问题。DNS 是所有网络服务里"配置 10 分钟、排错 10 小时"的代表,这篇把它的核心机制一次讲透。

一、安装 DNS 角色(图形界面)

🖱️ 图形界面做法:服务器管理器 → 管理 → 添加角色和功能 → 服务器角色勾选 DNS 服务器 → 一路下一步 → 安装。装完开始菜单搜 DNS 打开"DNS 管理器"(或 Win+R → dnsmgmt.msc)。

💻 PowerShell 一行版:Install-WindowsFeature DNS -IncludeManagementTools

看到左侧树里本机服务器名 WS2022-LAB01 就算装好了。右键服务器名有个"配置 DNS 服务器"向导,可以直接点掉——我们手动配,学得更透。

二、正向查找区域:名字 → IP(图形界面)

正向区域解决"域名找 IP"。我们建一个实验域 lab.local:

🖱️ 图形界面做法:

  1. DNS 管理器 → 展开服务器 → 右键正向查找区域 → 新建区域,进入向导。
  2. 区域类型选主要区域 → 下一步。
  3. 区域名称填 lab.local → 下一步。
  4. 区域文件:默认 lab.local.dns → 下一步。
  5. 动态更新:选不允许动态更新(先手动玩;第 5 节再开)→ 下一步 → 完成。

🖱️ 新建 A 记录:右键 lab.local → 新建主机(A 或 AAAA):

  • 名称填 dc01,IP 地址填 192.168.100.11 → 添加主机。
  • 不关窗口,继续加 fs01 → 192.168.100.10,www → 192.168.100.10 → 完成后关闭。

🖱️ 新建 CNAME 别名:右键 lab.local → 新建别名(CNAME) → 别名 files,目标主机填 fs01.lab.local.(注意结尾的点)→ 确定。

💻 PowerShell 批量版:

1
2
3
Add-DnsServerPrimaryZone -Name "lab.local" -ZoneFile "lab.local.dns"
Add-DnsServerResourceRecordA -Name "dc01" -ZoneName "lab.local" -IPv4Address "192.168.100.11"
Add-DnsServerResourceRecordCName -Name "files" -ZoneName "lab.local" -HostNameAlias "fs01.lab.local."

记录类型速查(记住前 4 个):

类型作用示例
A域名 → IPv4dc01.lab.local → 192.168.100.11
AAAA域名 → IPv6同上,v6 地址
CNAME别名 → 另一个域名files → fs01
PTRIP → 域名(反向)配合反向区域
MX邮件交换搭邮件服务器才用
SRV服务定位AD 的命根子,第 6 篇见
NS / SOA区域授权信息自动生成

🖱️ 验证:DNS 管理器里右键服务器名 → 启动 nslookup?不,更直接:Win+R → cmd → nslookup dc01.lab.local 127.0.0.1,看到返回 192.168.100.11 就对了。

💡 为什么用 lab.local?.local 是 mDNS 保留后缀,实验环境用它不会和公网冲突。微软现在推荐用你真实域名的子域(如 lab.bosh.zz.ac),但实验环境 lab.local 最省事。

三、反向查找区域:IP → 名字(图形界面)

有些服务(邮件、SSH、排错)需要反查。

🖱️ 图形界面做法:

  1. 右键反向查找区域 → 新建区域 → 主要区域 → 下一步。
  2. 反向查找区域选 IPv4 → 网络 ID 填 192.168.100(自动生成 100.168.192.in-addr.arpa)→ 下一步。
  3. 区域文件默认 → 动态更新"不允许"→ 完成。
  4. 右键新建的 100.168.192.in-addr.arpa → 新建指针(PTR) → 主机 IP 填 11,浏览选 dc01.lab.local → 确定。

💻 PowerShell 版:

1
2
Add-DnsServerPrimaryZone -NetworkId "192.168.100.0/24" -ZoneFile "100.168.192.in-addr.arpa.dns"
Add-DnsServerResourceRecordPtr -Name "11" -ZoneName "100.168.192.in-addr.arpa" -PtrDomainName "dc01.lab.local."

🖱️ 验证:nslookup 192.168.100.11 127.0.0.1 应该返回 dc01.lab.local。

四、转发器 vs 条件转发器 vs 根提示(图形界面)

自建 DNS 只认识 lab.local,www.baidu.com 找谁问?三种"上网"方式:

方式逻辑适用
转发器不认识的全扔给指定 DNS(如 8.8.8.8)✅ 实验/小企业,最常用
条件转发器特定域扔给特定 DNS(如 partner.local → 对方 DNS)多分支/合作方互联
根提示自己从根服务器迭代查下去默认就有,慢但独立

DNS 查询流程

🖱️ 图形界面做法:

  1. 右键服务器名 → 属性 → 转发器选项卡 → 编辑 → 输入 223.5.5.5(阿里)→ 回车 → 再加 8.8.8.8 → 确定 → 确定。
  2. 条件转发器:右键条件转发器 → 新建条件转发器 → DNS 域填 partner.local,主服务器 IP 填 192.168.200.53 → 确定。

💻 PowerShell 版:

1
2
Set-DnsServerForwarder -IPAddress "223.5.5.5","8.8.8.8"
Add-DnsServerConditionalForwarderZone -Name "partner.local" -MasterServers "192.168.200.53"

🖱️ 验证外网解析:先把本机网卡 DNS 指向自己(ncpa.cpl → 以太网 → 属性 → IPv4 → 首选 DNS 填 127.0.0.1,第 2 篇配过的话改一下),然后 nslookup www.baidu.com,能返回地址就行。

⚠️ 坑:配了转发器还解析不了外网,先确认 53 端口通:Test-NetConnection 223.5.5.5 -Port 53。NAT 环境一般没问题,Host-Only 隔离网(第 1 篇)里本来就上不了外网,别在这上面浪费时间。

五、动态更新与老化清理:僵尸记录的终结者(图形界面)

DHCP 客户端上线会自动往 DNS 注册 A 记录,机器下线/改名后旧记录就成了僵尸。lab.local 里躺着 50 条早已不存在的记录,排错时能把人逼疯。

老化清理(Scavenging) 就是 DNS 的垃圾回收:

🖱️ 图形界面做法:

  1. 右键 lab.local → 属性 → 常规 → 动态更新选安全和非安全(实验环境;AD 集成后选"仅安全")。
  2. 同一窗口点老化 → 勾选"清理过期的资源记录":
    • 无刷新间隔:7 天(记录注册后 7 天内不允许刷新时间戳,防频繁写)
    • 刷新间隔:7 天(之后 7 天允许刷新,续命)
    • 7+7 天没人续命 → 下次清理时删除。
  3. 右键服务器名 → 属性 → 高级选项卡 → 勾选启用自动清理过期的记录,清理周期 7 天 → 确定。
  4. 想立刻看效果:右键服务器名 → 清理过期的资源记录。

时间线:注册 → [7天无刷新] → [7天可刷新] → 过期 → 清理删除。

💻 命令行版:Start-DnsServerScavenging -Force

💡 AD 集成区域(第 6 篇)的老化默认是开的,独立 DNS 默认没开。这就是为什么实验环境 DNS 越用越脏。

六、排错三板斧(图形界面+命令)

DNS 出问题按这个顺序查:

🖱️ 1. 本机 DNS 指向谁? ncpa.cpl → 以太网 → 属性 → IPv4,看首选 DNS。或命令 Get-DnsClientServerAddress。

🖱️ 2. 目标记录在不在? DNS 管理器里直接展开 lab.local 看 A 记录在不在;或 nslookup dc01.lab.local 127.0.0.1。

🖱️ 3. 缓存里是不是脏数据? 右键服务器名 → 清除缓存;客户端 ipconfig /flushdns。

再不行开调试日志:🖱️ 右键服务器名 → 属性 → 调试日志记录选项卡 → 勾"查询/响应",看看到底问了谁、谁没回。日志量巨大,开完记得关。

七、检查清单

  • DNS 角色已装,lab.local 正向区域已建(新建区域向导)
  • A/CNAME 记录能正查,反向区域能反查
  • 转发器已配(转发器选项卡),www.baidu.com 能解析
  • 老化清理已开(无刷新 7 天 + 刷新 7 天)
  • 本机网卡 DNS 已指向 127.0.0.1
  • 快照:DNS完成_AD前

八、下篇预告

第 6 篇《AD 域服务:第一台域控制器、OU 设计与批量建用户》:系列第一个大 Boss。把这台机器升成 lab.local 的域控,你会发现 DNS 里自动冒出一堆 SRV 记录——到时候就知道这篇为什么先讲 DNS 了。


🌐 —— Bosh,AD 域里 90% 的灵异事件,根因都是 DNS

热爱生活 学无止境
使用 Hugo 构建
主题 Stack 由 Jimmy 设计