使用 VyOS 与 OPNsense 搭建 VMware 简化企业内网攻防实验环境
前言 / 项目背景
本文定位为 基础环境快速搭建版,主要记录实验网络从零搭建到基础连通的过程,包括网络规划、虚拟网卡配置、路由转发、防火墙策略、靶机部署以及必要的连通性验证
本文暂不包含具体的靶场攻击、漏洞利用、横向移动等攻防实战内容。 当前阶段主要完成实验基础设施建设,为后续 Web 安全、内网渗透以及网络攻防实验提供稳定的实验环境
关于整个网络为什么这样设计、数据包实际如何流转、静态路由与防火墙规则为什么这样配置,以及搭建过程中遇到的问题和排错思路,会整理在更加详细的版本中
本文后续如果出现拓扑调整、配置修正或新增实验内容,也会优先更新个人博客版本
详细版及后续更新:
🌐 云泽の小屋:点我跳转
📖 本文博客原版:点我查看
项目目标
本项目并不是完整复刻真实企业网络,而是通过一套规模较小、结构清晰的虚拟网络,模拟企业内网中常见的网络分区和安全边界
当前阶段的主要目标是完成实验基础环境搭建:
- 完成 Kali,VyOS,OPNsense、DMZ 靶机之间的网络规划;
- 实现不同网段之间的路由转发;
- 配置基础 OPNsense 防火墙访问控制策略;
- 在 DMZ 区域部署 Docker 靶场;
- 验证各区域之间的基础连通性;
- 后续继续扩展 VPN 远程接入功能
在基础环境稳定后,再以此为基础继续开展 Web 漏洞利用、DMZ 攻防、内网访问控制测试以及其他攻防实验
本篇仅记录基础环境搭建部分,具体攻击过程将在后续内容中单独整理
Kali
↓
VyOS
↓
OPNsense
↓
DMZ Alpine
↓
Docker 靶场
其中 VyOS 作为整个内网实验网络的统一互联网出口
以下搭建的网络拓扑如下(不包含VPN)

下图为纯文本形式,内容完全同上
Internet
│
│
VMware VMnet8 / NAT
192.168.153.0/24
│
VyOS eth0
192.168.153.120/24
│
┌─────────────┴─────────────┐
│ │
172.16.35.1 172.26.35.1
VyOS eth2 VyOS eth1
│ │
│ │
Kali eth0 OPNsense LAN
172.16.35.11/24 172.26.35.11/24
│
OPNsense DMZ
10.210.10.1
│
│
Alpine eth0
10.210.10.11/24
│
Docker
ZhaoSec
网络拓扑与地址规划
VMware 网络划分表
| 机器 | 网卡数量 | 区域 | IP地址网段划分 |
|---|---|---|---|
| Kali | 1 | Kali_VyOS | 172.16.35.0 |
| OPNsense | 2 | WAF_DMZ, VyOS_WAF |
10.210.10.0, 172.26.35.0 |
| VyOS | 3 |
Kali_VyOS, VyOS_WAF, NAT8 |
172.16.35.0, 172.26.35.0, 192.168.153.0 |
设备对应IP地址表
| 设备 | 接口 | IP 地址 | 网络 |
|---|---|---|---|
| VyOS | eth0 | 192.168.153.120/24 | VMnet8 |
| VyOS | eth1 | 172.26.35.1/24 | VyOS_WAF |
| VyOS | eth2 | 172.16.35.1/24 | Kali_VyOS |
| Kali | eth0 | 172.16.35.11/24 | Kali_VyOS |
| OPNsense | LAN | 172.26.35.11/24 | VyOS_WAF |
| OPNsense | OPT/DMZ | 10.210.10.1/24 | WAF_DMZ |
| Alpine | eth0 | 10.210.10.11/24 | WAF_DMZ |
VMware LAN 区段配置
打开网卡编辑页面
打开任意虚拟机的"编辑虚拟机"页面
添加3个LAN区段
像下图一样,点击一个网卡,然后点击下方的"LAN区段"

