avatar

Ryan's Blog

The first step is always the hardest.

  • 首页
  • 分类
  • 标签
  • 归档
  • 关于
  • 工具
Home Proxmox VE 安装 OpenWrt 软路由:镜像导入、网卡桥接与 IP 配置指南
文章

Proxmox VE 安装 OpenWrt 软路由:镜像导入、网卡桥接与 IP 配置指南

Posted 2023-04-6 Updated 10 days ago
By Ryan Chen
41~53 min read

前言

OpenWrt 常见于物理软路由设备,也可以运行在 Proxmox VE 虚拟化环境中。把 OpenWrt 安装到 PVE 的好处是:硬件利用率更高,备份和迁移更方便,也便于和 NAS、旁路由、测试网络、Docker 服务等环境一起管理。

本文记录在 Proxmox VE 中安装 OpenWrt x86 镜像的完整流程,重点包括:

  • 如何选择 OpenWrt x86 镜像;
  • 如何在 PVE 中创建虚拟机;
  • 如何上传、解压并导入 OpenWrt 镜像;
  • 如何挂载导入后的磁盘并配置启动顺序;
  • 如何规划单网卡旁路由和双网卡主路由;
  • 如何修改 OpenWrt 的 LAN IP、网关、DNS 和 DHCP;
  • 常见启动、网络和访问问题怎么排查。

如果你需要自己编译 OpenWrt 固件,可以先参考:使用 WSL 编译 OpenWrt 固件完整指南。本文则以已经准备好的 OpenWrt x86 镜像为例。

适用场景

这套方案适合以下场景:

场景 说明
单网卡旁路由 家里已有主路由,OpenWrt 只负责插件、DNS、代理、分流等增强能力。
双网卡主路由 OpenWrt 作为真正的主路由,一张网卡接 WAN,一张网卡接 LAN。
实验环境 用 PVE 快速启动 OpenWrt,验证插件、网络配置或固件功能。
虚拟化整合 在一台主机上同时运行 NAS、Linux、Docker、OpenWrt 等服务。

如果是第一次折腾,建议先用 旁路由模式,不要一开始就把 OpenWrt 放到全家网络的主路由位置,避免配置错误导致整个网络不可用。

Proxmox VE 与 OpenWrt 简介

Proxmox VE 是基于 Debian 的开源虚拟化平台,核心能力包括 KVM 虚拟机、LXC 容器、Web 管理界面、存储管理、网络桥接、备份和集群能力。

OpenWrt 是面向路由器、嵌入式设备和 x86 设备的 Linux 发行版。和普通路由器固件相比,OpenWrt 的特点是可写文件系统、可安装软件包、可通过 LuCI 管理界面配置网络、防火墙、DHCP、DNS、无线和各种插件。

本文安装的是 OpenWrt x86 镜像。如果你使用的是第三方 OpenWrt / LEDE 编译镜像,整体导入流程基本一致,但默认 IP、默认密码、内置插件、网卡命名和防火墙配置可能有所不同。

安装前准备

开始前需要准备:

  1. 已安装好的 Proxmox VE 主机;
  2. 能访问 PVE Web 控制台;
  3. 一个 OpenWrt x86 镜像,常见后缀为 .img.gz 或 .img;
  4. 明确你的网络模式:旁路由还是主路由;
  5. 如果要做主路由,建议至少准备两张物理网卡,或提前规划 VLAN / bridge。

本文示例中虚拟机 ID 使用 101,存储使用 local-lvm,镜像文件名使用 openwrt.img。实际操作时请替换为你自己的 VMID、存储名称和镜像文件名。

OpenWrt x86 镜像怎么选

OpenWrt 官方 x86/64 目录通常会提供多种镜像,常见命名包括:

镜像类型 说明 适合场景
generic-ext4-combined.img.gz BIOS 启动,ext4 根文件系统 常见虚拟机安装,后续扩容更方便。
generic-squashfs-combined.img.gz BIOS 启动,squashfs + overlay 更接近嵌入式固件体验,便于恢复默认状态。
generic-ext4-combined-efi.img.gz UEFI 启动,ext4 根文件系统 PVE 虚拟机使用 OVMF / UEFI 启动时选择。
generic-squashfs-combined-efi.img.gz UEFI 启动,squashfs + overlay UEFI 场景下使用。

对大多数 PVE 用户来说,推荐优先选择:

generic-ext4-combined.img.gz

原因是它使用传统 BIOS 启动,导入到 PVE 后配置简单,ext4 后续扩容也更直观。如果你在 PVE 虚拟机里明确选择了 UEFI,则选择带 efi 的镜像。

下载完成后建议校验文件完整性,例如:

sha256sum openwrt.img.gz

然后和下载目录中的 sha256sums 文件对比,避免镜像下载损坏。

创建 PVE 虚拟机

进入 PVE 管理页面,右键点击节点,例如 pve,然后选择 创建虚拟机。

image-20230406143903078

填写虚拟机名称,例如 OpenWrt,然后点击 下一步。

image-20230406144112559

操作系统这里选择 不使用任何介质。因为 OpenWrt x86 镜像不是通过 ISO 安装系统,而是直接把磁盘镜像导入为虚拟机磁盘。

image-20230406144235404

系统页面如果使用 BIOS 镜像,保持默认 SeaBIOS 即可;如果你选择的是 combined-efi 镜像,则需要对应使用 OVMF / UEFI。

image-20230406144409209

磁盘页面可以先创建一个临时磁盘,后面会删除。也可以根据 PVE 版本不同,在创建完成后再处理磁盘。

image-20230406144526286

CPU 根据实际需求配置。普通家用旁路由 1~2 核通常就够用;如果跑较多插件、代理或流量较大,可以适当增加。

image-20230406144605324

内存可以从 512 MB~2 GB 起步。插件较多时建议 1 GB 或 2 GB。

image-20230406144649297

网络部分建议先选择默认 bridge,例如 vmbr0。网卡模型优先使用 VirtIO,性能更好;如果 OpenWrt 镜像识别不到 VirtIO 网卡,可以再尝试 E1000。

image-20230406144853895

确认配置时,不要勾选 创建后启动。因为后面还要删除临时磁盘、导入 OpenWrt 镜像并调整启动顺序。

image-20230406144953470

删除临时磁盘

如果创建虚拟机时生成了临时磁盘,可以先在虚拟机的 硬件 页面选中磁盘,然后点击 分离。

Snipaste_2023-04-04_20-18-19

确认分离。

Snipaste_2023-04-04_20-18-32

分离后会出现 未使用的磁盘0,继续选中并删除。

Snipaste_2023-04-04_20-19-00

确认删除。

Snipaste_2023-04-04_20-19-08

这一步的目的,是让虚拟机后续只使用导入的 OpenWrt 镜像磁盘启动,避免启动顺序混乱。

上传并解压 OpenWrt 镜像

如果下载到的是 .img.gz 文件,可以通过 SFTP、SCP 或 PVE Web Shell 上传到 PVE 主机,例如放到 /tmp 目录。

Snipaste_2023-04-04_20-15-51

进入镜像所在目录后解压:

cd /tmp
gzip -d openwrt.img.gz

解压后会得到:

openwrt.img

Snipaste_2023-04-04_20-27-01

Snipaste_2023-04-04_20-27-08

如果文件已经是 .img,可以直接上传。也可以借助 PVE 的上传入口把文件先上传到某个存储目录,但要注意:OpenWrt 的 .img 不是 ISO 安装盘,上传后仍然需要通过命令导入为虚拟磁盘。

image-20230406145833082

如果不确定文件上传到了哪里,可以用 find 查找:

find / -name 'openwrt*.img' 2>/dev/null

image-20230406150107883

导入 OpenWrt 镜像到 PVE 虚拟机

