PVE 中安装 OpenWrt 做旁路由详细教程

🌐 PVE 中安装 OpenWrt 做旁路由详细教程

科学上网 / 广告过滤 / 高级插件,旁路由一网打尽

一、OpenWrt 旁路由简介

1.1 什么是 OpenWrt

OpenWrt 是面向嵌入式设备(通常是路由器)的 Linux 操作系统。它提供了高度可定制的路由功能、丰富的软件包生态,被广泛用于 DIY 软路由、NAS 旁路、科学上网等场景。

1.2 什么是「旁路由」

「旁路由」(Side Router / Gateway)是一种特殊的网络角色:

  • 主路由:仍负责拨号、DHCP、NAT、流量控制(如 iKuai、爱快、ROS)
  • 旁路由:作为内网的一台「网关服务器」,处理特定流量(科学上网、广告过滤、NAS 加速等)
  • 流量走向:内网设备 → 主路由 → 旁路由(部分流量)→ 互联网

💡 核心优势:主路由负责稳定基础网络,旁路由负责高级功能。互不干扰,一键开关旁路由不影响上网。

1.3 OpenWrt 做旁路由的优势

  • 🧩 插件生态极其丰富:PassWall、OpenClash、AdGuardHome、Samba 等 5000+ 插件
  • 🛠️ 高度可定制:从内核到 UI 都能自由修改
  • 🔒 科学上网利器:xray、sing-box、v2ray、trojan、hysteria 等协议一键配置
  • 🚫 广告过滤:AdGuardHome、Adbyby、Plus+ 等多方案
  • 📊 流量分流:国内外流量精准分流,国内直连、国外走代理
  • 🆓 完全开源免费:无任何授权费用
  • 🔄 风险隔离:旁路由挂了不影响基础网络,主路由继续工作

1.4 旁路由 vs 主路由对比

模式角色特点适合
主路由全网网关负责拨号/NAT/DHCP,性能要求高iKuai、爱快、ROS
旁路由辅助网关只处理特定流量,挂掉不影响主网络OpenWrt、iStoreOS
单路由一肩挑所有功能合一,性能压力大iKuai/OpenWrt 直装

推荐方案:iKuai(主路由,稳定高效)+ OpenWrt(旁路由,扩展功能)。本教程基于此方案讲解。

二、网络拓扑设计

2.1 旁路由模式拓扑

在 PVE 中,OpenWrt 旁路由只需要 1 个 LAN 网口,与主路由 iKuai 处于同一内网网段:

┌──────────────────────────────┐ │ 互联网 ISP │ └──────────────┬───────────────┘ │ WAN ▼ ┌──────────────────────────────┐ │ 光猫 / 上级路由 │ │ 192.168.0.1 │ └──────────────┬───────────────┘ │ WAN (vmbr1) ▼ ┌──────────────────────────────────────┐ │ PVE 主机 (192.168.1.10) │ │ ┌────────────────────────────────┐ │ │ │ iKuai 主路由 VM (192.168.1.1) │ │◄── 主路由 │ │ WAN: vmbr1 (连光猫) │ │ │ │ LAN: vmbr0 (连内网) │ │ │ └────────────────────────────────┘ │ │ ┌────────────────────────────────┐ │ │ │ OpenWrt 旁路由 VM (192.168.1.2)│ │◄── 旁路由 │ │ 单 LAN: vmbr0 │ │ │ │ 网关: 192.168.1.1 (iKuai) │ │ │ └────────────────────────────────┘ │ │ 其他 VM/LXC 也在 vmbr0 上 │ └──────────────┬───────────────────────┘ │ LAN (vmbr0) ▼ ┌──────────────────────┐ │ 交换机 │ │ ├─ PC (192.168.1.X) │ │ ├─ 手机/平板 │ │ ├─ NAS │ │ └─ 智能设备 │ └──────────────────────┘

2.2 关键 IP 规划

设备IP 地址角色说明
光猫192.168.0.1上级网络运营商提供
iKuai WAN192.168.0.X主路由 WANDHCP 自动获取
iKuai LAN192.168.1.1主路由 LAN(主网关)内网默认网关
OpenWrt LAN192.168.1.2旁路由(辅助网关)手动设为静态 IP
PVE 管理192.168.1.10PVE Web通过浏览器管理
内网设备192.168.1.100-200终端设备iKuai DHCP 分配