在弹出的选项卡中,自己添加3个区段,并重命名为上图所示的样子
*此操作是全局配置,后续的LAN区段的选择都会根据这来进行配置,所以这一步的LAN区段配置不可跳过
之后再选择"确定"选项即可
VyOS 配置
网卡配置
在启动 VyOS 虚拟机之前,进入 VMware:编辑虚拟机设置
配置三张网络适配器:
| VMware 网卡 | 网络类型 | VyOS 接口 | IP 地址 |
|---|---|---|---|
| 网络适配器 1 | NAT(VMnet8) | eth0 | 192.168.153.120/24 |
| 网络适配器 2 | LAN 区段:VyOS_WAF | eth1 | 172.26.35.1/24 |
| 网络适配器 3 | LAN 区段:Kali_VyOS | eth2 | 172.16.35.1/24 |
启动 VyOS 后,首先查看网卡:
show interfaces
你会看到仅有一张eth0网卡是从VMnat8网卡那里DHCP拿到的一个IP地址(为了方便操作,可以使用这个IP地址进行SSH)
确认当前实验环境中的接口对应关系:
eth0 → VMnet8
eth1 → VyOS_WAF
eth2 → Kali_VyOS
*注:网卡编号可能因 VMware 中添加网卡的顺序不同而发生变化,请以 show interfaces 的实际结果为准
进入配置模式:
configure
配置三张网卡的静态 IP:
set interfaces ethernet eth1 address '172.26.35.1/24'
set interfaces ethernet eth2 address '172.16.35.1/24'
#建议先配置另外的两张网卡,eth0网卡的IP可直接使用DHCP的模式即可
#(如果和我一样想要使用静态IP,可继续配置eth0接口IP)
如接口原先已经通过 DHCP 获取地址,先删除原有 DHCP 地址配置,再重新设置静态地址,例如:
delete interfaces ethernet eth0 address dhcp
set interfaces ethernet eth0 address '192.168.153.120/24'
#这里的IP地址不是随便改的,是要根据自己的NAT8网卡来进行修改
#例如:我的NAT8网段是192.168.220.0,那我这里就可以修改成192.168.220.X/24
*注:配置eth0的接口IP地址的时候,需要直接使用VMware里面的终端来进行操作,使用SSH配置会因为IP地址修改而断连
应用并保存配置:
commit
save
退出配置模式:
exit
查看网卡配置:
show interfaces
正常情况下应看到:
eth0 192.168.153.120/24
eth1 172.26.35.1/24
eth2 172.16.35.1/24
也就是:

修改好之后,可直接使用新的固定IP来进行SSH访问
静态路由
DMZ 网段 10.210.10.0/24 位于 OPNsense 后方,因此需要在 VyOS 中添加一条静态路由:
目标网段:10.210.10.0/24
下一跳:172.26.35.11
进入配置模式:
configure
添加静态路由:
set protocols static route 10.210.10.0/24 next-hop 172.26.35.11
应用并保存配置:
commit
save
退出配置模式:
exit
查看路由表:
show ip route
正常情况下应看到类似:
S>* 10.210.10.0/24 [1/0] via 172.26.35.11, eth1
C>* 172.16.35.0/24 is directly connected, eth2
C>* 172.26.35.0/24 is directly connected, eth1
C>* 192.168.153.0/24 is directly connected, eth0
其中:
S → Static,静态路由
C → Connected,直连路由
L → Local,VyOS 自己接口上的地址
待后续 OPNsense 和 DMZ 主机配置完成后,再测试:
#OPNsense
ping 172.26.35.11
#DMZ靶场
ping 10.210.10.11
默认路由
VyOS 的 eth0 接口连接 VMware 的 VMnet8 NAT 网络
当前实验环境中:
VyOS eth0:192.168.153.120/24
VMware NAT Gateway:192.168.153.2
为了使 VyOS 能够访问互联网,需要添加一条默认路由,将无法匹配其他路由的流量发送至 VMware NAT 网关
进入配置模式:
configure
添加默认路由:
set protocols static route 0.0.0.0/0 next-hop 192.168.153.2
#这里的192.168.153.2不能直接copy我的,需要根据你自己的NAT8网卡来
应用并保存配置:
commit
save
退出配置模式:
exit
查看路由表:
show ip route
正常情况下应看到类似:
S>* 0.0.0.0/0 [1/0] via 192.168.153.2, eth0
其中0.0.0.0/0,表示默认路由
此时可以测试 VyOS 自身是否能够访问互联网:
ping 223.5.5.5
#这里Ping域名通不了是正常的,因为DNS还没有配置
如果能够正常收到回复,则说明默认路由配置成功
NAT 配置
为了使内部网络能够通过 VyOS 的 eth0 接口访问互联网,需要配置 Source NAT(源网络地址转换)
当前需要进行 NAT 的网段为:
172.16.35.0/24
172.26.35.0/24
10.210.10.0/24
出口接口为:
eth0
进入配置模式:
configure
为 Kali 网段添加 NAT 规则:
set nat source rule 100 outbound-interface name 'eth0'
set nat source rule 100 source address '172.16.35.0/24'
set nat source rule 100 translation address 'masquerade'
为 VyOS 与 OPNsense 之间的网段添加 NAT 规则:
set nat source rule 110 outbound-interface name 'eth0'
set nat source rule 110 source address '172.26.35.0/24'
set nat source rule 110 translation address 'masquerade'
为 DMZ 网段添加 NAT 规则:
set nat source rule 120 outbound-interface name 'eth0'
set nat source rule 120 source address '10.210.10.0/24'
set nat source rule 120 translation address 'masquerade'
应用并保存配置:
commit
save
退出配置模式:
exit
查看 Source NAT 规则:
show nat source rules
正常情况下应看到三条 NAT 规则,分别对应:
100 → 172.16.35.0/24
110 → 172.26.35.0/24
120 → 10.210.10.0/24

