☰
基于 Docker 与 VirtualBox 的网络攻防基础环境搭建
2026/10/23 2:50:20 网站建设 项目流程

一、背景与目标

想搭建一个网络攻防实验环境,通常有两种选择:

  • Docker 容器方案:轻量、启动快、适合自动化,但网络隔离和内核共享需要额外注意。
  • VirtualBox 虚拟机方案:更接近真实环境,网络模式灵活,但资源占用大、配置稍复杂。

本文分别用这两种方式搭建攻防拓扑,验证网络隔离、流量走向和连通性。

二、实验环境

  • Ubuntu 22.04.5
  • Docker 28.4.0
  • VirtualBox
  • 攻击机:Kali Rolling 2025.2
  • 网关:Debian Buster
  • 靶机:Kali / Windows XP SP3

实验一:基于 Docker 的网络攻防环境

1. 安装 Docker

使用 Docker 官方安装方式:

# 安装依赖sudoaptupdatesudoaptinstall-yca-certificatescurlgnupg# 添加 Docker 官方 GPG 密钥sudoinstall-m0755-d/etc/apt/keyringscurl-fsSLhttps://download.docker.com/linux/ubuntu/gpg|\sudogpg--dearmor-o/etc/apt/keyrings/docker.gpg# 添加 Docker 源echo"deb [arch=$(dpkg --print-architecture)signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu$(./etc/os-release&&echo"$VERSION_CODENAME")stable"|\sudotee/etc/apt/sources.list.d/docker.list>/dev/null# 安装 Dockersudoaptupdatesudoaptinstall-ydocker-ce docker-ce-cli containerd.io docker-compose-plugin

验证:

docker--versiondockercompose version

2. 配置镜像加速器

在 Docker Desktop 的 Settings → Docker Engine 中,修改 JSON 配置:

{"registry-mirrors":["https://docker.1ms.run","https://docker.apiba.cn"]}

点击 Apply & Restart,等待 Docker 重启完成。

3. 启动 CyberRangeSlim 服务

进入项目目录,使用docker compose启动:

dockercompose up-d

查看容器状态:

dockerps

4. 使用 docker-network-graph 可视化网络拓扑

安装依赖:

# 初始化子模块gitsubmodule update--init--recursive# 安装依赖环境cddocker-network-graph pyenvlocal3.9.14 pipenvinstall# 安装图形处理工具sudoaptupdatesudoaptinstall-ygraphviz

生成拓扑图:

pipenv run python docker-net-graph.py|fdp-Tpng-oout.png

生成的拓扑图如下:

从图中可以看到:

  • cyberrangeslim_victim-1-1:172.16.238.101
  • cyberrangeslim_victim-2-1:172.16.238.102
  • cyberrangeslim_gw-1:172.16.238.3 / 10.0.10.3
  • cyberrangeslim_attacker-1:10.0.10.2
  • 内部网络:172.16.238.0/24
  • 外部网络:10.0.10.0/24

5. 网络连通性测试

5.1 靶机可以直接访问攻击者主机

进入靶机容器:

dockerexec-it<victim_container_id>/bin/sh

测试访问攻击者:

ping10.0.10.2

5.2 攻击者主机无法直接访问靶机

在攻击者容器中测试:

ping172.16.238.101ping172.16.238.102

结果均为 100% packet loss,说明攻击者无法直接访问内网靶机。

5.3 网关可以直接访问攻击者主机和靶机

进入网关容器:

dockerexec-it<gw_container_id>/bin/sh

测试:

ping10.0.10.2ping172.16.238.101ping172.16.238.102

均能正常通信。

5.4 靶机所有上下行流量必须经过网关

在靶机上抓包:

tcpdump-iany-w1.pcap-n

将抓包文件导出到宿主机后,用 Wireshark 分析。

可以看到,靶机访问外网或访问攻击者时,流量都先经过网关。

5.5 所有节点均可以访问互联网

分别进入网关、攻击者、victim-1、victim-2,执行:

curl-Ihttps://www.baidu.com

说明网关的 NAT 转发配置生效,内网节点可以访问外网。

6. Docker 方案小结

优点:

  • 启动快,资源占用低;
  • 网络拓扑可用docker-network-graph自动生成;
  • 适合自动化测试和批量部署。

注意点:

  • 容器共享内核,隔离性不如虚拟机;
  • 需要正确配置iptablesNAT 和 DNS;
  • 抓包时注意选择正确的网卡。

实验二:基于 VirtualBox 的网络攻防环境

1. 实验目的

  • 掌握 VirtualBox 虚拟机的安装与使用;
  • 掌握 VirtualBox 的虚拟网络类型与按需配置;
  • 掌握虚拟硬盘多重加载。

2. 网络配置表

虚拟机网卡网络模式IP 地址
Kali Attacker网卡1NAT10.0.2.15
Debian GW网卡1NAT10.0.2.4
Debian GW网卡2Host-Only192.168.56.101
Debian GW网卡3内部网络172.16.111.1
Debian GW网卡4内部网络172.16.222.1
Kali Victim1网卡1内部网络172.16.111.122
Kali Victim2网卡1内部网络172.16.222.146
XP-Victim1网卡1内部网络172.16.111.106
XP-Victim2网卡1内部网络172.16.222.112

网络拓扑图:

3. 虚拟硬盘多重加载

将虚拟硬盘配置成多重加载,效果如下:

4. 连通性验证

4.1 靶机可以直接访问攻击者主机

在靶机中测试:

ping10.0.2.15

4.2 攻击者主机无法直接访问靶机

在 Kali Attacker 中测试:

ping172.16.111.106ping172.16.222.112

均超时,说明攻击者无法直接访问内网靶机。

4.3 网关可以直接访问攻击者主机和靶机

在 Debian GW 中测试:

ping10.0.2.15ping172.16.111.106ping172.16.222.112

均能正常通信。

4.4 靶机流量必须经过网关

在网关上抓包:

tcpdump-iany-w2025-09-15_2.pcap-n

靶机访问攻击者:

ping10.0.2.15

靶机访问外网:

pingwww.baidu.com

用 Wireshark 分析抓包文件:

可以看到,流量先到网关,再由网关转发。

4.5 所有节点均可以访问互联网

在网关、攻击者、各靶机中分别访问百度:

5. VirtualBox 方案小结

  • NAT 模式:虚拟机可以访问外网,但外部无法直接访问虚拟机,除非配置端口转发。
  • Host-Only 模式:主机与虚拟机之间可以通信,适合管理网络。
  • 内部网络模式:虚拟机之间互相通信,与外部隔离,适合模拟内网靶场。

三、两种方案对比

维度Docker 方案VirtualBox 方案
资源占用低高
启动速度秒级分钟级
隔离性共享内核,较弱完全虚拟化,较强
网络配置需要手动配置 NAT、DNS、iptables图形界面,模式清晰
自动化适合脚本、CI/CD适合手动实验
适用场景快速搭建、批量测试真实环境模拟、教学演示

四、总结

本文用 Docker 和 VirtualBox 分别搭建了网络攻防基础环境,验证了:

  • 靶机可以访问攻击者,攻击者无法直接访问靶机;
  • 网关可以同时访问攻击者和靶机;
  • 靶机流量必须经过网关;
  • 所有节点均可访问互联网。

两种方案各有优劣:Docker 轻量快速,适合自动化;VirtualBox 更接近真实环境,适合教学和复杂拓扑。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询