⚠️ 重要:旁路由必须与主路由在同一网段(如 192.168.1.0/24)。这样内网设备才能直接通过它上网。

2.3 两种使用方式

方式配置方法优点缺点
手动指定网关设备手动设网关/DNS 为 192.168.1.2灵活,部分设备用旁路由每台设备都要配置
DHCP 下发(推荐)iKuai DHCP 网关/DNS 改为 192.168.1.2全网自动,零配置全部流量都过旁路由

💡 本教程采用 DHCP 下发方式:iKuai 负责分配 IP,但网关/DNS 指向 OpenWrt,所有设备的特定流量(科学上网)由 OpenWrt 处理,其他流量透传给 iKuai 出网。

三、硬件要求

3.1 旁路由硬件需求

配置项最低推荐(家用)推荐(重度使用)
CPU1 核2 核(Intel N100)4 核+(i3/i5)
内存512 MB1 GB2 GB+
硬盘1 GB4 GB8 GB SSD
网卡1 个1 个千兆(Intel)1 个千兆 + 1 个 2.5G

💡 OpenWrt 旁路由对性能要求比主路由低,因为只处理部分流量。如果只是科学上网 + 广告过滤,1 核 512M 内存就够。OpenClash 等插件吃 CPU 较多,建议至少 2 核。

3.2 在 PVE 中分配资源建议

如果你已经按之前的教程部署了 iKuai,再加一台 OpenWrt:

  • 主机内存 16GB:iKuai 1GB + OpenWrt 1GB + PVE 1GB + 其他 VM 13GB
  • CPU 分配:iKuai 2 核 + OpenWrt 2 核 + PVE 2 核(4 核 CPU 全部用满)
  • 硬盘:OpenWrt 镜像约 200MB,分配 4-8GB 虚拟磁盘足够

四、PVE 网络规划

4.1 网络拓扑回顾

如果你已经按 iKuai 教程配置好了 PVE 网络(vmbr0 = LAN,vmbr1 = WAN),那么旁路由只需要 1 个 LAN 网口,添加到 vmbr0 即可:

┌─────────────────────────────────────┐
│  PVE 网络现状                        │
│  ├─ vmbr0 (LAN) ← 所有内网 VM       │
│  └─ vmbr1 (WAN) ← 只给 iKuai 用     │
└─────────────────────────────────────┘
       ↓
  OpenWrt 旁路由只需添加到 vmbr0

4.2 单网卡方案(推荐)

OpenWrt 旁路由的 WAN 口 不用配置,只在 PVE 中给它一个 LAN 网口即可:

# 查看 PVE 网络现状
cat /etc/network/interfaces

# 应该能看到:
# auto vmbr0    (LAN bridge,所有内网 VM 用)
# auto vmbr1    (WAN bridge,只给 iKuai 用)

提示:旁路由模式下,OpenWrt 实际上扮演的是「网关服务器」角色,不直接处理 WAN 流量,因此只需要一个 LAN 网口即可。

五、下载 OpenWrt 镜像

5.1 选择合适的版本

前往 OpenWrt 官方或第三方社区下载 x86_64 镜像:

  • OpenWrt 官方下载(纯净版,需要自己装插件)
  • ImmortalWrt(中文友好,插件丰富)
  • iStoreOS(基于 OpenWrt,应用商店开箱即用)
  • 推荐:ImmortalWrt x86_64 通用版(稳定、插件多、社区活跃)

5.2 镜像类型说明

镜像类型用途扩展名
combined包含所有分区,可直接写入整个磁盘.img.gz
squashfs只读根文件系统 + 可写 overlay.img.gz
ext4单一 ext4 分区.img.gz

💡 PVE 推荐使用 combined-squashfs 版本,文件小(~10MB),且支持系统重置。

5.3 上传镜像到 PVE

通过 PVE Web 上传,或者 SCP 到 PVE:

# 在本地电脑 SCP 上传(推荐,速度快)
scp openwrt-x86-64-generic-squashfs-combined.img.gz [email protected]:/tmp/

# 或使用 PVE Web:local (pve) → ISO Image → Upload
# 路径:/var/lib/vz/template/iso/

解压镜像:

# SSH 登录 PVE
cd /tmp
gunzip openwrt-x86-64-generic-squashfs-combined.img.gz

六、创建 OpenWrt 虚拟机

6.1 创建 VM 基本信息

在 PVE Web 界面,点击「创建虚拟机」:

  1. 名称:OpenWrt-SideRouter(自定义)
  2. VM ID:101(避免与 iKuai 冲突)
  3. 操作系统:不使用任何介质(稍后手动导入磁盘)

6.2 系统设置

配置项
BIOSOVMF (UEFI) 或 SeaBIOS(推荐 OVMF)
机器q35
EFI 存储local-lvm(仅 UEFI 需要)
SCSI 控制器VirtIO SCSI single

6.3 磁盘设置(关键)

不要在向导里创建磁盘,我们将手动导入 OpenWrt 镜像:

  1. 向导磁盘步骤:删除默认磁盘,设为「无」
  2. VM 创建完成后,使用 qm importdisk 命令导入镜像

6.4 CPU 和内存

配置项推荐值
CPU 核心2 核(type: host)
内存1024 MB(家用足够)
Ballooning关闭(避免性能波动)

6.5 网络设置

关键步骤:添加 1 个网络设备,连接到 vmbr0(LAN Bridge):

配置项
网络设备net0
桥接vmbr0(LAN Bridge,不要选 vmbr1)
模型VirtIO(半虚拟化,性能最佳)
防火墙关闭(PVE 防火墙由主路由负责)

6.6 导入 OpenWrt 磁盘

VM 创建完成后,SSH 到 PVE 导入磁盘镜像:

# 假设 VM ID 是 101,镜像在 /tmp/openwrt-x86-64-generic-squashfs-combined.img
qm importdisk 101 /tmp/openwrt-x86-64-generic-squashfs-combined.img local-lvm -format qcow2

# 导入完成后,在 PVE Web 中:
# 1. 选中 OpenWrt VM → 硬件 → 找到「未使用的磁盘 0」
# 2. 点编辑 → 总线/设备:VirtIO Block 或 SATA → 添加
# 3. 选项 → 引导顺序:勾选新磁盘,置顶

💡 小技巧:如果 VM 启动后没找到磁盘,检查 Options → Boot Order 是否勾选了导入的磁盘。

6.7 启动 VM

一切就绪后,启动 VM 并打开控制台:

  1. 在 PVE Web 中选中 VM → 启动
  2. 点击「控制台」→「noVNC」查看启动过程
  3. 看到 OpenWrt 启动日志,最终进入登录提示符

七、初始化 OpenWrt

7.1 首次登录

启动后,默认用户名 root,密码为空。直接登录:

OpenWrt login: root
Password:   (直接回车)
#
# 已经进入 OpenWrt shell

7.2 查看默认 IP

OpenWrt 默认 LAN 口 IP 是 192.168.1.1,这会与 iKuai 主路由冲突!必须修改:

# 查看网络配置
cat /etc/config/network

# 临时修改 IP(重启后失效)
ifconfig br-lan 192.168.1.2 netmask 255.255.255.0
ifconfig br-lan broadcast 192.168.1.255

⚠️ 重要:必须先改 IP 再访问 Web,否则会与主路由 iKuai(也是 192.168.1.1)冲突,导致无法登录!

7.3 修改默认 IP(永久)

编辑网络配置文件:

vi /etc/config/network

# 找到 config interface 'lan' 段,修改:
config interface 'lan'
    option device 'br-lan'
    option proto 'static'
    option ipaddr '192.168.1.2'        # 旁路由新 IP
    option netmask '255.255.255.0'
    option gateway '192.168.1.1'        # 主路由 iKuai LAN
    option dns '192.168.1.1'            # DNS 用主路由,或用公共 DNS

# 保存退出
# vi 命令:按 i 编辑,Esc → :wq 保存

7.4 重启网络

/etc/init.d/network restart