并且出口均为:eth0
转换方式均为:masquerade
DNS 配置
为了使 VyOS 能够正常进行域名解析,需要配置 DNS 服务器
*注:这里配置的是 VyOS 自己使用的 DNS,不是给下游设备提供 DNS 服务(下游的机器我们给他单独配置DNS)
进入配置模式:
configure
配置 DNS 服务器:
set system name-server '223.5.5.5'
set system name-server '223.6.6.6'
应用并保存配置:
commit
save
退出配置模式:
exit
查看当前系统配置:
show configuration commands | match name-server
正常情况下应看到:
set system name-server '223.6.6.6'
set system name-server '223.5.5.5'
随后测试域名解析:
ping www.baidu.com
如果域名能够成功解析为 IP 地址,则说明 DNS 配置已经生效
验证
*注:这里的验证部分会涉及到其他网段的机器,所以建议等全部配置好之后,统一进行验证
Kali 配置
添加 LAN 网卡
关闭 Kali 虚拟机,VMware → 编辑虚拟机设置 → 添加 → 网络适配器
将网络连接方式设置为LAN,并选择Kali_VyOS

完成后启动 Kali
配置静态 IP
执行:
ip addr
找到连接 Kali_VyOS 的网卡
*注意:网卡名称可能因虚拟机原有网卡数量而不同,请以ip addr实际显示结果为准
本实验中:
eth0 → 原 NAT 网卡(已禁用)
eth1 → Kali_VyOS
#如果你没有添加过NAT网卡,那么直接使用默认的eth0即可
由于我这里先前已经添加过NAT网卡,我的网卡顺序发生了改变,因此我的后续配置使用eth1,如果你的Kali 从一开始就只有一张 LAN 网卡,那么它大概率就会成为eth0 = Kali_VyOS
当前 LAN 地址规划:
IP:172.16.35.11/24
Gateway:172.16.35.1
配置 NetworkManager
首先查看 NetworkManager 连接名称:
nmcli connection show
查看自己的Wired connection对应情况,我这里是Wired connection 2 → eth1

