OpenWrt 上设置 VPN:WireGuard 与 OpenVPN
一份实用的 OpenWrt 指南,讲如何添加 WireGuard 或 OpenVPN 客户端:装什么包,接口与防火墙区域如何配合,如何做断网保护,以及怎样检测泄露。
阅读约 11 分钟更新于 2026年10月15日作者:XPASS Editorial Team

OpenWrt 是一个免费、开源的路由器操作系统。你得到的不是厂商写死的菜单,而是一个带软件包管理器的小型 Linux 系统、名为 LuCI 的网页界面,以及可以当作纯文本阅读的配置模型。这种灵活性,正是搜索“OpenWrt VPN”的人通常熟悉网络的原因:路由器几乎什么都能做,但没有什么是替你做好的。
本文介绍如何在 OpenWrt 上用 WireGuard 或 OpenVPN 配置 VPN 客户端,讲清接口与防火墙区域如何配合,演示如何构建断网保护,并涵盖 DNS、MTU 和测试。我们不保证某项 VPN 服务一定能这样使用:XPASS 尚未验证过路由器方案,受支持的方式是免费的 VPNclient 应用。如果想先看一份不绑定固件的概述,请阅读路由器 VPN 指南。
先确认你的 OpenWrt 设备胜任
安装任何东西之前,先回答三个问题。
- 路由器是否受支持,并运行着当前版本? 记下 LuCI 概览页面显示的版本,与项目网站上列出的版本对比。旧版本会缺少修复。
- 存储空间够吗? VPN 软件包需要闪存空间。只剩几兆空间的廉价设备可能装不下带依赖库的 OpenVPN;WireGuard 要小得多。在概览页面或用命令
df -h查看剩余空间。 - 处理器够强吗? 加密是 CPU 的活。性能一般的单核设备,通过隧道可能只能跑到线路速度的一小部分。带加密加速的硬件或更快的芯片会更从容。决定之前先实测。
同时备份你的配置。在 LuCI 里,系统菜单下的备份选项会下载一个包含你全部设置的压缩包。请保存在电脑上,而不是路由器上。
最后是访问方面:确保你可以用网线连上路由器,以防防火墙改错导致你从 Wi-Fi 上被挡在外面。OpenWrt 有用于恢复的 failsafe 模式,但最好永远用不上。