# 或重启整个系统
reboot

7.5 访问 Web 界面

重启后,浏览器访问:

http://192.168.1.2

🎉 进入 OpenWrt LuCI 界面(OpenWrt 的 Web 管理后台)。首次登录需要设置密码。

八、基础网络配置(旁路由核心)

8.1 设置 root 密码

登录后第一件事:设置 root 密码

  1. 进入「系统」→「管理权」
  2. 点击「修改密码」
  3. 设置一个强密码并保存

8.2 关闭 DHCP 服务(关键)

旁路由模式下,OpenWrt 绝对不能开启 DHCP,否则会和主路由 iKuai 冲突:

  1. 「网络」→「DHCP/DNS」
  2. 在「DHCP 服务器」下的 LAN 接口,取消勾选「忽略此接口」
  3. 或者在「网络」→「接口」→ LAN →「DHCP 服务器」中关闭「启用 DHCP」

⚠️ 强制要求:旁路由必须关闭 DHCP 服务!由主路由 iKuai 统一分配 IP。

8.3 配置 LAN 接口

「网络」→「接口」→ LAN →「编辑」:

字段
IPv4 地址192.168.1.2
IPv4 子网掩码255.255.255.0
IPv4 网关192.168.1.1(iKuai LAN)
DNS 服务器192.168.1.1 或 223.5.5.5
DHCP 服务器关闭

8.4 开启 IP 转发

旁路由的核心功能是转发,必须确保开启:

# SSH 到 OpenWrt 检查
sysctl net.ipv4.ip_forward
# 应该返回 1

# 如果返回 0,临时开启
sysctl -w net.ipv4.ip_forward=1

# 永久开启
uci set firewall.@defaults[0].flow_offloading=1
uci set firewall.@defaults[0].flow_offloading_hw=1
/etc/init.d/firewall restart

8.5 关闭 IPv6(可选)

如果不需要 IPv6,建议关闭以减少复杂性:

  1. 「网络」→「接口」→ LAN →「编辑」→「高级设置」
  2. 「IPv6 分配长度」:禁用
  3. 「网络」→「接口」→「全局网络选项」→「IPv6 ULA 前缀」:清空

九、主路由配合设置(iKuai)

9.1 思路说明

要让内网设备自动走旁路由,有两种方式:

💡 方案 A(推荐):iKuai DHCP 网关/DNS 改为 OpenWrt IP,内网设备自动用旁路由。
方案 B:iKuai 保持原样,特定设备手动设网关/DNS 为 OpenWrt。

9.2 方案 A:iKuai DHCP 下发旁路由