因此后续配置 Wired connection 2,你需要配置正确你的对应顺序
*你的首次配置如果和我有出入,那么请你对照你自己的Wired connection编号以及eth编号来配置(以下命令建议先粘贴到文本文档中修改,将Wired connection编号修改正确之后,再粘贴至Kali)
配置静态 IP命令如下:
sudo nmcli connection modify "Wired connection 2" \
ipv4.method manual \
ipv4.addresses 172.16.35.11/24 \
ipv4.gateway 172.16.35.1
#这里需要改动的就是这个Wired connection后面的数字,其余不需要改动
配置静态路由命令如下:
sudo nmcli connection modify "Wired connection 2" \
ipv4.routes "172.26.35.0/24 172.16.35.1,10.210.10.0/24 172.16.35.1"
#这里的Wired connection也需要改动
配置 DNS:
sudo nmcli connection modify "Wired connection 2" \
ipv4.dns "223.5.5.5 1.1.1.1"
重新启用连接:
sudo nmcli connection up "Wired connection 2"
#这里需要对应上你的Wired connection编号,不可直接粘贴运行
检查:
ip addr
ip route
正常情况下应存在:
172.16.35.0/24 dev eth0
default via 172.16.35.1 dev eth0
验证
*注:这里的验证部分会涉及到其他网段的机器,所以建议等全部配置好之后,统一进行验证
OPNsense 配置
OPNsense 的新建虚拟机、下载镜像、正式安装系统(含分区,设置 root 密码等)步骤与《网络攻防技术学习笔记》"安装 OPNsense"章节完全一致,请参考该笔记完成系统安装:点我前往
也就是说,最终 VMware 里只有:
Network Adapter
→ VyOS_WAF
Network Adapter 2
→ WAF_DMZ
唯一区别:本环境不使用 NAT 网卡,OPNsense 最终只保留两张网卡,分别连接 VyOS_WAF 与 WAF_DMZ 两个 LAN 区段
接口配置
先说明我们的最终接口规划:
VyOS
172.26.35.1
│
│ VyOS_WAF
│
▼
OPNsense
WAN:172.26.35.11/24
LAN:10.210.10.1/24
│
│ WAF_DMZ
│
▼
DMZ Alpine
10.210.10.11/24
确认两张网卡对应关系
安装完成并重新启动 OPNsense 后,使用 root 用户登录系统
进入:
1) Assign interfaces
OPNsense 会列出当前识别到的物理网卡,例如:
em0
em1
*注意:这里的接口名称不一定与本文完全相同,也可能显示为其他名称,请以自己实际环境为准
此时需要确认:
哪一张网卡 → VyOS_WAF
哪一张网卡 → WAF_DMZ
这里可以继续沿用完整版笔记中那个方法:通过 MAC 地址对应 VMware 网卡和 OPNsense 接口
在 VMware 中:
虚拟机设置
→ 网络适配器
→ 高级
记录对应网卡的 MAC 地址
然后与 OPNsense 控制台显示的 MAC 地址进行对照
假设最终确认:
em0 → VyOS_WAF
em1 → WAF_DMZ
后续就按照这个关系配置
*注:如果你的实际结果不同,请使用自己实际识别到的接口名称,不要直接照搬 em0,em1
分配 WAN / LAN 接口
进入:
1) Assign interfaces
如果询问是否配置 LAGG:
Do you want to configure LAGGs now? [y/N]
输入:
n
如果询问 VLAN:
Do you want to configure VLANs now? [y/N]
同样输入:
n
然后按照刚才确认的接口对应关系配置
假设:
em0 → VyOS_WAF
em1 → WAF_DMZ
则设置:
WAN interface:
em0
然后:
LAN interface:
em1
如果继续询问:
Optional interface 1:
直接按:
Enter
留空即可
最终应显示类似:
WAN → em0
LAN → em1
确认无误后:
Do you want to proceed? [y/N]
输入:
y
配置 WAN 静态 IP
回到 OPNsense 主菜单,选择:
2) Set interface IP address
选择:
WAN
如果询问:
Configure IPv4 address WAN interface via DHCP? [y/N]
输入:
n
IPv4 地址填写:
172.26.35.11
子网前缀:
24
到这里需要注意
如果它继续询问:
For a WAN, enter the new WAN IPv4 upstream gateway address.
这里填写:
172.26.35.1
也就是 VyOS 在 VyOS_WAF 网段中的地址
这个地方我建议现在直接填,而不是留空
如果遇到需要填写DNS服务器的地方,则直接填写阿里的DNS:223.5.5.5

