构建虚拟化网络安全实验室:Active Directory 与 DNS 集成
Source: Dev.to
为什么身份服务很重要
在完成我的家庭实验室的核心网络和防火墙层后,下一步的关键工作是构建真实组织所依赖的身份基础:Active Directory。Windows Server 2022 提供了一个功能完整的域环境,集成了 DNS、集中式身份验证,并且能够在整个网络中管理设备。
对我而言,这一步尤为重要,因为虽然我凭借开发背景对 Linux 和 CLI 很熟悉,但我一直想深化对 Windows 管理和 PowerShell 的技能。学习 CompTIA A+、Network+ 和 Security+ 让我意识到企业对 Active Directory 的高度依赖,而在真实网络中自行搭建它则能把这些知识推向更深的层次。完成此部分实验室后,我已经拥有了后续安全监控、检测工程和攻击模拟项目所需的身份基础设施。
实验室架构提醒
在深入配置之前,先回顾一下此阶段的高层实验室设计。
当前环境包括
- pfSense(路由/防火墙)
- lab‑LAN 内部网络
- Windows Server 2022(域控制器 + DNS)
- Windows 11 终端
- Ubuntu Desktop 终端
- 通过 VPN 连接到 pfSense 的外部 Kali ThinkPad
网络已完成,身份层位于此受控环境之上。

第 1 部分 – 安装 Windows Server 2022
由于 Secure Boot 和 TPM 的要求,Windows Server 2022 需要稍多的工作。我最终从 virt-install 切换到 Virt‑Manager,以便更轻松地覆盖设置,但下面是我最初使用的 CLI 版本:
sudo virt-install \
--name winserver2022 \
--ram 8192 \
--vcpus 4 \
--disk path=/var/lib/libvirt/images/winserver2022.qcow2,format=qcow2,bus=virtio \
--cdrom /var/lib/libvirt/boot/WindowsServer2022.iso \
--network network=lab-lan,model=virtio \
--os-variant win2k22 \
--graphics spice \
--boot uefi
提示: 挂载 VirtIO 驱动 ISO;Windows 在安装期间需要这些驱动才能检测到存储和网络设备。
我还创建了一个 LabConfig 目录,其中包含几个布尔值,用于覆盖 TPM 和 Secure Boot。

分配静态 IP(AD 必需)
Active Directory 必须运行在满足以下条件的服务器上:
- 静态 IP
- DNS 指向自身
- 稳定的主机名
在 Windows Server 中:
| 设置 | 值 |
|---|---|
| IP 地址 | 10.0.0.25 |
| 子网掩码 | 255.255.255.0 |
| 默认网关 | 10.0.0.1 (pfSense) |
| 首选 DNS | 10.0.0.25 (本机) |
这是强制性的,因为 AD DNS 与域紧密集成。

第 2 部分 – 将服务器提升为域控制器
安装 AD DS
- 打开 Server Manager → Manage → Add Roles and Features。
- 选择 Active Directory Domain Services 并安装。
- 安装完成后,点击 Promote this server to a domain controller。
创建你的域
- 选择 Add a new forest。
- 根域:
lab.local。 - 设置 DSRM 密码。
- 接受默认设置,安装并重启。
重启后,AD DS 和 DNS 会自动上线。
验证 AD 是否正常工作
打开 PowerShell 并运行:
Get-ADDomain
Get-ADForest
如果两个命令都返回关于 lab.local 的信息,则 AD 正常。


第 3 部分 – 配置 DNS 以实现内部和外部名称解析
为什么 DNS 转发很重要
AD DNS 处理内部查询(例如 lab.local),但也会收到外部查询。如果没有转发器,这些外部查询会失败。
在 pfSense 中修复 DNS 转发
- Services → DNS Resolver。
- 启用 Forwarding Mode。
- 设置上游 DNS 服务器(例如
8.8.8.8)。 - 保存并应用。
在 Windows Server 中修复 DNS 转发
- 打开 DNS Manager。
- 右键单击服务器 → Properties → Forwarders。
- 添加
10.0.0.1(pfSense LAN IP)。
这样,未知查询会先转发到 pfSense,再由 pfSense 转发到上游 DNS 服务器。

测试
nslookup lab.local
nslookup google.com
lab.local通过 AD DNS 在内部解析。google.com通过 pfSense 转发器在外部解析。
两项测试都应成功。
第 4 部分 – 将客户端加入域
A. 将 Windows 11 加入域
前置条件
- DNS 指向
10.0.0.25(AD 服务器)。 - 与 AD 服务器的网络连通性(
ping 10.0.0.25)。 - 系统时钟同步(Kerberos 依赖准确时间)。
加入域的步骤
- Settings → Accounts → Access work or school → Connect。
- 选择 Join this device to a local Active Directory domain。
- 输入
lab.local。 - 重启。
验证
whoami
nltest /dsgetdc:lab.local
ipconfig /all
whoami应显示域限定的用户名。nltest应返回域控制器信息。ipconfig /all应列出 DNS 服务器为10.0.0.25。