🌐 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 处于同一内网网段:
2.2 关键 IP 规划
| 设备 | IP 地址 | 角色 | 说明 |
|---|---|---|---|
| 光猫 | 192.168.0.1 | 上级网络 | 运营商提供 |
| iKuai WAN | 192.168.0.X | 主路由 WAN | DHCP 自动获取 |
| iKuai LAN | 192.168.1.1 | 主路由 LAN(主网关) | 内网默认网关 |
| OpenWrt LAN | 192.168.1.2 | 旁路由(辅助网关) | 手动设为静态 IP |
| PVE 管理 | 192.168.1.10 | PVE 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 旁路由硬件需求
| 配置项 | 最低 | 推荐(家用) | 推荐(重度使用) |
|---|---|---|---|
| CPU | 1 核 | 2 核(Intel N100) | 4 核+(i3/i5) |
| 内存 | 512 MB | 1 GB | 2 GB+ |
| 硬盘 | 1 GB | 4 GB | 8 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 界面,点击「创建虚拟机」:
- 名称:OpenWrt-SideRouter(自定义)
- VM ID:101(避免与 iKuai 冲突)
- 操作系统:不使用任何介质(稍后手动导入磁盘)
6.2 系统设置
| 配置项 | 值 |
|---|---|
| BIOS | OVMF (UEFI) 或 SeaBIOS(推荐 OVMF) |
| 机器 | q35 |
| EFI 存储 | local-lvm(仅 UEFI 需要) |
| SCSI 控制器 | VirtIO SCSI single |
6.3 磁盘设置(关键)
不要在向导里创建磁盘,我们将手动导入 OpenWrt 镜像:
- 向导磁盘步骤:删除默认磁盘,设为「无」
- 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 并打开控制台:
- 在 PVE Web 中选中 VM → 启动
- 点击「控制台」→「noVNC」查看启动过程
- 看到 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 密码
- 进入「系统」→「管理权」
- 点击「修改密码」
- 设置一个强密码并保存
8.2 关闭 DHCP 服务(关键)
旁路由模式下,OpenWrt 绝对不能开启 DHCP,否则会和主路由 iKuai 冲突:
- 「网络」→「DHCP/DNS」
- 在「DHCP 服务器」下的 LAN 接口,取消勾选「忽略此接口」
- 或者在「网络」→「接口」→ 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,建议关闭以减少复杂性:
- 「网络」→「接口」→ LAN →「编辑」→「高级设置」
- 「IPv6 分配长度」:禁用
- 「网络」→「接口」→「全局网络选项」→「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):
- 「网络设置」→「DHCP 设置」→「DHCP 池」
- 找到内网 LAN 网段(一般是 192.168.1.0/24)
- 「网关」和「DNS」都改为:
192.168.1.2(旁路由 IP) - 保存
⚠️ 重要:这样所有设备的网关都是 OpenWrt,OpenWrt 会再把国内流量转发给 iKuai 出网。如果 OpenWrt 挂了,所有设备断网。可以设置 OpenWrt 故障时自动恢复(高级配置)。
9.3 方案 B:手动指定设备(更稳)
iKuai 保持原样,需要走代理的设备单独配:
- 在 PC/手机上:网络设置 → IPv4 → 手动
- IP:192.168.1.X(DHCP 静态绑定)
- 子网掩码:255.255.255.0
- 网关:192.168.1.2(旁路由)
- DNS:192.168.1.2(旁路由)
✅ 推荐方案 B 的进阶版:iKuai 给特定设备(如客厅电视)下发旁路由网关,其他设备用主路由。
9.4 方案 C:iKuai 静态路由(高级)
在 iKuai 中添加静态路由,让特定网段走旁路由:
- iKuai「网络设置」→「静态路由」
- 目标网段:0.0.0.0/0(所有流量)
- 下一跳: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-openclash | Clash 高级代理 | 推荐 |
| luci-app-adguardhome | DNS 广告过滤 | ⭐ 必装 |
| 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」→「节点」:
- 点击「添加」
- 类型:选择你的协议(Vmess / VLESS / Trojan / Hysteria 等)
- 填入服务器地址、端口、UUID、加密方式、TLS 等
- 保存
11.3 配置 TCP 节点
「TCP 节点」页:
| 配置项 | 推荐值 |
|---|---|
| TCP 节点 | 选择刚刚添加的节点 |
| 本地监听 | 127.0.0.1:1234 |
| 传输 | tcp |
11.4 配置分流规则
「访问控制」页(关键):
- 「分流模式」:选择「GFW列表」或「大陆白名单」
- 「大陆白名单」:国内 IP 段直连(推荐)
- 「广告过滤」:开启 AdGuardHome 联动
💡 推荐使用「大陆白名单」模式:国内网站直连(快),国外网站走代理。维护简单,体验最佳。
11.5 启动并测试
- 「服务」→「PassWall」→「运行状态」→ 启动
- 访问 https://www.google.com 测试
- 访问 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
首次访问会进入初始化向导:
- 设置管理端口:
3000 - 设置 DNS 端口:
53(会被 OpenClash/PassWall 占用,注意) - 设置用户名密码
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 拦截列表」→「添加阻止列表」:
- anti-ad(中文推荐)
- AdAway
- StevenBlack
12.5 设备 DNS 指向 AdGuardHome
在 OpenWrt 中,将 LAN 设备 DNS 改为 AdGuardHome:
- 「网络」→「接口」→ LAN →「编辑」
- 「高级设置」→「使用自定义的 DNS 服务器」
- 填入:
127.0.0.1(AdGuardHome 监听本地)
🎉 效果:所有设备 DNS 解析时自动过滤广告域名,App 内置广告、网页弹窗广告都能屏蔽。
十三、安全与优化
13.1 防火墙安全
「网络」→「防火墙」→「一般设置」:
| 配置项 | 推荐值 |
|---|---|
| 入站数据 | 拒绝 |
| 出站数据 | 接受 |
| 转发 | 接受 |
| LAN 区域 | 接受所有 |
13.2 远程访问安全
「系统」→「管理权」→「SSH 访问」:
- 修改 SSH 端口(默认 22,可改 2222)
- 禁用 root 密码登录,启用密钥登录
- 「允许远程访问」:限制为 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 自动备份
「系统」→「备份/升级」→「备份」:
- 点击「生成备份」,下载配置文件
- 建议每周备份一次,保存到 NAS
- 配置变更前先备份
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 双软路由方案已经搭建完成。享受稳定基础网络 + 强大扩展功能!
免责声明:本教程仅供学习参考,科学上网请遵守当地法律法规。