跳转到内容

OpenWrt 软路由 ​

OpenWrt 是一套基于 Linux 的开源路由器固件,在 x86_64 平台上跑得和专业路由器一样稳,界面(LuCI)和包管理都比消费级路由器灵活得多。

把它装进 PVE 当软路由,能省下一台独立设备,换网卡、改防火墙规则也不用再登另一台机器。代价是分类导读里说过的那件事:这台虚拟机停了,全家/全公司断网。这篇文章只讲装机和网络规划,单点故障的应对请先读完导读再往下看。

适合谁 ​

你的情况合不合适
机器上至少有两个独立物理网口合适,这是干净方案的前提
只有一个网口,打算用 VLAN 分可以做,但配错的代价是同时失去管理面和网络,见分类导读
想要成熟的插件生态(AdGuard Home、WireGuard、多拨)合适,OpenWrt 的 opkg(24.10 及之前)/ apk(25.12 起)软件源很丰富
需要图形化、偏向企业防火墙的功能(IDS/IPS、Web 代理审计)看看 OPNsense,它更偏这个方向
家里/公司没有备用上网方式先准备好再开始,见下方警示

开始之前:确认这三件事

  1. PVE 宿主机的管理网口不要挂在软路由的 WAN 侧。 如果宿主机的 Web UI(https://<ip>:8006)要经过这台还没配好的软路由虚拟机才能访问,你很可能会在配置过程中把自己锁在外面。宿主机管理应该走一个不经过软路由 WAN 判断逻辑的网口或网桥。
  2. 想好断网时怎么应急。 至少留一条不依赖这台虚拟机的上网路径(备用路由器、手机热点),知道去哪能重新连上宿主机。
  3. 配置要单独导出备份,不要只依赖 PVE 的 vzdump。见下文「备份与维护」。

资源规划 ​

OpenWrt 对资源要求很低,多给的资源基本浪费在闲置上。

项建议说明
vCPU1–2纯路由转发用不满,开硬件加速(Flow Offloading)后单核也够千兆
内存256–512 MB 起步,用了较多插件(AdGuard Home 等)给到 1 GB内存给太大也没用,OpenWrt 不会主动占用
磁盘1–2 GB 足够,plan 里留出安装额外软件包的空间系统盘存的是整个 squashfs/overlay 镜像,不需要大
网卡至少 2 个虚拟网卡,一个接 LAN 网桥,一个直通或桥接 WAN见下方网卡规划

不要给固定内存以外的花哨配置

不需要开气球驱动(ballooning),不需要 CPU 超分。软路由要的是稳定的转发延迟,不是弹性伸缩。

网卡规划:桥接还是直通 ​

这是整篇最关键的决定,装完再改要重新配网络。

方案WAN 怎么接优点代价
物理网口直通给虚拟机独立网卡整个直通(PCI passthrough)性能最好,ISP 的 PPPoE/DHCP 由 OpenWrt 直接对话,不受宿主机网络栈影响这块网卡宿主机不能再用;虚拟机不能快照/迁移,见硬件直通
网桥桥接(vmbr)WAN 口接一个只挂了物理网卡的网桥(不接 vmbr0)不需要 IOMMU,可以快照迁移多一层宿主机网络栈,理论上性能和隔离性略弱于直通

大多数家用/小办公场景选网桥桥接就够用;追求极致转发性能或要跑对网络时序敏感的协议(比如某些 ISP 的认证)时才需要直通。

WAN 侧网卡不要和宿主机管理网桥混用

不管选哪种方案,给 WAN 单独建一个网桥(例如 vmbr1),只把这一个物理口挂上去,不要和 PVE 管理用的 vmbr0 共用。混用的后果是软路由的 WAN 流量和宿主机管理流量走同一个二层网络,配置防火墙规则时很容易把自己也隔离在外面。

新建网桥的步骤见网桥基础。

获取镜像 ​

以 OpenWrt 官方下载页和 OpenWrt 官方虚拟化文档为准,本文不提供固定版本号的下载链接——OpenWrt 版本更新较快,且从 25.12 起包管理器从 opkg 换成了 apk,照抄旧教程里的包名可能会失败。

在下载页选择 x86/64 目标(generic 子目标),下载 combined-efi 镜像(文件名形如 openwrt-<版本>-x86-64-generic-squashfs-combined-efi.img.gz),并核对官方公布的校验值。

为什么要 EFI 版本

PVE 用 OVMF (UEFI) 引导时要配合 -efi 后缀的镜像。用 -combined 而不是单独的 -rootfs/-kernel,因为它已经打包好了完整的引导分区。

在本地电脑校验并解压:

sh
# 校验(macOS / Linux)
sha256sum openwrt-*-x86-64-generic-squashfs-combined-efi.img.gz

# 解压——注意不要跳过这一步
gunzip openwrt-*-x86-64-generic-squashfs-combined-efi.img.gz

一定要先解压再导入

qm importdisk 和 qemu-img 都能接受 .gz 文件而不报错,但导入进去的磁盘内容还是压缩过的,UEFI 引导程序读不懂,虚拟机会直接起不来。先 gunzip,再导入。

把解压后的 .img 文件上传到宿主机(比如放到 /var/lib/vz/template/iso/ 或任意临时目录)。

创建虚拟机并导入磁盘 ​

完整的选项解释见创建第一个虚拟机,这里只列 OpenWrt 需要的具体设置。

先建一台不带磁盘的虚拟机(Disks 页删除默认磁盘):

标签页字段填什么
GeneralNameopenwrt,勾上 Start at boot,并在 Options → Start/Shutdown order 里设成最先启动
OSGuest OS不使用 ISO,Do not use any media
SystemMachine / BIOSq35 + OVMF (UEFI)
SystemSCSI ControllerVirtIO SCSI single
CPUCores1–2
MemoryMemory256–512
Network第一张网卡接 LAN 网桥(vmbr0),Model 选 VirtIO
Network第二张网卡接 WAN 网桥或直通的网卡

在宿主机 shell导入刚才解压的镜像(<vmid> 替换成实际的虚拟机编号,<存储> 替换成目标存储名,例如 local-lvm):

sh
qm importdisk <vmid> openwrt-*-x86-64-generic-squashfs-combined-efi.img <存储>

导入后磁盘会以「未使用磁盘」的形式挂在虚拟机上,需要手动接上并设为启动盘:

  1. 虚拟机 → Hardware,选中新出现的 Unused Disk,点 Edit,总线选 SCSI,确认存储无误后点 Add。
  2. 虚拟机 → Options → Boot Order,把这块盘拖到最上面并勾选启用,把光驱去掉。

磁盘偏小属于正常现象

导入进来的磁盘按官方镜像原始大小算,通常只有 100 多 MB。OpenWrt 用的是 squashfs + overlay 的只读/可写分层结构,不需要提前扩容;真要装很多额外软件包再考虑用 resize2fs 之类的方式扩展 overlay 分区,具体步骤以 OpenWrt 官方文档为准。

第一次启动之后 ​

开机,用 Console 登录(默认无密码,直接回车)。

先设置 root 密码和管理口:

sh
# 在 OpenWrt 虚拟机内部执行
passwd

默认 LAN 接口地址通常是 192.168.1.1,登录 LuCI(http://192.168.1.1)之后再按需求改成你内网的网段。

改 LAN 网段前想清楚

如果 PVE 宿主机自己也在软路由要管理的网段里,改错 LAN 网段可能导致宿主机和软路由互相找不到对方。改之前先确认从哪条路径还能连回 PVE 的 Web UI。

WAN 口按你的上网方式配置(DHCP、PPPoE 或静态),在 LuCI 的 网络 → 接口 里设置。具体的拨号参数以你的 ISP 提供的资料为准。

检查结果 ​

  1. LuCI 界面(http://<lan-ip>)能正常打开,系统信息里能看到内核版本和运行时长。
  2. 网络 → 接口 里 WAN 接口状态为已连接,能看到分配到的 IP。
  3. 从 LAN 侧的客户机能上网,ping 223.5.5.5(或你所在地区的公共 DNS)能通。
  4. 重启虚拟机一次(qm stop 再 qm start,不是虚拟机里的 reboot),确认能自动恢复联网——这一步能发现「配置没保存」之类的问题。
  5. 关闭虚拟机,确认依赖它上网的设备确实断网了,再开机确认恢复——这是在确认你理解了单点故障的真实影响,不是让你长期这样运行。

常见问题 ​

装完看不到网卡,或者网卡对应错了。 OpenWrt 有时会把预期的 WAN 和 LAN 接口顺序弄反。在 LuCI 的 网络 → 接口 里核对每个 ethX 对应哪个虚拟网卡(可以逐个拔插网线或看 PVE 里的流量计数器确认),重新绑定。

改完防火墙规则后 LuCI 打不开了。 如果 LAN 侧的 Web 管理被规则挡住,通常还能从 PVE 的 Console 登录,用 uci 命令修回来,或者参考 OpenWrt 官方的失联恢复方法(failsafe 模式)。

性能达不到预期。 检查是否开启了 网络 → 防火墙 → Flow Offloading(软件或硬件卸载),多数场景能显著提升转发性能。

备份与维护 ​

配置备份和 vzdump 不是一回事

vzdump 备份的是整块虚拟磁盘,恢复要整台起来才能用。LuCI 自带的配置导出(系统 → 备份/升级 → 生成归档)更轻量,建议单独定期导出,保存到 PVE 之外的地方(比如你的电脑或另一台存储)。

升级 OpenWrt 大版本前,两种备份都做一遍。

给虚拟机打快照前确认没有走硬件直通——直通了 WAN 网卡的虚拟机无法快照,见硬件直通。

参考资料 ​

Proxmox VE 非官方中文使用指南,与 Proxmox Server Solutions GmbH 无隶属关系。