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:
🖱️ 图形界面做法:
- DNS 管理器 → 展开服务器 → 右键正向查找区域 → 新建区域,进入向导。
- 区域类型选主要区域 → 下一步。
- 区域名称填
lab.local→ 下一步。 - 区域文件:默认
lab.local.dns→ 下一步。 - 动态更新:选不允许动态更新(先手动玩;第 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 批量版:
| |
记录类型速查(记住前 4 个):
| 类型 | 作用 | 示例 |
|---|---|---|
| A | 域名 → IPv4 | dc01.lab.local → 192.168.100.11 |
| AAAA | 域名 → IPv6 | 同上,v6 地址 |
| CNAME | 别名 → 另一个域名 | files → fs01 |
| PTR | IP → 域名(反向) | 配合反向区域 |
| 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、排错)需要反查。
🖱️ 图形界面做法:
- 右键反向查找区域 → 新建区域 → 主要区域 → 下一步。
- 反向查找区域选 IPv4 → 网络 ID 填
192.168.100(自动生成100.168.192.in-addr.arpa)→ 下一步。 - 区域文件默认 → 动态更新"不允许"→ 完成。
- 右键新建的
100.168.192.in-addr.arpa→ 新建指针(PTR) → 主机 IP 填11,浏览选dc01.lab.local→ 确定。
💻 PowerShell 版:
| |
🖱️ 验证: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) | 多分支/合作方互联 |
| 根提示 | 自己从根服务器迭代查下去 | 默认就有,慢但独立 |
🖱️ 图形界面做法:
- 右键服务器名 → 属性 → 转发器选项卡 → 编辑 → 输入
223.5.5.5(阿里)→ 回车 → 再加8.8.8.8→ 确定 → 确定。 - 条件转发器:右键条件转发器 → 新建条件转发器 → DNS 域填
partner.local,主服务器 IP 填192.168.200.53→ 确定。
💻 PowerShell 版:
| |
🖱️ 验证外网解析:先把本机网卡 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 的垃圾回收:
🖱️ 图形界面做法:
- 右键
lab.local→ 属性 → 常规 → 动态更新选安全和非安全(实验环境;AD 集成后选"仅安全")。 - 同一窗口点老化 → 勾选"清理过期的资源记录":
- 无刷新间隔:7 天(记录注册后 7 天内不允许刷新时间戳,防频繁写)
- 刷新间隔:7 天(之后 7 天允许刷新,续命)
- 7+7 天没人续命 → 下次清理时删除。
- 右键服务器名 → 属性 → 高级选项卡 → 勾选启用自动清理过期的记录,清理周期 7 天 → 确定。
- 想立刻看效果:右键服务器名 → 清理过期的资源记录。
时间线:注册 → [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
