AIGC标识 从零搭建网络安全实验环境day01

从零搭建网络安全实验环境day01

这里是排骨,这是本博客的第一篇文章,也是我人生的第一篇博客。写它的原因很实际:学安全,经过大学期间两年的迷茫与痛苦,我确立了网络安全的方向,巴拉巴拉……以下省略五百字自我介绍。本系列文章将全程跟进记录我的学习过程,也希望帮助到其他小白。

特别声明:本文所有实验操作均在本地隔离虚拟靶场环境完成,文中技术仅供网络安全学习研究使用。严禁在未获得书面授权的情况下对任何非自有系统实施扫描、渗透、测试等行为,违规操作带来的一切法律责任由行为人自行承担。

这篇记录我从零搭一套完全隔离、出现问题快照回滚的网络安全实验环境。

新手最容易犯的错,是拿真实站点当练习场——这既是法律问题,也练不出真本事,所以第一步,先给自己搭建好一个能放开了测试的靶场。

读完这篇你能得到:一台攻击机 + 一组靶机,双向隔离、可随时回滚的本地实验环境,零基础可复现。

一、目标架构

先想清楚要什么需,我的需求是:

角色 系统 网络 作用
宿主机 Windows 11 真实网络 日常使用
攻击机 Kali Linux NAT + Host-Only 双网卡 发起测试
靶机 DVWA / Juice Shop / bWAPP Docker,与 Kali 同机 被打

本文用的是 Docker 靶场方案:靶场跑在 Kali 内部,不额外占用虚拟机。
好处是一条命令起一个靶场、几乎不吃资源;代价是靶场不算独立主机
需要「攻击机 ↔ 靶机」两台独立机器的真实网络模型时,可以再补独立靶机(见 7.2)。

关键设计是双网卡

  • NAT 网卡:只给 Kali 用,负责上外网更新系统、装工具、拉 Docker 镜像。
  • Host-Only 网卡:Kali 和后续的独立靶机接在这里,完全不出宿主机

这样既保证了 Kali 能联网更新,又保证了实验流量永远关在本地虚拟网络里,不会碰到任何真实设备。

这一段是整个环境搭建里最重要的设计决策,不是可选项。

mermaid-diagram-2026-09-18-215330

二、环境版本说明

环境如下:

组成 版本 说明
宿主机系统 Windows 11 家庭中文版 25H2(内部版本 26200.9445)
虚拟化平台 VMware Workstation Pro 17.6.3(build-24583834) 个人使用免费
攻击机 Kali Linux 2026.2 官方 VMware 镜像
靶机 DVWA / OWASP Juice Shop / bWAPP Docker 部署,与 Kali 同机

不确定自己机器的版本?这样查:

  • WindowsWin + R 输入 winver
  • Kali:终端执行 cat /etc/os-release
  • VMware:菜单栏「帮助 → 关于 VMware Workstation」

版本不一致会怎样:最典型的是网卡名。老教程里 Kali 的网卡叫 eth0,新版本改成了 ens33 之类的可预测命名,你照着敲 ifconfig eth0 会直接报错。遇到这种先 ip a 看实际名字。(本环境搭建于 2026 年 9 月,部分内容可能随时间失效,遇到对不上的先查官方文档)

三、前期准备

动手前先确认这几项,能省掉后面一大半的报错。

硬件

  • 内存:16 GB 起步(Kali 分配 4 GB,靶机各 1–2 GB)。8 GB 的机器也能跑,但建议一次只开一台靶机
  • 磁盘:预留 150 GB 以上——虚拟磁盘会随使用持续增长,别按初始大小估
  • CPU:支持硬件虚拟化(Intel VT-x / AMD-V),并且已在 BIOS 中开启

软件与权限

  • Windows 账号有管理员权限(配置虚拟网络、安装 VMware 驱动都需要)
  • 网络正常,能访问外网(下载镜像、更新系统)

避坑前置

  • 装过旧版 VMware 的,先卸载干净再装新版,否则虚拟网卡驱动容易冲突
  • 如果开了 Hyper-V / WSL2 / 内核隔离(内存完整性),VMware 会退化到兼容模式运行,虚拟机性能明显下降。追求性能可以先关掉;想共存也能用,只是慢

四、虚拟化平台

我使用的是 VMware Workstation Pro

注意:VMware Workstation Pro 从 2024 年起对个人使用免费了,去 Broadcom 官网注册账号就能下载,不用再找序列号,去费劲的”破解“。

五、配置 Host-Only 网络

  1. VMware 菜单:编辑 → 虚拟网络编辑器 → 更改设置(需要管理员权限)
  2. 添加一个 VMnet,类型选仅主机模式(Host-Only)
  3. 取消勾选「使用本地 DHCP 服务将 IP 地址分配给虚拟机」——我习惯手动分配 IP,避免靶机重启后 IP 变来变去找不到
  4. 子网设为 10.10.10.0/24,网关留空

屏幕截图 2026-09-17 225942

要点:网段自己定,但要和你的真实内网段区分开(比如你家是 192.168.1.x,就别用同段),避免路由混淆。

