快捷键

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

PVE 安装 OpenWrt

本文使用一台 OpenWrt 虚拟机和一个独立 LAN 网桥,完成镜像导入、网络配置与联网验证。示例采用 IPv4,WAN 从现有上级路由器获取地址。

1. 网络规划

项目示例设置
虚拟机 ID120,创建前确认未占用
CPU / 内存2 核 / 1024 MB
BIOSSeaBIOS
网卡 net0VirtIO,连接现有 vmbr0,作为 WAN
网卡 net1VirtIO,连接新建 vmbr1,作为 LAN
OpenWrt LAN 地址192.168.50.1/24
LAN 测试客户端另一台连接 vmbr1 的虚拟机

数据流为:测试客户端 → vmbr1 → OpenWrt LAN → OpenWrt WAN → vmbr0 → 上级路由器。

vmbr0 保留现有 PVE 管理地址;vmbr1 不绑定物理网卡,也不设置宿主机 IP。LAN 网段应与上级网络不同。PVE 的 Linux Bridge 用于连接虚拟网卡与网络,具体机制见 官方网络配置文档。

2. 准备镜像

在 OpenWrt Firmware Selector 中选择稳定版、x86/64 和 Generic 设备,下载文件名以 generic-ext4-combined.img.gz 结尾的完整磁盘镜像。

本文使用 SeaBIOS,因此选择非 EFI 镜像。使用 OVMF / UEFI 时,应选择对应的 combined-efi.img.gz。镜像类型说明见 OpenWrt x86 文档。

把镜像上传到 PVE 宿主机的 /var/lib/vz/template/iso/,命名为 openwrt.img.gz,核对发布目录中的 SHA256 后解压。

以下命令在 PVE 宿主机 Shell 执行:

cd /var/lib/vz/template/iso
sha256sum openwrt.img.gz
gzip -dk openwrt.img.gz

sha256sum 输出应与所下载版本的官方校验值一致;解压后得到 openwrt.img。

3. 新建 LAN 网桥

在 PVE 网页中进入“节点 → 系统 → 网络”,新建 Linux Bridge:

  • 名称填写 vmbr1,若已被占用则改用其他空闲名称,并同步修改后续命令。
  • IPv4、网关和 Bridge ports 留空。
  • 启用自动启动,保存并应用配置。

该网桥只连接本次测试的虚拟机与 OpenWrt LAN。现有管理网桥的地址、网关和物理网卡配置保持原样。

4. 创建虚拟机并导入磁盘

先查看虚拟机 ID 和存储名称:

qm list
pvesm status

确认 120 未被使用、local-lvm 支持虚拟机磁盘后执行;若环境不同,替换这两个值:

qm create 120 --name openwrt --memory 1024 --cores 2 \
  --ostype l26 --bios seabios \
  --net0 virtio,bridge=vmbr0 \
  --net1 virtio,bridge=vmbr1

qm disk import 120 /var/lib/vz/template/iso/openwrt.img local-lvm
qm config 120

导入后,磁盘会显示为 unused0 或其他未使用磁盘。在虚拟机“硬件”页面选择这块磁盘,编辑并挂到 SATA 0;再在“选项 → 引导顺序”中启用该磁盘并排到第一位。

导入命令与未使用磁盘的处理方式可参考 Proxmox 官方磁盘导入说明。实际卷名以导入结果为准。

启动虚拟机并打开其控制台:

qm start 120

5. 配置 OpenWrt 接口

以下命令在 OpenWrt 虚拟机控制台 执行。先设置 root 密码,再查看网卡:

passwd
ip link

通过 MAC 地址与 PVE 硬件页比对,确认哪张网卡连接 vmbr0、哪张连接 vmbr1。下例假设 eth0 是 WAN、eth1 是 LAN;名称不同就替换配置中的设备名。

为新建虚拟机保存原配置,并写入最小网络配置:

cp -p /etc/config/network /root/network.before-openwrt-demo

cat > /etc/config/network <<'EOF'
config interface 'loopback'
    option device 'lo'
    option proto 'static'
    list ipaddr '127.0.0.1/8'

config device
    option name 'br-lan'
    option type 'bridge'
    list ports 'eth1'

config interface 'lan'
    option device 'br-lan'
    option proto 'static'
    list ipaddr '192.168.50.1/24'

config interface 'wan'
    option device 'eth0'
    option proto 'dhcp'
EOF

/etc/init.d/network restart

这里把 eth1 放入 br-lan,LAN 地址配置在桥上;WAN 独立使用 eth0。配置格式见 OpenWrt 网络配置文档。

6. 核对 DHCP 与防火墙

官方镜像通常已有 dhcp.lan 配置。启用 LAN 地址分配:

uci set dhcp.lan.interface='lan'
uci set dhcp.lan.ignore='0'
uci set dhcp.lan.start='100'
uci set dhcp.lan.limit='100'
uci set dhcp.lan.leasetime='12h'
uci commit dhcp
/etc/init.d/dnsmasq restart

检查防火墙配置中的三项:

  • lan zone 包含 lan 网络。
  • wan zone 包含 wan 网络,并启用 IPv4 Masquerading。
  • 存在从 lan 到 wan 的 forwarding。

可在 LuCI 的防火墙页面核对,或在控制台运行 uci show firewall 查看。保留 WAN 侧的入站限制,管理操作从 LAN 侧进行。相关选项见 OpenWrt 防火墙配置文档。

7. 验证联网

在 OpenWrt 中检查 WAN 地址、默认路由和域名解析:

ifstatus wan
ip route
ping -c 4 1.1.1.1
nslookup openwrt.org

再把一台 Linux 测试虚拟机的网卡接入 vmbr1,使用 DHCP 获取地址。客户端应获得 192.168.50.x,默认网关为 192.168.50.1。

ip addr
ip route
ping -c 4 192.168.50.1
ping -c 4 1.1.1.1
nslookup openwrt.org

若镜像包含 LuCI,可在这台 LAN 客户端中访问 http://192.168.50.1。这里的公网测试 IP 可替换成环境中允许访问的目标。

8. 常见问题

现象检查方向
虚拟机无法启动镜像与 BIOS 是否匹配,导入磁盘是否已挂载并启用引导
客户端拿不到地址客户端是否接入 vmbr1,LAN 网卡的 MAC 是否对应正确,DHCP 是否启用
OpenWrt 能联网,客户端不能LAN 到 WAN 转发、WAN Masquerading、客户端默认网关
能访问 IP,不能访问域名WAN 下发的 DNS、dnsmasq 状态和客户端 DNS 设置
配置后访问不到 LAN从虚拟机控制台核对设备名和 IP,必要时恢复备份配置

配置确认后,再通过 PVE 为这台虚拟机做备份,保存可恢复的基础版本。