理解 OpenWrt 如何组织网络
OpenWrt 把其他固件常常混在一起的三个概念分开了。
- **接口(Interface)**是逻辑网络。常见的有 LAN(你的家)、WAN(互联网一侧),以及你另外创建的,例如 VPN 接口。
- **设备(Device)**是背后的物理或虚拟端口和隧道。
- **防火墙区域(Firewall zone)**把接口分组,并规定它们之间可以转发什么。典型默认值是允许 LAN 转发到 WAN,并阻止从 WAN 进来的流量。
VPN 客户端其实就是一个新接口加一个新的防火墙区域。来自 LAN 的流量被允许转发进 VPN 区域,之后由路由表决定哪些流量真正走隧道。家庭网络使用 RFC 1918 所述的私有地址,所以要让 LAN 的地址段与 VPN 一侧不同,避免重叠。
如果你对这个模型还陌生,开始前不妨花几分钟在 LuCI 里逛逛“网络”“接口”和“防火墙”。后文假定你能找到这些页面。
安装软件包
不同版本的包管理器不同:较旧的版本用 opkg,较新的用 apk,所以请查阅项目文档,找到和你的版本匹配的命令。在 LuCI 中,“系统”下的“软件包”页面可以更新包列表并按名称搜索。
对于 WireGuard,一般需要 WireGuard 工具和 LuCI 的协议支持包;对于 OpenVPN,需要用你选定的加密库编译的 OpenVPN 包及其 LuCI 应用。具体包名见项目的软件包列表。要点如下:
- 先在可信的连接上更新包列表。
- 只装需要的。每多一个包就多占一份闪存空间。
- 如果之后 LuCI 里没出现新的接口类型,就重启或重启网络服务;协议下拉菜单里没有新协议时,清一下浏览器缓存。
格式的细节见 WireGuard 官网和 OpenVPN 社区资源。当两种都可行时,可参考 WireGuard 与 OpenVPN 对比来选择。
VPN 服务必须提供什么
OpenWrt 需要原始信息,而不是应用登录。典型的信息集合如下:
| 隧道类型 | 通常会收到什么 |
|---|---|
| WireGuard | 你自己的私钥和服务端公钥、隧道地址、带端口的服务器端点,以及允许的地址范围 |
| OpenVPN | 一个配置文件,常含证书,若服务使用的话还有用户名和密码 |
你的服务能提供哪一种,要问服务本身。对 XPASS 而言,“My Pass”页面显示适用于你通行证的设置说明和连接方式,应用使用页面上的用户名和密码登录。我们没有测试过 OpenWrt,所以不要想当然地认为这些信息适用。永远不要把私钥贴到公开论坛、截图或聊天里,把它当作密码。
配置 WireGuard 客户端
LuCI 的路径是:网络、接口、添加新接口,选择 WireGuard 协议,然后填入信息。网络配置文件里的文本形式大致如下,大写部分是占位符:
config interface 'vpn'
option proto 'wireguard'
option private_key 'YOUR_PRIVATE_KEY'
list addresses 'TUNNEL_ADDRESS/32'
option mtu '1380'
config wireguard_vpn
option public_key 'SERVICE_PUBLIC_KEY'
option endpoint_host 'SERVER_ADDRESS'
option endpoint_port 'PORT'
option route_allowed_ips '1'
list allowed_ips '0.0.0.0/0'
option persistent_keepalive '25'
各部分的作用:
- private_key 和 addresses 标识隧道里你这一侧。
- public_key 和 endpoint 标识服务端,请原样复制。
- allowed_ips 0.0.0.0/0 配合 route_allowed_ips,告诉路由器把所有 IPv4 流量送进隧道;更窄的范围则只送部分目的地。
- persistent_keepalive 帮助隧道穿过路由器前面的 NAT 网关。
- mtu 设得稍低,为隧道开销留出空间,必要时之后再调整。
应用更改后,在 LuCI 或用命令 wg show 查看状态。出现最近的握手时间,说明两端已经找到彼此;没有握手通常意味着密钥不对、端点不对或端口被阻断。
配置 OpenVPN 客户端
对于 OpenVPN,在 LuCI 的 OpenVPN 部分上传或粘贴配置文件,或把文件放进 OpenVPN 的配置目录。然后为隧道设备创建一个接口,否则防火墙没有可以挂靠区域的对象。
要点:
- 如果服务需要用户名和密码,把它们存放在权限受限的单独 auth 文件里,并在配置中引用。
- 确认配置不会推送你没预料到的路由。逐行审阅文件,不要盲目信任。
- 启动实例并阅读日志。成功启动的结尾会有表示初始化完成的信息。
- 确认隧道设备存在,然后把它分配给一个新接口,这样才能把它放进防火墙区域。
OpenVPN 提供了很多设置,但在基础隧道稳定之前,别急着调优。一次只改一处,并记下来。
防火墙区域、路由与断网保护
这是整个配置的核心。
- 创建防火墙区域,以隧道命名,VPN 接口作为唯一成员。启用伪装(masquerading),让 LAN 设备共用隧道地址,并启用 MSS 钳制。
- 允许从 LAN 转发到 VPN 区域。
- 删除从 LAN 到 WAN 的转发。 这就是断网保护。只剩 LAN 到 VPN 的转发时,设备只有在隧道开启时才有出网路径;隧道一断,数据包就无处可去。
- 保证路由器自身仍可访问。 WAN 区域仍要能到达 VPN 端点,因为隧道是承载在你的正常互联网连接上的。路由器自身的流量与被转发的流量是分开的,所以这样可行。
- 应用并测试,最好在有线连接的设备上进行。
这里的思路与VPN 断网保护一文所述相同:故障时关闭,而不是开放。代价是隧道不稳定时设备会断网,而不是悄悄回退。
如果希望某些设备或目的地绕过隧道,OpenWrt 可通过额外的软件包和规则实现基于策略的路由。这是进阶话题:记下你排除了哪些地址,先在 DHCP 设置中保留这些地址,并在每次修改后测试。

