在 VirtualBox 中运行 OpenWrt:构建主权个人的专属虚拟路由器
-
在 VirtualBox 中运行 OpenWrt:构建主权个人的专属虚拟路由器
目录- 一、环境准备与镜像下载
- 1.1 VirtualBox 安装
- 1.2 下载 OpenWrt 镜像
- 1.3 镜像类型选择 🔍
- 二、镜像格式转换与优化
- 2.1 解压镜像文件
- 2.2 转换为 VDI 格式
- 2.3 扩展虚拟磁盘容量
- 三、创建 VirtualBox 虚拟机
- 3.1 新建虚拟机
- 3.2 基本配置
- 3.3 硬件配置
- 3.4 挂载虚拟硬盘
- 四、配置虚拟网络环境
- 4.1 VirtualBox 网络模式详解 📚
- 4.2 推荐网络配置方案
- 4.3 替代方案:仅主机网络 + NAT
- 五、初始化 OpenWrt 系统
- 5.1 首次启动
- 5.2 访问管理界面
- 5.3 安全配置(必做)🔐
- 六、扩展文件系统(重要)💾
- 6.1 检查当前磁盘状态
- 6.2 扩展分区
- 6.3 扩展文件系统
- 七、网络深度配置
- 7.1 理解 OpenWrt 网络模型
- 7.2 配置 WAN 接口
- 7.3 修改 LAN 网段(可选)
- 7.4 验证网络连通性
- 八、软件包管理与功能扩展 📦
- 8.1 软件包管理基础
- 8.2 推荐安装的软件包
- 九、高级应用场景 🚀
- 9.1 作为其他虚拟机的网关
- 9.2 网络安全实验
- 9.3 物联网(IoT)网关
- 十、故障排除 🔧
- 10.1 常见问题与解决方案
- 10.2 重置系统
- 总结
OpenWrt 作为一个高度可定制化的开源路由器固件,为网络爱好者和开发者提供了极大的灵活性。为了更方便地探索和学习 OpenWrt,我们可以利用虚拟化技术,在 VirtualBox 中创建一个虚拟的 OpenWrt 路由器环境。这种方式不仅成本低廉、风险可控,还能让你在不影响现有网络的情况下自由实验各种网络配置方案。
一、环境准备与镜像下载
1.1 VirtualBox 安装
本教程使用 Linux 系统进行操作,在进行如下操作前,请提前下载并安装 VirtualBox。从 VirtualBox 官方网站 下载对应操作系统的版本并安装。也可以按需下载并安装 VirtualBox 扩展包(Extension Pack)。扩展包提供了 USB 2.0/3.0 支持、磁盘加密、NVMe 和 PXE 引导等拓展功能。
⚠️ 版本兼容性提示:
本教程基于 VirtualBox 7.x 版本编写。如果你使用的是旧版本(如 6.x),部分界面和操作路径可能略有差异。建议升级到最新的稳定版本以获得最佳兼容性和安全更新。
1.2 下载 OpenWrt 镜像
📥 访问 OpenWrt 官方下载页面,下载最新的 x86/64 架构的镜像文件。
🆕 当前版本信息(截至 2026 年 2 月):
版本类型 版本号 发布日期 说明 稳定版(Stable) 24.10.5 2025 年 12 月 18 日 推荐用于生产环境 候选版(RC) 25.12.0-rc4 2026 年 1 月 29 日 新版本测试中,包含最新特性 具体下载路径示例:
https://downloads.openwrt.org/releases/24.10.5/targets/x86/64/1.3 镜像类型选择 🔍
x86/64 位架构的 OpenWrt 镜像主要有两种类型,选择合适的镜像对后续使用体验至关重要:
特性 combined-squashfs.img.gzcombined-ext4.img.gz📁 文件系统 SquashFS(只读)+ JFFS2(读写overlay) Ext4(完全读写) 💾 存储空间 有限,overlay 分区存储配置和软件包 可自由扩展 🔄 恢复出厂 ✅ 支持(清除 overlay 即可) ❌ 不支持原生恢复 🔧 分区扩展 ❌ 不支持 ✅ 支持 📦 软件安装 空间受限,大量安装后可能空间不足 空间充裕 🖥️ 管理方式 OpenWrt 传统方式 类似标准 Linux 🎯 适用场景 嵌入式设备、需要恢复功能的场景 虚拟机、x86 设备 📌 深入理解两种文件系统:
SquashFS 的工作原理:
SquashFS 是一种高度压缩的只读文件系统,使用 LZMA 算法压缩数据,可比 JFFS2 节省 20-30% 的存储空间。由于根文件系统只读,所有修改(配置变更、安装的软件包)都存储在独立的 overlay 分区中。这种设计允许通过简单清除 overlay 分区来实现"恢复出厂设置"。但缺点是每次修改系统文件时,实际上是在 overlay 分区创建了一份副本,这会导致空间的额外消耗。
Ext4 的优势:
Ext4 是 Linux 标准的日志文件系统,与常规 Linux 发行版的管理方式完全一致。对于虚拟机环境而言,Ext4 的最大优势在于可以轻松扩展磁盘空间——你可以随时根据需要增大虚拟磁盘容量,而无需重新安装系统。此外,软件包管理工具 opkg 能够准确报告剩余空间,避免因空间计算错误导致的安装失败。
🎯 本教程推荐选择:
为了方便后续操作和扩展存储空间,本教程推荐
generic-ext4-combined.img.gz镜像。该镜像使用 ext4 文件系统,不仅支持完整的读写操作和分区扩展,还能像管理普通 Linux 系统一样管理 OpenWrt,非常适合学习和实验环境。📝 其他选项说明:
当然,你也可以编译自己的自定义镜像,通过 OpenWrt 的 Image Builder 或完整的源码编译来定制专属固件。请 DYOR(Do Your Own Research),本文就不展开讨论了。
二、镜像格式转换与优化
下载完成后,我们需要将
.img.gz镜像文件解压缩,并转换为 VirtualBox 支持的.vdi格式。2.1 解压镜像文件
使用以下命令解压缩镜像文件:
gzip -d openwrt-*-x86-64-generic-ext4-combined.img.gz💡 命令说明:
gzip -d:解压 gzip 压缩文件- 解压后将得到
openwrt-x86-64-generic-ext4-combined.img原始镜像文件 - ⚠️ 解压后原始 .gz 文件会被删除,如需保留可使用
gzip -dk参数
2.2 转换为 VDI 格式
使用 VirtualBox 自带的
VBoxManage工具将.img文件转换为.vdi格式:VBoxManage convertfromraw --format VDI openwrt-*-x86-64-generic-ext4-combined.img openwrt.vdi💡 命令说明:
convertfromraw:从原始磁盘镜像转换--format VDI:指定输出格式为 VirtualBox 原生格式- 转换完成后将创建
openwrt.vdi虚拟磁盘文件
🔧 格式对比知识拓展:
格式 全称 特点 VDI Virtual Disk Image VirtualBox 原生格式,支持动态扩展和快照 VMDK Virtual Machine Disk VMware 格式,VirtualBox 也支持 VHD Virtual Hard Disk Hyper-V 格式,跨平台兼容 RAW Raw Disk Image 无格式原始数据,体积最大 2.3 扩展虚拟磁盘容量
🔑 这一步非常重要! 默认的 OpenWrt 镜像只有约 120MB,对于安装额外软件包来说远远不够。
VBoxManage modifymedium openwrt.vdi --resize 4096💡 命令说明:
modifymedium:修改虚拟介质属性--resize 4096:将磁盘容量扩展到 4096MB(4GB)- 💾 你可以根据实际需求调整这个数值,建议不少于 1024MB(1GB)
⚠️ 重要提醒:
此命令仅扩展了虚拟磁盘的容量上限,实际分区并未自动扩展。系统启动后,你需要在 OpenWrt 内部使用分区工具(如
fdisk或parted)来扩展分区,然后使用resize2fs命令扩展文件系统。具体操作将在后续章节详细说明。三、创建 VirtualBox 虚拟机
3.1 新建虚拟机
启动 VirtualBox,通过以下步骤创建新虚拟机:
- 点击菜单栏 "控制" → "新建"(或使用快捷键
Ctrl+N) - 进入虚拟机创建向导
3.2 基本配置
按照以下参数配置虚拟机:
配置项 推荐值 说明 📛 名称 OpenWrt自定义,便于识别 📁 文件夹 默认或自定义路径 虚拟机文件存储位置 🖥️ 类型 Linux操作系统类型 📦 版本 Linux 2.6 / 3.x / 4.x / 5.x (64-bit)OpenWrt 24.x 基于 Linux 5.15/6.x 内核 3.3 硬件配置
OpenWrt 对硬件资源需求极低,以下为推荐配置:
资源 最低配置 推荐配置 说明 💾 内存 128MB 256MB - 512MB 作为网关使用时 256MB 足够;如需运行容器或复杂服务可适当增加 ⚡ CPU 1 核心 1-2 核心 大多数场景 1 核心即可 📊 资源配置建议:
与原文提到的 1024MB 内存相比,实际上 OpenWrt 非常轻量,纯路由功能 128MB 就能流畅运行。但如果计划运行以下服务,建议适当增加内存:
- 📦 Docker 容器:至少 512MB
- 🔒 VPN 服务器(如 WireGuard、OpenVPN):256MB 以上
- 📈 流量统计(vnStat、Netdata):256MB 以上
- 🚫 广告过滤(AdGuard Home):512MB 以上
3.4 挂载虚拟硬盘
在硬盘配置步骤中:
- 选择 "使用现有的虚拟硬盘文件"
- 点击文件夹图标 📁 打开 "虚拟介质管理器"
- 点击 "添加" 按钮
- 选择之前创建的
openwrt.vdi文件 - 点击 "选择" 确认
✅ 完成上述步骤后,点击"完成"创建虚拟机。
四、配置虚拟网络环境
网络配置是 VirtualBox 中运行 OpenWrt 最关键的环节。VirtualBox 提供了多种网络模式,合理配置可以让虚拟路由器发挥真正的作用。
4.1 VirtualBox 网络模式详解 📚
在配置之前,让我们先了解 VirtualBox 提供的各种网络模式:
模式 访问互联网 主机↔虚拟机 虚拟机↔虚拟机 外部访问虚拟机 典型用途 🌐 NAT ✅ ❌ ❌ ❌(需端口转发) 简单上网 🔗 NAT 网络 ✅ ❌ ✅ ❌(需端口转发) 多虚拟机共享上网 🌉 桥接网卡 ✅ ✅ ✅ ✅ 模拟物理设备 🏠 仅主机网络 ❌ ✅ ✅ ❌ 隔离测试环境 🔌 内部网络 ❌ ❌ ✅ ❌ 虚拟机间通信 4.2 推荐网络配置方案
⚠️ 关键提示:务必在首次启动虚拟机之前完成网络配置,否则 OpenWrt 可能无法正常联网!
为了模拟真实的路由器使用场景,我们采用 双网卡配置方案:
📍 适配器 1:桥接网卡(LAN 口)
配置项 设置值 说明 连接方式 桥接网卡 直接连接物理网络 界面名称 选择主机的物理网卡 如 eth0、enp3s0、wlan0等高级 → 控制芯片 Intel PRO/1000 MT 桌面 兼容性最佳 高级 → 混杂模式 根据需求选择 "全部允许"可抓包分析,"拒绝"更安全 🔍 网卡类型深入说明:
VirtualBox 提供多种虚拟网卡类型,性能由高到低排列为:
- virtio-net(半虚拟化):性能最佳,但需要客户机操作系统支持
- Intel PRO/1000 系列:兼容性优秀,支持分段卸载和校验和卸载
- PCNet 系列:较老的网卡型号,兼容性最广但性能一般
OpenWrt 原生支持 virtio 驱动,如追求最佳网络性能可选择"半虚拟化网络(virtio-net)"。但考虑到兼容性和调试便利性,本教程推荐使用 Intel PRO/1000 MT 桌面型。
📍 适配器 2:NAT(WAN 口)
配置项 设置值 说明 连接方式 网络地址转换 (NAT) 通过主机访问互联网 高级 → 控制芯片 Intel PRO/1000 MT 桌面 与适配器 1 保持一致 📐 网络拓扑示意图:
┌─────────────────────┐ │ 互联网 │ └──────────┬──────────┘ │ ┌──────────▼──────────┐ │ VirtualBox NAT │ │ (10.0.2.0/24) │ └──────────┬──────────┘ │ eth1 (WAN) ┌─────────────────┐ ┌─────────────▼─────────────┐ │ 你的设备 │◄────────────►│ OpenWrt 虚拟机 │ │ (电脑/手机等) │ 桥接网络 │ eth0 (LAN): 192.168.1.1 │ └─────────────────┘ └───────────────────────────┘4.3 替代方案:仅主机网络 + NAT
如果你的网络环境不允许使用桥接模式(如公司网络有 MAC 地址限制),可以采用以下替代方案:
📍 步骤 1:创建仅主机网络
VirtualBox 7.x 操作路径:
- 点击菜单 "文件" → "工具" → "网络管理器"
- 选择 "仅主机网络" 标签页
- 点击 "创建" 按钮
- 记录分配的网络地址(默认为
192.168.56.1/24) - 重要:在"DHCP 服务器"标签页中取消勾选"启用服务器",避免与 OpenWrt 的 DHCP 服务冲突
📍 步骤 2:配置虚拟机网络适配器
适配器 连接方式 用途 适配器 1 仅主机(Host-Only)网络 LAN 口,用于管理访问 适配器 2 NAT WAN 口,用于访问互联网 五、初始化 OpenWrt 系统
5.1 首次启动
完成网络配置后,在 VirtualBox 中选择 OpenWrt 虚拟机,点击 "启动" 按钮。
🖥️ 启动过程说明:
虚拟机将显示 Linux 内核启动信息,这个过程通常只需要几秒钟。当看到命令提示符
root@OpenWrt:/#时,表示系统已成功启动。首次启动时,OpenWrt 会自动初始化网络配置,eth0 会被分配到 br-lan 网桥并设置 IP 为 192.168.1.1。5.2 访问管理界面
OpenWrt 提供两种管理方式:
🌐 方式一:LuCI Web 界面(推荐新手)
- 确保你的设备与 OpenWrt 在同一网络(连接到桥接网络或仅主机网络)
- 如使用桥接模式,可能需要先将电脑 IP 设置为同一网段(如 192.168.1.x)
- 打开浏览器,访问:
http://192.168.1.1 - 登录信息:
- 👤 用户名:
root - 🔑 密码:(留空,直接点击登录)
- 👤 用户名:
🖼️ LuCI 界面特点:
LuCI 是 OpenWrt 的官方 Web 管理界面,基于 Lua 语言开发,提供了直观的图形化配置界面。通过 LuCI,你可以完成绝大多数路由器配置工作,包括网络设置、防火墙规则、软件包管理等。界面支持多语言,可在 System → System → Language 中切换为中文。
⌨️ 方式二:SSH 命令行(推荐进阶用户)
ssh root@192.168.1.1首次连接时,SSH 客户端会提示确认主机密钥指纹,输入
yes继续。由于默认无密码,将直接登录到 shell。5.3 安全配置(必做)🔐
⚠️ 安全警告:OpenWrt 默认无 root 密码,这在任何网络环境中都是极大的安全隐患!
📍 步骤 1:设置 root 密码
方式 A:通过 LuCI 界面
- 登录 LuCI
- 导航至 "系统" → "管理权限"
- 在 "路由器密码" 区域输入新密码(两次)
- 点击 "保存并应用"
方式 B:通过命令行
passwd🔒 密码安全建议:
- 使用至少 12 个字符
- 混合使用大小写字母、数字和特殊符号
- 避免使用常见单词和个人信息
- 建议每 90 天更换一次密码
📍 步骤 2:启用 HTTPS 访问(可选但推荐)
默认情况下,LuCI 使用未加密的 HTTP 协议,密码以明文传输。在不可信的网络环境中,强烈建议启用 HTTPS:
# 安装 HTTPS 支持 opkg update opkg install luci-ssl # 启用 HTTPS 重定向 uci set uhttpd.main.redirect_https=1 uci commit uhttpd service uhttpd reload配置完成后,访问
https://192.168.1.1(首次访问会提示证书警告,这是正常的,因为使用的是自签名证书)。📍 步骤 3:配置 SSH 安全(可选)
为了进一步提升安全性,建议禁用密码登录,仅使用密钥认证:
# 1. 在你的电脑上生成 SSH 密钥对(如已有可跳过) ssh-keygen -t ed25519 -C "your-email@example.com" # 2. 将公钥复制到 OpenWrt ssh-copy-id root@192.168.1.1 # 3. 在 OpenWrt 上禁用密码登录 uci set dropbear.@dropbear[0].PasswordAuth='0' uci set dropbear.@dropbear[0].RootPasswordAuth='0' uci commit dropbear service dropbear restart六、扩展文件系统(重要)💾
还记得我们在第二章中扩展了虚拟磁盘容量吗?现在需要在 OpenWrt 内部完成分区和文件系统的扩展。
6.1 检查当前磁盘状态
# 查看磁盘分区情况 fdisk -l /dev/sda # 查看文件系统使用情况 df -h你会发现虽然虚拟磁盘有 4GB,但 rootfs 分区可能只有约 100MB。
6.2 扩展分区
⚠️ 操作前请确保已备份重要数据!
# 安装分区工具 opkg update opkg install fdisk # 进入交互式分区工具 fdisk /dev/sda在 fdisk 中执行以下操作:
- 输入
p查看分区表,记录第 2 分区的起始扇区号 - 输入
d,然后选择2删除第 2 分区 - 输入
n创建新分区,分区号选2 - 起始扇区输入之前记录的数值(必须与原分区完全一致!)
- 结束扇区直接回车使用默认值(使用全部剩余空间)
- 如提示是否移除文件系统签名,选择
N(保留) - 输入
w写入分区表并退出
6.3 扩展文件系统
# 重启系统使分区表生效 reboot # 重启后扩展 ext4 文件系统 resize2fs /dev/sda2 # 验证扩展结果 df -h✅ 成功后,你将看到 rootfs 分区已扩展到完整的磁盘容量。
七、网络深度配置
7.1 理解 OpenWrt 网络模型
在进行网络配置之前,理解 OpenWrt 的网络架构至关重要:
┌─────────────────────────────────────────────────────────────────┐ │ OpenWrt 网络架构 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ 物理接口 逻辑接口 网络区域(Zone) │ │ ───────── ───────── ───────────────── │ │ eth0 ────────► br-lan ────────► lan (可信区域) │ │ eth1 ────────► wan ────────► wan (不可信区域) │ │ wan6 ────────► wan (IPv6) │ │ │ │ 防火墙规则基于区域(Zone)运作,而非具体接口 │ │ │ └─────────────────────────────────────────────────────────────────┘📌 核心概念说明:
- 物理接口(Physical Interface):对应真实或虚拟的网卡,如
eth0、eth1 - 逻辑接口(Logical Interface):协议配置层,定义 IP 地址、网关等
- 网桥(Bridge):将多个接口合并,如
br-lan桥接了eth0和无线接口 - 区域(Zone):防火墙概念,定义安全边界和转发规则
7.2 配置 WAN 接口
默认情况下,OpenWrt 仅配置了 LAN 接口。我们需要手动添加 WAN 接口以访问互联网。
🌐 方式一:通过 LuCI 配置
- 导航至 "网络" → "接口"
- 点击 "添加新接口"
- 配置参数:
- 名称:
wan - 协议:
DHCP 客户端(让 VirtualBox NAT 自动分配 IP) - 设备:
eth1
- 名称:
- 点击 "创建接口"
- 在 "防火墙设置" 标签页,将其分配到
wan区域 - 保存并应用
⌨️ 方式二:通过命令行配置
# 创建 WAN 接口 uci set network.wan=interface uci set network.wan.proto='dhcp' uci set network.wan.device='eth1' # 配置防火墙区域 uci add_list firewall.@zone[1].network='wan' # 应用配置 uci commit network uci commit firewall service network restart service firewall restart7.3 修改 LAN 网段(可选)
如果默认的 192.168.1.0/24 网段与你的现有网络冲突,可以修改 LAN 地址:
# 修改 LAN IP 地址 uci set network.lan.ipaddr='10.0.0.1' # 如使用仅主机网络,建议设置为该网段 # uci set network.lan.ipaddr='192.168.56.66' uci commit network service network restart⚠️ 注意:修改后需要使用新 IP 地址访问管理界面!
7.4 验证网络连通性
# 测试 WAN 口是否获取到 IP ifconfig eth1 # 测试互联网连通性 ping -c 4 8.8.8.8 # 测试 DNS 解析 ping -c 4 openwrt.org八、软件包管理与功能扩展 📦
8.1 软件包管理基础
OpenWrt 使用
opkg作为软件包管理器,类似于 Debian 的apt或 Alpine 的apk。常用命令:
命令 功能 opkg update更新软件源列表 opkg list列出所有可用软件包 opkg list-installed列出已安装的软件包 opkg install <pkg>安装软件包 opkg remove <pkg>卸载软件包 opkg info <pkg>查看软件包详情 8.2 推荐安装的软件包
🌐 网络工具:
opkg update opkg install tcpdump # 网络抓包工具 opkg install mtr # 网络诊断工具(ping + traceroute) opkg install iperf3 # 网络带宽测试 opkg install bind-dig # DNS 查询工具🔒 安全增强:
opkg install banip # IP 黑名单防护 opkg install https-dns-proxy # DoH (DNS over HTTPS) 代理📊 监控与统计:
opkg install vnstat2 # 流量统计 opkg install htop # 进程监控 opkg install luci-app-statistics # LuCI 统计图表插件🌍 中文支持:
opkg install luci-i18n-base-zh-cn # LuCI 中文语言包九、高级应用场景 🚀
完成以上步骤后,你就可以像操作真实的 OpenWrt 路由器一样,对虚拟机中的 OpenWrt 系统进行配置和管理。以下是一些进阶应用方向:
9.1 作为其他虚拟机的网关
你可以让 OpenWrt 虚拟机作为其他 VirtualBox 虚拟机的网关,模拟完整的企业网络环境:
- 创建一个"内部网络"(Internal Network),命名如
intnet - 为 OpenWrt 添加第三个网络适配器,连接到
intnet - 在 OpenWrt 中配置该接口并启用 DHCP
- 其他虚拟机的网络设置为同一
intnet,即可通过 OpenWrt 上网
9.2 网络安全实验
OpenWrt 是学习网络安全的绝佳平台:
- 🔥 防火墙规则实验:配置 iptables/nftables 规则
- 🕵️ 入侵检测:安装 Snort 或 Suricata
- 🔒 VPN 网关:部署 WireGuard 或 OpenVPN
- 🚫 广告过滤:安装 AdGuard Home 或 Pi-hole
9.3 物联网(IoT)网关
利用 OpenWrt 的扩展能力,可以打造智能家居网关:
- MQTT Broker(Mosquitto)
- Zigbee/Z-Wave 网关集成
- Home Assistant 集成
十、故障排除 🔧
10.1 常见问题与解决方案
问题 可能原因 解决方案 无法访问 192.168.1.1 IP 地址冲突或网络配置错误 检查主机 IP 是否在同一网段;尝试通过 VirtualBox 控制台直接操作 WAN 口无法获取 IP NAT 网络配置问题 确认适配器类型正确;检查 VirtualBox NAT 服务状态 软件包安装失败 网络不通或空间不足 先执行 opkg update;检查磁盘空间df -h启动后黑屏 显示配置问题 在虚拟机设置中尝试切换显卡类型为 VBoxVGA 10.2 重置系统
如需完全重新开始,最简单的方式是删除虚拟机并重复本教程步骤。如只需重置配置:
# 重置所有配置到默认值 firstboot -y && reboot⚠️ 注意:此命令在 ext4 系统上会清除所有已安装的软件包和配置!
总结
通过 VirtualBox 运行 OpenWrt,主权个人可以方便地搭建一个虚拟的网络实验环境,深入学习和研究 OpenWrt 的各种功能,并探索其在网络安全、物联网等领域的应用。虚拟化环境的最大优势在于其可逆性——你可以大胆尝试各种配置而不必担心损坏真实设备,快照功能更是让你能够随时回滚到之前的状态。
📚 延伸学习资源:
Log in to reply.