因此 WAN 最终为:
WAN
IP:
172.26.35.11/24
Upstream Gateway:
172.26.35.1
IPv6 当前实验不使用,可以保持不配置
配置 LAN 静态 IP
再次进入:
2) Set interface IP address
选择:
LAN
关闭 DHCP 获取:
Configure IPv4 address LAN interface via DHCP? [y/N]
n
设置地址:
10.210.10.1
前缀:
24
这里如果询问:
For a LAN, press <ENTER> for none:
直接:
Enter
不要配置 Gateway
因为:
10.210.10.1
本身就是后续 DMZ Alpine 所使用的网关
最终:
LAN
IP = 10.210.10.1/24
Gateway = None
如果询问 DHCP Server:
Do you want to enable the DHCP server on LAN?
选择:
n
因为后面的 Alpine 我们会手动配置:
IP = 10.210.10.11/24
Gateway = 10.210.10.1
IP 配置对应表
| 接口角色 | VMware 网络 | OPNsense IP | 上游网关 |
|---|---|---|---|
| WAN | VyOS_WAF | 172.26.35.11/24 | 172.26.35.1 |
| LAN | WAF_DMZ | 10.210.10.1/24 | 无 |
至此,OPNsense 两张基础接口配置完成
此时暂时不进行完整连通性验证,后续还需要继续配置 Gateway、静态路由及防火墙规则
启用 WebGUI
由于当前尚未配置允许 Kali 从 WAN 侧访问 OPNsense WebGUI 的防火墙规则,因此首次配置时暂时关闭 pf 防火墙,以便进入 WebGUI 完成后续配置
然后:
8) Shell
执行:
pfctl -d
Kali 浏览器访问:
172.26.35.11
即可打开OPNsense Web页面(如果中途Web页面卡死,可再次进入终端,输入"pfctl -d")
关闭 WAN 私网阻止
进入:
接口
→ WAN
找到:
取消勾选:
阻止私有网络(Block private networks)
保留:
拦截 bogon 网络(Block bogon networks)
原因:
本实验中的 WAN 并不直接连接公网,
而是连接 VyOS_WAF 私有网段 172.26.35.0/24
Bogon 网络过滤主要用于拦截无效,保留或尚未分配的地址,本实验不需要使用这些地址,因此可保持开启
如果保持启用,可能会影响:
VyOS → OPNsense
Kali → OPNsense
Kali → DMZ
这类经过 WAN 进入 OPNsense 的私网流量
*本实验中的 WAN 表示 OPNsense 的“上游接口”,并不代表该接口一定连接公网
静态路由
进入:
系统
→ 路由
→ 配置
点击右上角的:
+
添加新的静态路由
填写:
网络地址:
172.16.35.0/24
网关:
选择 IP 为 172.26.35.1 的 WAN Gateway
描述:
Route to Kali network via VyOS
#或者用中文:通过 VyOS 连接到 Kali 网络
由于前面配置 WAN 时已经创建了指向:
172.26.35.1
因此这里只需要选择该 Gateway 即可
*注:Gateway 名称可能由 OPNsense 自动生成,例如 WAN_GW、WAN_GW_2 等。不要根据名称判断,应确认其 Gateway 地址为 172.26.35.1,并且接口为 WAN
完成后点击:
保存
然后:
应用更改
防火墙规则
放行 Kali 访问 OPNsense
先保持:
pfctl -d
接着去:
防火墙
→ Rules[new]
→ 添加
先创建第一条规则,专门允许 Kali 访问 OPNsense WebGUI
配置建议如下:
操作:
通过
接口:
WAN
方向:
in
TCP/IP版本:
IPv4
协议:
TCP
源:
单个主机或网络
172.16.35.11/32
目标:
防火墙自身
目标端口范围:
HTTPS/443
描述可以写:
允许 Kali 访问 OPNsense WebGUI
向上翻,打开左上角的:
高级模式
向下翻,找到并勾选:
禁用回复
点击"应用"
然后回 OPNsense 控制台执行:
pfctl -e
再从 Kali 访问:
https://172.26.35.11
放行 Kali 访问 DMZ 靶场
再次添加一条规则
操作:
通过
接口:
WAN
方向:
in
TCP/IP版本:
IPv4
协议:
any
源:
单个主机或网络
172.16.35.11/32
目标:
单个主机或网络
10.210.10.0/24
目标端口范围:
any
描述:
允许 Kali 访问 DMZ 靶场
由于现在还没有配置靶场的docker服务,所以,这里先不进行验证
放行 VyOS SSH DMZ 机器
继续添加规则
操作:
通过
接口:
WAN
方向:
in
TCP/IP版本:
IPv4
协议:
TCP
源:
单个主机或网络
172.26.35.1/32
目标:
单个主机或网络
10.210.10.11/32
目标端口范围:
SSH
(也就是 22)
描述:
允许 VyOS SSH 访问 DMZ 靶机
如果你的DMZ区域配置了对应的IP地址和网关,那么即可成功SSH访问
验证
*注:这里的验证部分会涉及到其他网段的机器,所以建议等全部配置好之后,统一进行验证
DMZ 靶机配置
*注:以下我演示的命令是来自与我已经安装好的定制虚拟机,而不是普通的CentOS 7
-
线路一:点我下载(QQ分享链接,此分享文件预计2026.9.17日过期)
-
线路二:点我下载(百度网盘,永久有效,快速下载需要会员,可在PDD上使用低价购买临时账号下载)
-
以上的镜像,都是我以及默认
安装好docker&配置好国内镜像站版本 -
如果你希望自己搭建,我之前也写过如何使用 CentOS7 来进行docker部署靶场的教程:点我前往
此虚拟机登录信息如下:
-
用户名:root
-
密码:root
网卡配置
在 VMware 中打开 DMZ 区域虚拟机的:
虚拟机设置
→ 网络适配器
选择:
LAN 区段
→ WAF_DMZ
DMZ 区域的机器不需要再单独添加 VMnet8 NAT 网卡
然后启动此虚拟机
静态 IP 与网关
进入 Alpine-Docker虚拟机后,执行:
ip addr
我们真正要找的是eth0
编辑当前文件:
vi /etc/network/interfaces
把 eth0 相关配置改成这样:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 10.210.10.11/24
gateway 10.210.10.1
改完以后,可以重启网络:
rc-service networking restart
*注:如果你当前就是通过Kali SSH 连这台机器操作,执行这一步可能会断线;直接在 VMware 控制台操作最稳
然后检查:
ip addr show eth0
有看到对应的IP,即为配置正确
再检查默认路由:
ip route
应该至少有:
default via 10.210.10.1 dev eth0
10.210.10.0/24 dev eth0
配置 DNS
设置 DNS 服务器为 223.5.5.5 和 223.6.6.6
printf "nameserver 223.5.5.5\nnameserver 223.6.6.6\n" > /etc/resolv.conf
然后检查:
cat /etc/resolv.conf
应当得到:
nameserver 223.5.5.5
nameserver 1.1.1.1
验证网络链接情况
输入:
ping -c 4 10.210.10.1
如果这个通,说明:
Alpine → OPNsense LAN
这一段正常
然后测试纯公网 IP:
ping -c 4 223.5.5.5
最后再测试 DNS:
ping -c 4 www.baidu.com
域名和公网 IP 都能 ping → 基本可以确认 Alpine 已经可以正常上网
Docker 配置部分
由于我已经在之前的网络攻防技术学习笔记(详细版)里面写过相关的内容,所以我这里就不在进行概述了
这里,我简单写一下如何拉取镜像(以拉取zhaosec:v3.2靶场为例子)
拉取docker镜像
docker pull lanso4/zhaosec:v3.2
启动docker靶场镜像
输入以下命令,查看内部的端口情况:
docker inspect --format='{{json .Config.ExposedPorts}}' lanso4/zhaosec:v3.2
这里默认是80端口
运行并设置端口与别名:
docker run -d --name zhaosec -p 8080:80 lanso4/zhaosec:v3.2
设置开机自启动:
docker update --restart unless-stopped zhaosec
验证docker运行状态
查看容器是否正常存活:
docker ps
如果状态显示 Up,在对应网段的浏览器访问:
http://<DMZ靶机的IP>:8080
最终连通性测试(验证部分)
验证 DMZ 到上游网络
在 DMZ 靶机中执行:
ping -c 4 172.16.35.1
其中:
172.16.35.1
为 VyOS 连接 Kali_VyOS 网段的接口地址
如果能够正常收到回复,例如:
4 packets transmitted, 4 packets received, 0% packet loss
说明 DMZ 靶机能够经过:
DMZ
→ OPNsense
→ VyOS
正常访问上游网络,同时返回流量也能够正确返回 DMZ
验证 Kali 到 DMZ 靶机
使用 Kali 的浏览器,访问已经在 DMZ 区域部署好的靶场IP
10.210.10.11:8080