可以通过 SSH 连接 PVE,也可以直接使用 PVE Web 页面里的 Shell。

image-20230406150239565

进入镜像所在目录,例如:

cd /tmp

Snipaste_2023-04-04_20-27-08

推荐使用 PVE 当前命令形式:

qm disk import 101 openwrt.img local-lvm

也可以使用旧文章里常见的别名:

qm importdisk 101 openwrt.img local-lvm

参数说明:

参数 含义
101 虚拟机 ID,也就是 VMID。
openwrt.img OpenWrt 解压后的磁盘镜像文件。
local-lvm 目标存储名称,需要替换为你的 PVE 存储。

Snipaste_2023-04-04_20-28-58

执行后可以看到导入日志。

Snipaste_2023-04-04_20-27-51

导入完成后,PVE 会在虚拟机硬件页面生成一个 未使用的磁盘。

Snipaste_2023-04-04_20-28-01

挂载导入后的磁盘

回到虚拟机的 硬件 页面,可以看到新导入的 未使用的磁盘0,点击 编辑。

Snipaste_2023-04-04_20-22-23

总线类型可以选择 SATA,也可以选择 VirtIO Block / SCSI。为了兼容性,初次安装可以选择 SATA;如果熟悉 PVE 和 OpenWrt 驱动情况,可以选择性能更好的 VirtIO / SCSI。

Snipaste_2023-04-04_20-22-40

添加成功后如下。

Snipaste_2023-04-04_20-22-57

配置启动顺序

进入虚拟机 选项,找到 引导顺序。

Snipaste_2023-04-04_20-23-23

把刚刚挂载的磁盘,例如 sata0,勾选为启用,并调整到第一位。

Snipaste_2023-04-04_20-23-42

确认后可以看到启动顺序已经变成 sata0 优先。

Snipaste_2023-04-04_20-23-55

网络拓扑怎么选

OpenWrt 安装本身不复杂,真正容易出问题的是网络拓扑。建议先确认你要做的是旁路由还是主路由。

方案一:单网卡旁路由

旁路由适合家里已经有主路由的情况。OpenWrt 不直接接管所有设备的 DHCP 和默认网关,而是作为同网段中的一台增强设备。

示例:

设备 IP
主路由 192.168.1.1
PVE 管理地址 192.168.1.10
OpenWrt 192.168.1.2
普通客户端 192.168.1.x

旁路由模式建议:

  1. OpenWrt 的 LAN IP 设置为和主路由同网段,例如 192.168.1.2;
  2. OpenWrt 的网关设置为主路由,例如 192.168.1.1;
  3. OpenWrt 的 DNS 可以指向主路由,也可以指向公共 DNS;
  4. 如果主路由已经开启 DHCP,OpenWrt 上建议关闭 DHCP,避免地址分配冲突;
  5. 需要走 OpenWrt 的设备,可以手动把网关或 DNS 指向 OpenWrt。

这是最适合新手的模式,因为即使 OpenWrt 配错了,也不会影响主路由本身。

方案二:双网卡主路由

主路由模式下,OpenWrt 直接承担路由器职责。通常需要两张网卡:

网卡 作用
WAN 接光猫、上级路由或运营商网络。
LAN 接交换机、AP 或内网设备。

在 PVE 中一般会有两个 bridge,例如:

PVE Bridge 连接对象 OpenWrt 角色
vmbr0 管理口 / LAN LAN 或管理网络
vmbr1 独立物理网卡 WAN

主路由模式风险更高,尤其要注意:

  • 不要把 PVE 管理地址所在网卡误配置成 OpenWrt 的 WAN,避免失联;
  • 如果要调整 PVE 的 bridge,建议先准备显示器、键盘或带外管理;
  • 防火墙、DHCP、PPPoE、VLAN 都要规划清楚后再切换;
  • 初次配置建议先离线验证,再接入真实家庭网络。

启动 OpenWrt

确认磁盘和启动顺序都正确后,点击右上角 启动。

Snipaste_2023-04-04_20-24-06