六、攻击机:Kali Linux

6.1 安装

kali.org/get-kali 下载 Virtual Machine 版本(官方已经预装好 VMware 镜像,比用 ISO 手动装省事得多)。

导入后,先在虚拟机设置里加两块网卡:

  • 网络适配器 1 → NAT
  • 网络适配器 2 → 仅主机模式(Host-Only)(即 VMnet1)
    屏幕截图 2026-09-17 230158

开机默认账号密码都是 kali / kali

6.2 基础配置

# 换源并更新(第一次比较久,耐心等)
sudo apt update && sudo apt full-upgrade -y

# 常用工具,按需装
sudo apt install -y git vim curl wget nmap net-tools

6.3 固定 Host-Only 网卡 IP

先确认网卡和 NetworkManager 里的连接名:

nmcli device status

正常应该两块网卡都有对应连接:

DEVICE  TYPE      STATE      CONNECTION
eth0    ethernet  connected  Wired connection 1     ← NAT
eth1    ethernet  connected  Wired connection 2     ← Host-Only
lo      loopback  connected  lo

屏幕截图 2026-09-17 230522

假设 Host-Only 那块是 eth1、连接名是 Wired connection 2,设为静态:

sudo nmcli connection modify "Wired connection 2" \
  ipv4.method manual \
  ipv4.addresses 10.10.10.128/24 \
  ipv4.gateway "" \
  ipv4.dns "" \
  ipv4.never-default yes \
  ipv6.method disabled

sudo nmcli connection down "Wired connection 2"
sudo nmcli connection up "Wired connection 2"

验证:

ip a show eth1
ping -c 2 10.10.10.1

看到 inet 10.10.10.128/24 且能 ping 通 10.10.10.1,这块网卡就配好了。
屏幕截图 2026-09-17 230528 - 副本

⚠️ 别用 /etc/network/interfaces 网上大量老教程让你改这个文件,但 Kali 2020 以后就不生效了——网络已经交给 NetworkManager 管理,往那个文件里写会和它打架。第十节第 5 条的问题就是从这里来的。

6.4 装 Docker(靶场一键起,强烈推荐)

sudo apt install -y docker.io
sudo systemctl enable --now docker
sudo usermod -aG docker $USER

# 让 docker 组立即生效(开一个新 shell)
newgrp docker

# 验证:不再报 permission denied
docker ps

⚠️ 不加 newgrp 也不注销重登的话,docker run 会静默失败 —— 命令看起来执行了,容器其实根本没被创建。踩坑记录见第十节第 6 条。

国内必做:配 Docker 镜像加速器

Docker Hub 在国内基本连不上。不配的话 docker run 会直接报 context deadline exceeded

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json >/dev/null <<'EOF'
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.1ms.run",
    "https://dockerproxy.net",
    "https://docker.1panel.live"
  ]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker

# 验证
docker info | grep -A5 "Registry Mirrors"
docker pull hello-world

加速器地址失效很频繁,上面几个不保证长期可用,不行就搜「Docker 镜像加速器 可用」找当前的。

Docker 装好后,起靶场只需要一行命令,比装虚拟机快太多。

七、靶机

7.1 Docker 一键靶场(最快)

# DVWA - 经典入门靶场,覆盖 SQL 注入 / 文件包含 / 命令注入等
docker run -d --name dvwa -p 8080:80 vulnerables/web-dvwa

# OWASP Juice Shop - 现代 Web 靶场,前端漏洞很全
docker run -d --name juice -p 3000:3000 bkimminich/juice-shop

# bWAPP - 漏洞种类多,适合系统刷题
docker run -d --name bwapp -p 8081:80 raesene/bwapp

如果有其他需求自行更改地址。
docker ps 进行容器测试,如都是 up 则构造成功。

镜像名以官方仓库为准,不同时期可能有变化。

起完之后,Kali 浏览器访问 http://10.10.10.128:8080 就能看到 DVWA。(Docker 容器和 Kali 同机,也可以用 127.0.0.1。)

重要说明:Docker 靶场和 Kali 跑在同一台虚拟机上,属于轻量方案

好处是一条命令起一个靶场、几乎不占额外资源;代价是靶场不会作为独立主机出现在 Host-Only 网段里——你在 nmap -sn 10.10.10.0/24 里看不到它,它的地址就是 Kali 自己的 IP 10.10.10.128

想要真实的「攻击机 ↔ 靶机」网络模型,看下一节的独立虚拟机靶机。

7.2 独立虚拟机靶机

  • Metasploitable2 —— 最经典的入门靶机,漏洞多到离谱,适合练 nmap 扫描和 Metasploit。网络设置只接 Host-Only
  • VulnHub 系列 —— 从 vulnhub.com 下载,每个靶机是一个完整的渗透挑战,适合练完整渗透流程。
  • Windows Server 评估版 —— 微软官网可下 180 天评估版,用来练内网和 Windows 提权。

所有靶机的网络适配器只接 Host-Only,绝不给 NAT。

八、验证环境