验证 Kali 访问互联网
在 Kali 上执行:
ping -c 4 www.baidu.com

验证 OPNsense 访问互联网
现在进入 OPNsense 控制台 Shell,执行:
ping -c 4 223.5.5.5
ping www.baidu.com

验证结果
完成上述测试后,如果:
DMZ 可以正常访问互联网
Kali 可以正常访问互联网
OPNsense 可以正常访问互联网
Kali 可以正常访问 DMZ 中的 ZhaoSec 靶场
各设备 DNS 解析正常
则说明当前实验网络中的:
路由
防火墙
NAT
DNS
DMZ 网络
Docker 靶场
均能够正常工作,基础网络攻防实验环境搭建完成
搭建内网跨网段 VPN
此次部分的拓扑如下(包含VPN服务)
Windows WireGuard
10.99.0.2
|
| Encrypted WireGuard
| Endpoint = 192.168.153.120:51820
|
v
VyOS eth0
192.168.153.120
|
| DNAT UDP 51820
v
OPNsense WAN
172.26.35.11:51820
|
| WireGuard decrypt
v
OPNsense wg0
10.99.0.1
|
+----------------------+
| |
v v
10.210.10.0/24 172.26.35.0/24
DMZ VyOS / OPNsense
|
v
172.16.35.0/24
Kali
WireGuard 客户端安装
官网安装连接:点我下载
启用 WireGuard 实例
进入 OPNsense Web 管理页面
请在右侧找到:
VPN
→ WireGuard
点右侧橙色 + 新建实例
按照以下表格内容进行填写
| 字段 | 填写内容 |
|---|---|
| 启用 | 勾选 |
| 名称 | WG_VPN_Win |
| 公钥/私钥 | 先不要手填 |
| 监听端口 | 51820 |
| 隧道地址 | 10.99.0.1/24 |
| CARP 依赖 | None |
| 端点 | 暂时不选 |
| 禁用路由 | 不勾选 |
| 调试日志 | 暂时不选 |
然后点击 公钥那一行左侧的小齿轮按钮
这个按钮通常会自动生成:
Private Key
Public Key
也就是 OPNsense 这端自己的密钥对
生成以后,确认这两个字段都出现内容即可
这里有两个地方先别动:
端点:Nothing selected
禁用路由:不要勾选
因为我们还没有创建 Windows 客户端对应的 Peer
然后点:
保存
最后记得把这里的"启用WireGuard"给打上勾
如果页面出现 应用,再点一次 应用
配置 VyOS 的 UDP 转发
现在进入 VyOS 配置模式:
configure
然后只添加这一组:
set nat destination rule 200 description 'WireGuard_to_OPNsense'
set nat destination rule 200 inbound-interface name 'eth0'
set nat destination rule 200 protocol 'udp'
set nat destination rule 200 destination port '51820'
set nat destination rule 200 translation address '172.26.35.11'
set nat destination rule 200 translation port '51820'
执行:
commit
save
配置 VyOS 静态路由
还是在 VyOS 进入配置模式:
configure
然后:
set protocols static route 10.99.0.0/24 next-hop 172.26.35.11
接着:
commit
save
然后退出配置模式:
exit
配置 Windows 端公钥
现在在 Windows WireGuard 里点左下角:
新建隧道
选择:
新建空隧道
正常会自动生成:
PrivateKey = ...
PublicKey = ...
名称填写:
WG_VPN_Win
在 [Interface] 下保留自动生成的 PrivateKey,再增加一行:
Address = 10.99.0.2/32
也就是类似:
[Interface]
PrivateKey = 这里保留自动生成的私钥
Address = 10.99.0.2/32
然后点 保存,但不要激活隧道
配置 OPNsense 端
下一步去 OPNsense:
VPN → WireGuard → 端点
点击右侧橙色 +,新建一个 Windows Peer。按下面填:
| 字段 | 内容 |
|---|---|
| 启用 | 勾选 |
| 名称 | WG_Windows_Client |
| 公钥 | 刚刚在Windows端生成的公钥 |
| 预共享密钥 | 留空 |
| 允许的 IP | 10.99.0.2/32 |
| 地址 | 留空 |
| 端口 | 留空 |
| 实例 | 选择 WG_VPN_Win |
| 保活间隔 | 留空 |
然后点 保存,出现 应用,再点一次 应用
新增 WireGuard 规则
下一步去:
防火墙
→ 规则
→ WAN
点右下角橙色 +,新增一条规则,填:
操作:通过
接口:WAN
方向:in
TCP/IP 版本:IPv4
协议:UDP
源:
单个主机或网络
192.168.153.1/32
源端口:
any
目标:
防火墙自身
目标端口:
Single port or range
51820
描述:
Allow Windows WireGuard
向上翻,打开左上角的:
高级模式
向下翻,找到并勾选:
禁用回复
点击"应用"
配置 Windows 端 Peer
先去 OPNsense:
VPN → WireGuard → 实例
打开 WG_VPN_Win编辑选项,找到 OPNsense WireGuard 的公钥(先暂时粘贴到记事本中)
现在回到 Windows WireGuard,编辑 WG_VPN_Win,在你现有的 [Interface] 下面加入 [Peer]
最终先写成这样:
[Interface]
PrivateKey = 你现有的Windows私钥
Address = 10.99.0.2/32
[Peer]
PublicKey = 刚刚复制的 OPNsense WireGuard 的公钥
Endpoint = 192.168.153.120:51820
AllowedIPs = 10.99.0.0/24, 172.16.35.0/24, 172.26.35.0/24, 10.210.10.0/24
现在只把这些内容替换填进去并保存
先不要点“激活”
OPNsense 接口分配
在 OPNsense 打开:
接口
→ 分配
在下面"分配新接口"这里:
设备:wg0 (WireGuard - WG_VPN_Win)
描述:WG_VPN
然后点击:
添加
添加之后,左侧“接口”菜单下面应该会多出一个:
[OPT1]
现在点击左侧:
接口
→ [OPT1]
进去以后按下面设置:
启用接口:勾选
描述:
WG_VPN
IPv4 配置类型:
None
IPv6 配置类型:
None
然后:
保存
→ 应用更改
防火墙放行 WireGuard 隧道流量
下一步去:
防火墙
→ 规则
→ WG_VPN
点击右上角橙色 +,填写:
| 项目 | 设置 |
|---|---|
| 操作 | 通过 |
| 方向 | 进 |
| 版本 | IPv4 |
| 协议 | any |
| 源 | WG_VPN |
| 源端口 | any |
| 目标 | any |
| 目标端口 | any |
| 网关 | None |
| 描述 | Allow WireGuard VPN access |
这一条规则不需要勾"禁用回复",因为这是 WireGuard 虚拟接口本身,不是之前 WAN 那种特殊回程场景
然后可以直接 保存 → 应用
激活 Windows 客户端
Windows 的 WireGuard 客户端,选中:
WG_VPN_Win
点击:
激活
测试与验证
在 Windows CMD 执行:
ping 10.99.0.1
ping 10.210.10.1