打开控制台,如果看到类似:

Please press Enter to activate this console.

说明 OpenWrt 已经启动完成,按回车进入控制台。

Snipaste_2023-04-04_20-29-13

如果卡在启动阶段,优先检查:

  1. 镜像是否选择了正确的 BIOS / UEFI 版本;
  2. 启动顺序是否把 OpenWrt 磁盘放在第一位;
  3. 磁盘总线是否兼容,必要时换成 SATA;
  4. 镜像是否完整,必要时重新下载并校验 sha256。

修改 OpenWrt LAN IP

OpenWrt 默认 LAN IP 常见为 192.168.1.1。如果这个地址和你的主路由冲突,需要先修改。

可以编辑配置文件:

vi /etc/config/network

Snipaste_2023-04-04_20-30-03

找到 config interface 'lan',根据你的网络规划调整:

config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option ipaddr '192.168.1.2'
        option netmask '255.255.255.0'
        option gateway '192.168.1.1'
        list dns '192.168.1.1'

Snipaste_2023-04-04_20-30-22

保存后重启网络:

/etc/init.d/network restart

也可以使用 UCI 命令修改,更适合复制执行:

uci set network.lan.ipaddr='192.168.1.2'
uci set network.lan.netmask='255.255.255.0'
uci set network.lan.gateway='192.168.1.1'
uci delete network.lan.dns 2>/dev/null
uci add_list network.lan.dns='192.168.1.1'
uci commit network
/etc/init.d/network restart

如果是旁路由模式,并且主路由已经提供 DHCP,建议关闭 OpenWrt DHCP:

uci set dhcp.lan.ignore='1'
uci commit dhcp
/etc/init.d/dnsmasq restart

注意:不同 OpenWrt 版本和第三方固件的默认配置可能不完全相同。修改前可以先备份:

cp /etc/config/network /etc/config/network.bak
cp /etc/config/dhcp /etc/config/dhcp.bak

访问 LuCI 管理界面

配置完成后,在浏览器访问 OpenWrt 的 LAN IP,例如:

http://192.168.1.2

Snipaste_2023-04-04_20-30-42

如果无法访问,按下面顺序排查:

  1. 客户端和 OpenWrt 是否在同一网段;
  2. PVE 虚拟机网卡是否接到了正确的 bridge;
  3. OpenWrt 控制台中执行 ip addr 看接口是否获取到配置;
  4. 执行 ping 192.168.1.1 测试到主路由是否通;
  5. 执行 ping 223.5.5.5 测试外网 IP 是否通;
  6. 执行 ping openwrt.org 测试 DNS 是否正常;
  7. 检查防火墙区域是否把接口放到了正确的 LAN / WAN 区域。

常见问题排查

1. 导入镜像后没有看到磁盘

检查 VMID 和存储名称是否正确:

qm list
pvesm status

重新导入时注意命令格式:

qm disk import <VMID> <镜像路径> <存储名称>

导入成功后,磁盘通常会显示为该虚拟机的 未使用的磁盘,需要手动添加到硬件配置中。

2. 启动后提示找不到系统

常见原因:

  • 没有把导入磁盘挂载到虚拟机;
  • 没有把该磁盘设置为第一启动项;
  • BIOS / UEFI 与镜像类型不匹配;
  • 镜像文件损坏或下载不完整。

可以先把磁盘总线改为 SATA,并确认启动顺序。

3. OpenWrt 识别不到网卡

优先尝试:

  • 将网卡模型从 VirtIO 改为 E1000;
  • 检查 OpenWrt 镜像是否包含 virtio 网卡驱动;
  • 在控制台执行 ip link 查看接口名称;
  • 确认 PVE bridge 是否绑定了正确的物理网卡。

4. PVE 管理页面突然访问不了

这通常和网络拓扑配置有关,尤其是把 PVE 管理口所在 bridge 调整为 OpenWrt WAN 或修改了上级网关。