验证方式取决于你用的是哪种靶机。

情况 A:Docker 靶场(靶场和 Kali 同机)

# 1. 确认容器在跑,PORTS 列能看到端口映射
docker ps

# 2. 确认端口在监听
ss -tlnp | grep 8080

# 3. 实际访问一下
curl -I http://127.0.0.1:8080

屏幕截图 2026-09-17 195232

第 3 条返回 HTTP/1.1 302 Found + Location: login.php,就说明 DVWA 已经跑起来了(302 是跳转到登录页,正常)。

⚠️ 别用 nmap -sV -sC 10.10.10.128 验证 Docker 靶场。

Docker 会往 iptables 的 nat 表插入 OUTPUT 规则,接管发往「本机地址且不在 127.0.0.0/8 段」的流量。10.10.10.128 正好命中——是本机地址,但不在环回段。

结果就是:非映射端口收不到任何响应,nmap 报「1000 个端口全部 filtered」。看着像靶场没起来,其实环境完全正常。我在这上面白等了三分钟。

⚠️ nmap -sn 10.10.10.0/24 同样扫不出 Docker 靶场,因为容器不是独立主机,端口是发布在 Kali 自己 IP 上的。

情况 B:独立靶机虚拟机

# 1. 存活主机发现,找出靶机 IP
nmap -sn 10.10.10.0/24

# 2. 对靶机做服务识别
nmap -sV -sC <靶机IP>

能看到靶机 IP 和开放端口,环境就通了。

再确认一次隔离是否生效(很重要):

用 Docker 靶场时——Host-Only 网卡上暂时没有其它设备,重点确认它没有默认路由

ip route

默认路由(default via ...应该只走 eth0(NAT),不能出现在 eth1 上。

用独立靶机时——从靶机里 ping 8.8.8.8应该不通。通了你就是把它接到 NAT 上了,回去改掉。

九、快照:这个环境的灵魂

环境搭好之后,立刻打一个干净快照,命名 初始

以后每次做实验前打一个快照,做完直接回滚。这样你能:

  • 随便改配置,改坏了 10 秒还原
  • 装可疑工具不用怕污染环境
  • 同一个靶场反复练不同的漏洞

没有快照的靶场环境,用久了就会变的一团糟,安装可能带“毒”的工具的话,快照也能快速解决。

十、出现的问题

1. 靶机 IP 老是变
DHCP 导致的。解决:关掉 VMnet 的 DHCP,手动配静态 IP,并在路由器/VMware 里固定绑定。

2. Kali 更新特别慢
默认源在国内速度一般。换国内镜像源(如清华、阿里)能快很多。

3. 内存不够,开两个虚拟机就卡死
宿主机 16G 的话,Kali 给 4G、靶机给 1–2G 比较稳。或者改用 Docker 起靶场,开销小得多。

4. 忘了拔网线
靶机接到了 NAT,一扫描扫到真实网络去了。这是最危险的错误,参考第八节的隔离验证。

5. 关掉 DHCP 后,Kali 网卡一直卡在「正在获取 IP 配置」

现象nmcli device status 显示 connecting (getting IP configuration),一直不变。

原因:VMnet1 的 DHCP 被关了,没有服务器发 IP,NetworkManager 会一直等直到超时。

解决这不是故障。 手动配静态 IP 即可,命令见 6.3 节。

6. Docker 装好了,但容器起不来

这条会产生蝴蝶效应,导致两个问题会连着出现:

① 所有 docker 命令报 permission denied

用户不在 docker 组。解决:sudo usermod -aG docker $USER 然后 newgrp docker(立即生效,不用注销)。

docker runcontext deadline exceeded

Docker Hub 在国内连不上。解决:配镜像加速器,完整步骤见 6.4 节。

真正有问题的地方:①不会报错到你看得见的地方——命令看着像「执行了」,其实容器根本没被创建。
等你 curl 127.0.0.1:8080 看到「连接被拒绝」时,很自然会以为是网络问题,其实病根在权限

十一、关于使用纪律

环境隔离是技术手段,还有一条是行为纪律,写在第一篇里提醒自己:

动手测试前,先确认三件事——谁授权我?范围是什么?方法边界在哪?

  • 自己的实验环境 → 随便测
  • 厂商 SRC / 众测项目 → 按公示的范围和时间窗测
  • 其他任何目标 → 不动手

后续排骨会更新一篇名词汇总,用来记录以及解释每篇文章部分名词的含义与作用,来进行科普记录,小伙伴们可以期待一下。

参考


以上就是这套网络安全实验环境的完整搭建过程,因为排骨本身就是新手,对于写文章更是没有经验,所以全程既有参考现有前辈们的教程,也有ai的辅助,甚至这篇文章的框架以及内容也是ai编写润色的(比如7.2节)。如果有格式问题或是技术问题也请大家包容谅解一下,欢迎在评论区批评指正。
71540c25a14ca90605c56f9faad8f6fb

posted @ 2026-09-18 22:12  半扇排骨  阅读(9)  评论(0)    收藏  举报