
家庭开源网关 03|OpenWrt 系统选型:代理、DNS、VPN 与 PBR
比较 OpenWrt、ImmortalWrt 与 iStoreOS 的定位,梳理 HomeProxy、OpenClash、PassWall、DNS、WireGuard 与 PBR 的组件边界和启用顺序。
家庭开源网关 03|OpenWrt 系统选型:代理、DNS、VPN 与 PBR
家庭开源网关系列 · 第 3/8 篇
家庭网关的软件问题经常被简化成“装哪个固件、装哪个插件”。真正决定稳定性的却是另一件事:谁修改 DNS,谁接管 TUN/TPROXY,谁写 nftables 规则,谁决定流量最终走 WAN、代理还是 VPN。
系统和组件都可以更换,但同一条数据路径不应被多套管理器同时控制。
OpenWrt、ImmortalWrt 与 iStoreOS 的定位
OpenWrt:上游基线
OpenWrt 面向嵌入式网络设备,提供可写文件系统、包管理、LuCI 和完整 Linux 网络栈。它的优势是上游文档、设备数据库、标准包生态和长期可维护性。部分中国用户常用的代理插件、镜像源或特定硬件补丁不会默认集成,需要自行核对。
家庭主网关应优先使用正式稳定版。Snapshot 包含最新驱动与改动,但更新节奏快,已安装内核与在线包仓库可能发生 ABI 错配。自编译可以预装软件和初始化配置,却意味着以后要持续维护构建参数与升级路径。
ImmortalWrt:本地化 OpenWrt 分支
ImmortalWrt 官方仓库将项目描述为 OpenWrt 的分支,增加了更多软件包、设备支持、默认优化和面向中国大陆用户的本地化修改。
对于 ARM64 设备、中文环境和代理生态,它通常更省配置时间;但“同一个 SoC 可以运行”不等于精确型号存在稳定镜像,仍然要在对应 Firmware Selector 中确认设备与版本。
iStoreOS:路由与轻 NAS 的图形化组合
iStoreOS 官方仓库把它定位为入门级路由和入门级 NAS 系统,并基于 OpenWrt 扩展应用管理。它适合希望通过界面部署存储和轻服务的用户。
需要注意,当前活跃分支、内核、防火墙后端和插件兼容性都会变化。选择 iStoreOS 时,应以官方支持平台与当前发布说明为准,不要只依据旧教程中的界面和插件列表。
厂商固件与 x86 系统
FriendlyWrt 等厂商固件通常最先支持自家开发板的启动、eMMC、网口和恢复工具,适合新硬件验证与救砖。长期包生态和内核节奏则更依赖厂商。
x86 还可以选择 OPNsense、pfSense、VyOS 或通用 Linux。它们更接近企业防火墙或服务器,但功耗、配置和维护成本也更高。第一次构建家庭网关时,OpenWrt 系列通常更容易形成可恢复的最小系统。
把这些选择放在同一张表里,会比比较界面截图更有用:
| 系统 | 核心定位 | 主要优势 | 主要注意点 | 更适合谁 |
|---|---|---|---|---|
| OpenWrt | 上游通用路由系统 | 标准、文档完整、设备数据库和长期维护清晰 | 本地化代理包可能需要自行处理 | 重视上游、标准和可控性 |
| ImmortalWrt | 本地化 OpenWrt 分支 | 软件包较多,ARM64 与中国用户常用生态更方便 | 仍要核对精确设备与稳定版支持 | 透明代理、自定义和开发板用户 |
| iStoreOS | 路由 + 轻 NAS | 应用管理和图形化体验更完整 | 支持平台、应用依赖和升级行为受自身生态约束 | 希望降低使用门槛并运行轻服务 |
| 厂商固件 | 硬件适配和恢复 | 新硬件启动、驱动、eMMC 与救砖更贴近设备 | 长期内核和包生态依赖厂商节奏 | 新设备验证与恢复 |
| x86 防火墙/通用 Linux | 高性能和企业功能 | 多网口、虚拟化、路由协议与扩展能力强 | 功耗、成本与运维复杂度更高 | 多 WAN、实验室和高强度服务 |
系统名称并不能替代版本信息。同一设备的稳定版、Snapshot、厂商分支和第三方整合镜像可能使用不同内核、分区布局与包仓库。部署记录中应写清楚完整镜像名称、版本、目标架构、文件系统和下载来源,而不只写“装了 OpenWrt”。
系统选择先看这五个问题
| 问题 | 影响 |
|---|---|
| 精确设备是否有官方稳定镜像 | 决定驱动、升级和救砖路径 |
| 是否需要本地化代理与软件包 | 影响 OpenWrt 与 ImmortalWrt 的取舍 |
| 是否在网关运行存储或容器 | 影响 iStoreOS、x86 与独立服务器方案 |
| 是否愿意维护自编译 | 决定能否接受定制镜像 |
| 故障后多久必须恢复上网 | 决定备份介质与系统复杂度 |
不要先根据截图选择系统。先确认硬件支持、升级方式和最小恢复路径,再看界面与插件。
稳定版、Snapshot 和自编译如何取舍
稳定版适合作为家庭主网关基线。它不保证没有缺陷,但包仓库、内核 ABI 和升级路径相对固定,出问题时也更容易找到同版本资料。
Snapshot 适合稳定版尚未支持的新硬件,或者确实需要尚未发布的驱动与功能。它的代价是持续滚动:一段时间后再安装内核相关包,可能遇到仓库包与设备当前内核不匹配。使用 Snapshot 时,应该把所需包预装进镜像或保存可复现构建配置,并准备完整重刷方案。
自编译适合需要固定软件集合、初始化配置或补丁的用户。它带来的并非一次性的编译工作,而是一条长期维护链:源码分支、feeds、配置文件、补丁、构建环境和升级验证都要保存。没有维护这条链的意愿时,少装几个插件的官方稳定镜像往往更可靠。
代理组件只能有一个主控制器
透明代理通常同时涉及:
- DNS 解析与缓存;
- TUN 或 TPROXY 流量接管;
- nftables/iptables 规则;
- 连接跟踪和路由标记;
- 局域网、上游网关和代理服务器地址排除;
- IPv4 与 IPv6 的一致策略。
同时运行多套透明代理插件,最容易出现的不是“性能变慢”,而是规则互相覆盖、DNS 循环、回程错位和升级后依赖冲突。
HomeProxy / sing-box
HomeProxy由 ImmortalWrt 组织维护,官方描述是面向 ARM64/AMD64、由 sing-box 驱动的现代代理平台。它适合希望使用单一核心、并让代理与 ImmortalWrt/firewall4 生态保持一致的用户。
OpenClash
OpenClash 官方仓库将其定义为运行在 OpenWrt 上的 Mihomo/Clash 客户端,提供基于规则的策略代理。它的规则与 UI 生态丰富,但依赖 dnsmasq-full、TUN、TProxy 和防火墙模块,升级时需要同步检查系统分支与依赖。
PassWall / PassWall2
PassWall与PassWall2提供另一类多核心、节点与分流管理方式。它们同样会介入 DNS 和防火墙,因此不应与另一套透明代理管理器同时接管全局流量。
这三类方案不存在脱离硬件、规则数量、节点协议和系统版本的绝对性能排序。长期运行时,依赖可解释、升级可回退、故障时能恢复直连,比功能数量更重要。
选择代理管理器时,可以把问题收敛为四项:目标系统是否提供匹配的软件包;需要的节点协议和规则模式是否支持;DNS 与 IPv6 路径能否解释;升级失败时能否一键停用并恢复直连。不要因为某套 UI 的开关更多,就同时保留另一套作为“备用”并让两者加载规则。真正的备用方案应是可恢复的配置或系统镜像,而不是第二个正在接管数据面的插件。
DNS 链路保持单向
推荐的最小链路是:
终端
→ DHCP 下发的主网关 DNS
→ dnsmasq / 主 DNS 入口
→ 分流解析器或一个加密上游
设计时保留四条约束:
- 客户端只认一个稳定 DNS 入口。
- 局域网名称解析在代理停止时仍然可用。
- 域名分流要说明解析结果怎样进入路由规则。
- IPv6 AAAA 记录不能绕过只处理 IPv4 的代理策略。
没有明确数据流时,不要堆叠 dnsmasq → AdGuard Home → MosDNS → SmartDNS → 代理 DNS。每多一层都会增加缓存不一致、循环和故障定位成本。
DNS 设计还需要回答三个边界问题。
第一,局域网名称由谁维护。NAS、打印机和 Home Assistant 的本地域名最好仍由主网关或明确的内部权威入口解析,不能因为代理进程停止就全部失效。
第二,域名分流怎样影响后续路由。有些方案通过解析结果生成地址集合,再由 nftables 或 PBR 选择出口;有些方案使用 Fake-IP,把域名语义保留给代理核心。两条路线都可以工作,但混用后很难判断一条连接为什么进入某个出口。
第三,失败时怎样回退。加密上游不可达、代理节点离线或过滤服务崩溃时,是自动使用直连 DNS,还是按安全策略拒绝解析?家庭环境通常需要明确的基础回退,避免一个附加服务让所有设备表现为“断网”。
可以用四组查询验证链路:局域网主机名、普通国内域名、需要特定策略的域名以及仅返回或优先返回 IPv6 的域名。每组都记录查询由谁回答、得到什么地址、连接最终走哪个出口。
VPN 与 PBR 解决不同问题
WireGuard 适合让外部手机或笔记本安全进入家庭 LAN,也可以作为网关的远端出口。OpenWrt 官方 WireGuard Server 文档给出了服务端、客户端与防火墙配置路径。
自建 WireGuard 服务端需要外部设备能够找到家庭端点。拥有公网 IPv4、可用公网 IPv6 或可以在上游做端口转发时,可以直接建立入站隧道;处于运营商 CGNAT 且没有可达 IPv6 时,则需要中继、组网服务或一台公网节点。Tailscale、ZeroTier 等方案把节点发现和穿透封装起来,适合不想手工维护公网入口的家庭,但仍要明确账号、控制面、访问规则和故障依赖。
远程接入隧道建立后,不应默认允许访问所有 VLAN。给 VPN 单独建立防火墙区域,只开放管理网段、NAS 或 Home Assistant 等确实需要的服务,既能减少风险,也便于从日志判断远程访问发生了什么。
PBR 则根据策略选择不同路由表。OpenWrt PBR 文档列出的匹配条件包括接口、源/目的地址和防火墙标记。它适合实现:
- 指定设备走 VPN,其余设备走 WAN;
- 指定网段或端口进入另一出口;
- VPN 服务端与客户端同时运行;
- 在一个物理网络内按设备分流。
如果目标只是“部分设备使用不同出口”,PBR 比拆成两个 Wi-Fi 更精确;如果还要限制设备互访,则应结合 VLAN 和防火墙,而不是把分流误当成隔离。
PBR 上线前要准备绕过清单。局域网网段、上游光猫管理地址、DNS 服务、代理或 VPN 服务器自身地址,以及用于健康检查的必要目标,都不应被错误送回隧道形成环路。规则应从单一测试设备开始,依次验证直连目标、策略目标、DNS、IPv4、IPv6 和隧道断开后的回退行为。
一个可审计的策略记录可以很简单:
| 策略对象 | 匹配条件 | 出口 | 失败时行为 |
|---|---|---|---|
| 工作电脑 | 固定租约/IP | 企业 VPN | 拒绝或回退 WAN,按安全要求决定 |
| 流媒体设备 | 设备地址 + 目标集合 | 代理 | 回退直连或提示故障 |
| IoT VLAN | 源网段 | 仅 WAN | 禁止进入管理网和代理内网 |
| 远程接入客户端 | WireGuard 接口 | 家庭 LAN/指定 VLAN | 不允许转发到无关区域 |
当一条规则无法在这四列中写清楚时,先不要把它扩展到全家设备。
推荐的启用顺序
基础路由
→ 稳定 DNS
→ 选择一套代理管理器
→ 单设备验证
→ 扩大到全网
→ 加入 IPv6 策略
→ 配置 VPN / PBR
每完成一个阶段就备份。某一步出现异常时,能够退回上一条已验证路径,比同时修改五个组件更快。
软件栈的最小运行档案
正式接管家庭网络后,保存以下信息:系统版本与镜像来源、已安装包清单、主代理管理器、DNS 调用链、生成规则的组件、VPN 接口与密钥备份位置、PBR 规则说明,以及停用所有附加组件后恢复直连的方法。
每次升级只改变一个层次。先验证基础 WAN/LAN、DHCP 和 DNS,再恢复代理,随后恢复 VPN/PBR,最后才启用广告过滤、统计和其他增强功能。这样即使插件兼容性发生变化,也能知道是哪一层让数据路径偏离预期。
这份档案还应标明每个组件的停止方法和依赖关系。维护者即使隔了半年,也能在不删除配置的前提下停用附加功能,回到可验证的基础网络。
下一篇将回到硬件层,从网口、总线和实际负载比较 ARM 开发板与 x86 网关。