DNS、IPv6 与 MTU
有三个细节常常决定一套配置是否可信。
DNS。 如果设备仍然向运营商请求域名解析,你访问的目的地仍然会被它看到。把路由器的 DNS 转发指向能通过隧道访问的解析器,或你的 VPN 服务提供的解析器,并用测试检查。DNS 泄露一文说明了该看什么。
IPv6。 如果运营商提供 IPv6,而你的隧道只承载 IPv4,设备可能在隧道之外使用 IPv6。要么让 IPv6 也走隧道(前提是你的信息支持),要么在使用 VPN 期间关闭 LAN 上的 IPv6。完整的情况参见 IP 泄露。
MTU。 隧道会增加开销,在普通连接上刚好合适的数据包,在隧道里可能过大。症状是网页只加载一半、大文件下载停滞,以及 HTTPS 网站卡住。其机制见 RFC 1191。一点点调小隧道 MTU,重新测试,并保持 MSS 钳制开启。
测试、监控与排错
每次修改之后都做下面这些检查。
- **握手或日志:**隧道报告最近成功连接过。
- **公网 IP:**LAN 中的设备显示的公网 IP 与之前不同。关闭隧道对比一下。
- **DNS 测试:**测试网站看到的解析器属于隧道路径,而不是运营商的。
- **断网保护测试:**禁用隧道接口,设备应该断网,而不是继续可用。
- **重启测试:**重启路由器,确认一切无需手动操作就恢复。设置接口开机启用。
- **速度测试:**在有线连接的电脑上,分别在关闭和开启隧道时测速。
如果出现故障:
- **没有握手:**重新检查密钥、端点和端口。确认路由器的时钟正确。
- **有握手但没有流量:**检查允许地址、伪装和转发规则。
- **能用,过一阵子就不行:**加上 keepalive,检查 WAN 地址是否变化,并查看系统日志。
- **慢:**与另一种隧道类型对比,减少走隧道的内容,或者接受 CPU 就是上限。
- **把自己锁在外面:**用网线,或启动进入 failsafe 模式,然后恢复之前保存的备份。
局限与合理预期
- 路由器上的隧道只保护家里的设备,出了门的笔记本需要自己的应用。
- OpenWrt 在给你能力的同时也给你责任。防火墙配置错误可能暴露你的网络。
- 更新可能改变软件包和行为。请阅读发行说明,并保留配置备份。
- 它不能阻止钓鱼或弱密码,也不会让你匿名。
- 速度取决于 CPU 和隧道类型。
- 网站和应用仍有各自的规则,有些会不信任 VPN 地址。
总结
在 OpenWrt 上运行 VPN 客户端,意味着根据服务提供的信息选择 WireGuard 或 OpenVPN,装好对应的软件包,创建接口和专用防火墙区域,通过删除 LAN 到 WAN 的转发实现断网保护,再处理好 DNS、IPv6 和 MTU。每次修改后都要测试,保留备份,并预期路由器的 CPU 会决定速度上限。XPASS 尚未验证过路由器方案。
如果你想要更简单的方式,在每台设备上用应用就不需要这些步骤,价格页面也说明了固定天数的预付通行证是如何运作的。
常见问题
在 OpenWrt 上设置 VPN 一定要用命令行吗?
不一定。LuCI 网页界面可以安装软件包、创建 WireGuard 或 OpenVPN 接口并编辑防火墙区域。命令行更方便查看状态、读取日志和快速应用配置,许多教程使用它是因为文字便于分享。
OpenWrt 上该选 WireGuard 还是 OpenVPN?
选你的 VPN 服务提供了相应信息的那一种。如果两者都可行,WireGuard 通常对性能较弱的路由器处理器更轻,而 OpenVPN 被更多服务支持,选项也更丰富。选择还取决于路由器的 CPU 和可用存储空间。
隧道断开时如何避免流量泄露?
在防火墙里做断网保护:只允许 LAN 区域转发到 VPN 区域,并删除 LAN 到 WAN 的转发。隧道断开时就没有任何被允许的上网路径,设备会断网而不是泄露。
XPASS 能在 OpenWrt 上使用吗?
XPASS 尚未验证过路由器方案,所以不能保证。受支持的方式是 iOS、Android、Windows 和 macOS 上的 VPNclient 应用,“My Pass”页面会显示适用于你通行证的连接信息和方式。
为什么经过隧道后有些网页只加载一半?
这是 MTU 不匹配的典型表现。请逐步调小隧道接口的 MTU 并重新测试,同时考虑在 VPN 防火墙区域启用 MSS 钳制。
参考资料
关于作者

Bob Kanokphon Thongdee
- XPASS VPN 创始人
- eSIMonline.asia 联合创始人
- 7 年以上网络营销经验
- Cojourney Visa 与 Cojourney Travel 创始人
继续阅读

VPN 安全
WireGuard 与 OpenVPN 有什么区别
WireGuard 和 OpenVPN 都能建立加密隧道,但设计、复杂度和灵活性不同。本文用通俗的方式比较,并说明该怎样选择。
阅读约 9 分钟

VPN 安全
什么是 IP 泄漏?IPv4 与 IPv6 泄漏详解
VPN 已连接,网站却可能仍然看到你的真实 IP 地址。本文说明 IPv4 与 IPv6 泄漏是怎么发生的、如何测试,以及该怎么处理。
阅读约 9 分钟