建议:

  • 操作前记录 PVE 管理 IP、网关和 bridge 配置;
  • 主路由模式先准备本地控制台;
  • 不确定时先做旁路由,不要直接替换主路由;
  • 调整 PVE 网络前先备份 /etc/network/interfaces。

5. 旁路由没有效果

旁路由能否生效,取决于客户端是否真的把流量交给 OpenWrt。可以检查:

  • 客户端网关是否指向 OpenWrt;
  • 客户端 DNS 是否指向 OpenWrt;
  • OpenWrt 自己的网关和 DNS 是否正确;
  • OpenWrt 是否关闭了和主路由冲突的 DHCP;
  • 防火墙、NAT、插件规则是否正确。

小结

在 PVE 中安装 OpenWrt 的核心流程可以概括为:

  1. 下载 OpenWrt x86 镜像;
  2. 创建不带安装介质的 PVE 虚拟机;
  3. 删除临时磁盘;
  4. 解压 .img.gz;
  5. 使用 qm disk import 或 qm importdisk 导入镜像;
  6. 挂载导入后的磁盘;
  7. 设置启动顺序;
  8. 启动 OpenWrt;
  9. 修改 LAN IP、网关、DNS 和 DHCP;
  10. 根据旁路由或主路由模式调整网络。

真正需要谨慎的不是镜像导入,而是网络规划。建议新手先从旁路由模式开始,确认 PVE、OpenWrt、主路由和客户端之间的关系后,再考虑让 OpenWrt 承担主路由职责。

参考资料

  • Proxmox VE 官方文档:qm 命令
  • Proxmox VE 官方 Wiki:Network Configuration
  • OpenWrt 官方文档:OpenWrt on x86 hardware / PC / VM / server
  • OpenWrt 官方文档:Network configuration
  • OpenWrt 官方文档:UCI system
  • OpenWrt 官方下载目录
  • 使用 WSL 编译 OpenWrt 固件完整指南
软路由
Proxmox VE PVE OpenWrt 软路由 x86 虚拟化 网卡桥接 网络配置
License:  CC BY 4.0
Share

Further Reading

Apr 6, 2023

Proxmox VE 安装 OpenWrt 软路由:镜像导入、网卡桥接与 IP 配置指南

记录在 Proxmox VE 中部署 OpenWrt x86 软路由的完整流程,覆盖镜像选择、上传与解压、qm disk import / qm importdisk 导入磁盘、虚拟机启动项配置、单网卡旁路由与双网卡主路由网络规划、OpenWrt LAN IP 修改和常见故障排查。

Nov 25, 2021

Docker 搭建青龙、NolanJDC 与 xdd-plus 自动化环境

记录使用 Docker 部署青龙、NolanJDC 与 xdd-plus 的流程,适合个人自动化任务环境搭建参考。

Nov 25, 2021

使用 WSL 编译 OpenWrt 固件完整指南

基于 WSL2 在 Windows 中搭建 OpenWrt 编译环境,完整说明依赖安装、源码选择、feeds 更新、menuconfig 配置、固件编译、二次编译、产物路径和常见问题排查,适合软路由固件定制场景。

OLDER

APISIX Mocking 插件实践:接口 Mock、临时降级与兜底响应

NEWER

MySQL 报错 “The table ... is full” 排查:临时表、TempTable 与磁盘空间问题解析

Recently Updated

  • Agent 架构设计原则:Router、Runtime 与 Business Script 的职责划分
  • RocketMQ 架构设计与应用最佳实践:高可用消息队列核心解析
  • Redis 核心概念、数据结构与高可用架构详解
  • B+树原理与 MySQL InnoDB 索引机制解析
  • MySQL AUTO_INCREMENT 插入 0 变成自增值的原因与解决方案

Trending Tags

RocketMQ Windows Feign Docker Zipkin SonarQube OkHttp HttpClient API 性能优化

Contents

©2026 Ryan's Blog. Some rights reserved. · 粤ICP备2022031588号