登录 iKuai(http://192.168.1.1):

  1. 「网络设置」→「DHCP 设置」→「DHCP 池」
  2. 找到内网 LAN 网段(一般是 192.168.1.0/24)
  3. 「网关」和「DNS」都改为:192.168.1.2(旁路由 IP)
  4. 保存

⚠️ 重要:这样所有设备的网关都是 OpenWrt,OpenWrt 会再把国内流量转发给 iKuai 出网。如果 OpenWrt 挂了,所有设备断网。可以设置 OpenWrt 故障时自动恢复(高级配置)。

9.3 方案 B:手动指定设备(更稳)

iKuai 保持原样,需要走代理的设备单独配:

  1. 在 PC/手机上:网络设置 → IPv4 → 手动
  2. IP:192.168.1.X(DHCP 静态绑定)
  3. 子网掩码:255.255.255.0
  4. 网关:192.168.1.2(旁路由)
  5. DNS:192.168.1.2(旁路由)

推荐方案 B 的进阶版:iKuai 给特定设备(如客厅电视)下发旁路由网关,其他设备用主路由。

9.4 方案 C:iKuai 静态路由(高级)

在 iKuai 中添加静态路由,让特定网段走旁路由:

  1. iKuai「网络设置」→「静态路由」
  2. 目标网段:0.0.0.0/0(所有流量)
  3. 下一跳:192.168.1.2(旁路由)

十、必备插件安装

10.1 在线安装插件

「系统」→「Software」(软件包)→ 刷新列表后搜索插件名 → 安装。

10.2 SSH 命令行安装

更推荐用 SSH,安装更快:

# SSH 登录 OpenWrt
ssh [email protected]

# 更新软件源
opkg update

# 安装中文界面
opkg install luci-i18n-base-zh

# 安装常用工具
opkg install curl wget nano htop

10.3 必装插件清单

插件名功能是否必装
luci-app-passwall科学上网(核心)⭐ 必装
luci-app-openclashClash 高级代理推荐
luci-app-adguardhomeDNS 广告过滤⭐ 必装
luci-app-samba4文件共享可选
luci-app-ddns动态域名解析推荐
luci-app-upnp自动端口映射可选

10.4 离线安装(备选)

如果在线安装失败,可下载 .ipk 文件手动安装:

# 上传到 OpenWrt
scp xxx.ipk [email protected]:/tmp/

# 安装
opkg install /tmp/xxx.ipk

# 强制安装(忽略依赖)
opkg install /tmp/xxx.ipk --force-depends

十一、PassWall 科学上网

11.1 安装 PassWall

# 添加 PassWall 源(ImmortalWrt 自带,官方源可能没有)
# ImmortalWrt 仓库自带 luci-app-passwall
opkg update
opkg install luci-app-passwall
# 如果提示依赖问题,按提示安装依赖
opkg install luci-app-passwall ipt2socks tcping xray-core sing-box

11.2 添加节点

「服务」→「PassWall」→「节点」:

  1. 点击「添加」
  2. 类型:选择你的协议(Vmess / VLESS / Trojan / Hysteria 等)
  3. 填入服务器地址、端口、UUID、加密方式、TLS 等
  4. 保存

11.3 配置 TCP 节点

「TCP 节点」页:

配置项推荐值
TCP 节点选择刚刚添加的节点
本地监听127.0.0.1:1234
传输tcp

11.4 配置分流规则

「访问控制」页(关键):

  1. 「分流模式」:选择「GFW列表」或「大陆白名单」
  2. 「大陆白名单」:国内 IP 段直连(推荐)
  3. 「广告过滤」:开启 AdGuardHome 联动

💡 推荐使用「大陆白名单」模式:国内网站直连(快),国外网站走代理。维护简单,体验最佳。

11.5 启动并测试

  1. 「服务」→「PassWall」→「运行状态」→ 启动
  2. 访问 https://www.google.com 测试
  3. 访问 https://www.baidu.com 确认国内正常

十二、广告过滤(AdGuardHome)

12.1 安装 AdGuardHome

# 安装 luci 界面
opkg install luci-app-adguardhome

# 或手动安装最新版本
ARCH="x86_64"
AGH_VER="0.107.43"
wget -O /tmp/agh.tar.gz "https://github.com/AdguardTeam/AdGuardHome/releases/download/v${AGH_VER}/AdGuardHome_linux_${ARCH}.tar.gz"
tar -xzf /tmp/agh.tar.gz -C /tmp/
mv /tmp/AdGuardHome /opt/
chmod +x /opt/AdGuardHome/AdGuardHome

# 启动
/opt/AdGuardHome/AdGuardHome -s install

12.2 访问配置界面

浏览器打开:

http://192.168.1.2:3000

首次访问会进入初始化向导:

  1. 设置管理端口:3000
  2. 设置 DNS 端口:53(会被 OpenClash/PassWall 占用,注意)
  3. 设置用户名密码

12.3 配置上游 DNS

「设置」→「DNS 设置」→「上游 DNS 服务器」:

# 国内 DNS(解析速度快)
223.5.5.5
119.29.29.29
2400:3200::1

# 国外 DNS(解析国外域名准确)
1.1.1.1
8.8.8.8

12.4 添加过滤规则

「过滤器」→「DNS 拦截列表」→「添加阻止列表」:

12.5 设备 DNS 指向 AdGuardHome

在 OpenWrt 中,将 LAN 设备 DNS 改为 AdGuardHome:

  1. 「网络」→「接口」→ LAN →「编辑」
  2. 「高级设置」→「使用自定义的 DNS 服务器」
  3. 填入:127.0.0.1(AdGuardHome 监听本地)

🎉 效果:所有设备 DNS 解析时自动过滤广告域名,App 内置广告、网页弹窗广告都能屏蔽。

十三、安全与优化

13.1 防火墙安全

「网络」→「防火墙」→「一般设置」:

配置项推荐值
入站数据拒绝
出站数据接受
转发接受
LAN 区域接受所有

13.2 远程访问安全

「系统」→「管理权」→「SSH 访问」:

  1. 修改 SSH 端口(默认 22,可改 2222)
  2. 禁用 root 密码登录,启用密钥登录
  3. 「允许远程访问」:限制为 LAN IP 段(192.168.1.0/24)

13.3 性能优化

# 开启 BBR 加速(提升代理速度)
opkg install kmod-tcp-bbr
uci set network.globals.bbr=1
/etc/init.d/network restart

# 开启软件加速
uci set firewall.@defaults[0].flow_offloading=1
uci set firewall.@defaults[0].flow_offloading_hw=1
/etc/init.d/firewall restart

# DNS 缓存优化
uci set dhcp.@dnsmasq[0].cachesize=10000
/etc/init.d/dnsmasq restart

13.4 自动备份

「系统」→「备份/升级」→「备份」:

  1. 点击「生成备份」,下载配置文件
  2. 建议每周备份一次,保存到 NAS
  3. 配置变更前先备份

13.5 旁路由故障转移(高级)

在 OpenWrt 中配置健康检查脚本,旁路由挂了自动恢复:

# 创建监控脚本
cat > /etc/ping.sh << 'EOF'
#!/bin/sh
if ! ping -c 3 -W 2 192.168.1.1 > /dev/null 2>&1; then
    logger "Main router down, restarting network"
    /etc/init.d/network restart
fi
EOF
chmod +x /etc/ping.sh

# 添加 crontab 每 5 分钟检查
echo "*/5 * * * * /etc/ping.sh" >> /etc/crontabs/root
/etc/init.d/cron enable

十四、常见问题 FAQ

Q1:无法访问 OpenWrt Web?

检查:① IP 是否冲突(OpenWrt 和 iKuai 不能同 IP);② 网卡是否桥接到 vmbr0;③ 控制台是否能登录 SSH;④ PVE 防火墙是否拦截。

Q2:OpenWrt 启动后没网?

检查:① LAN 网关是否设为 iKuai(192.168.1.1);② IP 转发是否开启;③ DNS 是否配置正确。

Q3:科学上网生效但很慢?

尝试:① 切换节点协议(VLESS-WS > Trojan > SS);② 开启 BBR 加速;③ 检查是否启用分流(国内流量不要走代理);④ 节点带宽是否足够。

Q4:DHCP 冲突怎么办?

严格关闭 OpenWrt 的 DHCP 服务,所有 IP 由 iKuai 分配。检查:网络 → 接口 → LAN → DHCP 服务器 → 关闭。

Q5:OpenWrt 挂了整个网络瘫痪?

两种解法:① 设备手动把网关改回 192.168.1.1;② 配置 OpenWrt 健康检查脚本(见 13.5);③ 用方案 B(iKuai 不下发 OpenWrt 网关,只特定设备用)。

Q6:AdGuardHome 和 PassWall DNS 冲突?

通常用 PassWall 监听 127.0.0.1:53,AdGuardHome 监听 5353。让 OpenWrt DHCP 下发 192.168.1.2:53(PassWall),PassWall 上游指向 AdGuardHome。

Q7:如何升级 OpenWrt?

「系统」→「备份/升级」→「刷写固件」→ 上传新镜像 → 保留配置刷写。建议每月升级一次安全补丁。

Q8:iKuai 主路由和 OpenWrt 旁路由哪个更稳?

iKuai 是商业级软路由,稳定性最佳。OpenWrt 旁路由是补充功能。这种组合既稳定又强大,是国内家庭网络的黄金方案。

🎊 恭喜!你的 PVE + iKuai + OpenWrt 双软路由方案已经搭建完成。享受稳定基础网络 + 强大扩展功能!

免责声明:本教程仅供学习参考,科学上网请遵守当地法律法规。

Leave a Reply

Your email address will not be published. Required fields are marked *