尝试在Windows本机访问 DMZ 区域靶场

尝试使用 SSH 连接 Kali
ssh kali@172.16.35.11

尝试 SSH 连接 VyOS
ssh vyos@172.26.35.1

尝试 SSH 连接 DMZ 靶机
ssh root@10.210.10.11

至此,对应已经验证
基础网络 ✓
VyOS 路由 ✓
OPNsense 路由 ✓
DMZ ✓
Docker / ZhaoSec ✓
Windows WireGuard Client ✓
OPNsense WireGuard Server ✓
VyOS UDP 51820 DNAT ✓
VPN 回程路由 ✓
WireGuard 防火墙 ✓
VPN Tunnel ✓
VPN → DMZ ✓
VPN → VyOS ✓
VPN → Kali 网段 ✓
结语
到这里,这套网络攻防实验环境的基础搭建部分就算完成了
目前主要完成的是网络规划、路由、防火墙、DMZ、Docker 靶场以及 WireGuard VPN 等基础环境,重点是先把整个实验网络完整搭起来并保证各部分能够正常通信
至于真正的靶场攻击、漏洞利用、内网攻防等实验内容,我会在后续继续慢慢补充
后续实验会优先更新在个人博客,整理完成后再同步到这里
总之,环境已经搭好了,接下来才是真正开始“玩”的部分
施工中……(ง •_•)ง

基于 VMware 搭建一套简化企业内网攻防实验环境,包含 Kali、VyOS、OPNsense、DMZ Alpine、Docker 靶场及 WireGuard VPN。本文重点记录网络规划、路由、防火墙、NAT、DNS、靶机部署与连通性验证,适合用于网络安全学习、实验环境复现和后续攻防测试
浙公网安备 33010602011771号