- 为何在 OpenWRT 上选择 WireGuard(以及常见的坑)
- 准备工作:固件与硬件要点
- 安装与基本组件说明
- 配置要点(文字说明)
- 防火墙与 NAT:常见误区与正确做法
- MTU、握手与性能调优
- 常见故障与排查步骤
- 场景演示:几种常见部署模式对比
- 安全性与密钥管理建议
- 结尾提示
为何在 OpenWRT 上选择 WireGuard(以及常见的坑)
现代家用与小型办公路由器常常承担着翻墙、分流和内网穿透等功能。WireGuard 以其极简的设计、优秀的性能和较低的延迟成为首选。但在 OpenWRT 环境下快速部署并不是零配置可用:包管理、内核模块、MTU、NAT 与防火墙规则、密钥管理及路由策略等都可能成为排障点。下面结合实战经验,带你从准备、安装、配置到调试与优化逐步走通。
准备工作:固件与硬件要点
首先确认 OpenWRT 版本和设备架构。WireGuard 在较新的 OpenWRT 版本里以内核模块或内建模块形式提供,老旧版本可能需要额外安装 kmod-wireguard。设备 CPU 性能决定了加密吞吐能力,低端路由器(如单核 400MHz)在全速加密流量下容易成为瓶颈。
- 检查内核模块是否支持 WireGuard(通过系统包列表和内核版本判断)。
- 准备好外网 IP、端口映射(若在 NAT 后)以及所需的密钥对生成工具(可在本地电脑生成)。
- 考虑是否需要使用硬件加速或 offload(如果路由器和固件支持)。
安装与基本组件说明
在 OpenWRT 上需要的核心组件通常包括:
- wireguard-tools:提供 wg 命令和密钥管理能力(可在电脑上生成也可在路由器上)。
- kmod-wireguard(或内建模块):实现内核层面的 WireGuard 转发。
- luci-app-wireguard(可选):Web 界面的配置助手,适合不熟命令行的用户。
安装后,关键在于理解三层要素:接口(在 OpenWRT 中通常是一个接口设备)、Peer(对端)与防火墙区(zone)。
配置要点(文字说明)
配置可分为“本端接口设置”和“对端 Peer 设置”两部分。
本端接口需要指定私钥、监听端口与本地地址(WireGuard 虚拟网段,如 10.0.0.1/24)。对端 Peer 则包含对方公钥、允许的地址(AllowedIPs)、以及远端端点(Endpoint)和保持连接的 PersistentKeepalive(针对 NAT 后的客户端)。
AllowedIPs 同时起路由与访问控制作用:单纯的 0.0.0.0/0 将把所有流量发往对端(常用于 VPN 全局路由)。而仅指定对端内网网段用于分流或内网访问。合理配置可以避免路由冲突或流量回环。
防火墙与 NAT:常见误区与正确做法
很多故障源自防火墙 zone 的错误关联或缺失 NAT 规则。
- 将 WireGuard 接口分配到适当的防火墙 zone(通常是 wan 或自定义的 wg zone)。
- 若需要让 WireGuard 客户端访问外网,确保在对应 zone 启用 Masquerading(SNAT)。
- 若路由器本身位于 CGNAT 或路由器后端,需要在上游设备上做端口映射或使用反向隧道。
注意:不要在防火墙中把 AllowedIPs 与 zone 规则混淆。AllowedIPs 控制加密隧道内部允许的路由;防火墙 zone 控制接口间的流量转发与 NAT。
MTU、握手与性能调优
MTU 设置直接影响吞吐和连接可靠性。WireGuard 封装增加头部开销,若 MTU 过大会导致分片或连接不稳。常见策略是将虚拟接口 MTU 设为物理 MTU 减去封装开销(若不想自行计算,可尝试逐步降低 MTU 直至稳定)。
握手频率与 PersistentKeepalive:在 NAT 环境下,客户端应设置合理的 PersistentKeepalive(如 20s)以保持 NAT 映射。服务器端不推荐设置 keepalive,因为不必要的握手会浪费资源。
性能优化还包括开启 UDP offload 或选用更高性能的加密库(依据设备与固件支持),并考虑避免在路由器上同时运行大量 CPU 密集型任务。
常见故障与排查步骤
遇到无法连通或通畅性差的问题时,建议按以下顺序排查:
- 确认本端接口是否存在并处于 UP 状态(检查虚拟 IP 与监听端口)。
- 验证本端与对端密钥是否匹配(公钥与私钥配对、Peer 的 AllowedIPs 设置是否合理)。
- 检查防火墙 zone 与 NAT 规则,确保允许 WireGuard 接口的转发并在必要时启用 Masquerading。
- 如果客户端位于 NAT 后,确认上游是否未阻断 UDP 或是否需要端口映射。
- 排查 MTU 导致的分片问题(通过降低 MTU 观察是否改善)。
- 使用日志与统计(如 wg show 或系统日志)查看握手时间、最近握手时间与数据计数,判断是否有数据包丢失或握手失败。
场景演示:几种常见部署模式对比
在 fq.dog 的实践中,常见有三种部署场景:
- 单一家庭路由器作为客户端:路由器连接远端 WireGuard 服务器,实现全局路由或分流。优点是所有设备透明受益;缺点是单点的加密负载。
- 路由器作为服务器,多个移动客户端连接:适合自建内网访问与远程管理。要点是保证公网端口和 NAT 映射,以及对等的 AllowedIPs 管理。
- 分流场景:路由器同时运行多个 WG 接口,将特定设备或目的地走特定隧道。需要精确的路由表与策略路由支持。
安全性与密钥管理建议
密钥是最关键的资产。私钥应仅保存在可信设备上,避免通过不安全的渠道传输。定期轮换密钥能提高安全性,但同时会带来对等端配置更新的管理开销。对外暴露的端口建议配合 IP 限制或额外的防护策略(例如使用防暴力脚本或 fail2ban 等机制)。
结尾提示
在 OpenWRT 上部署 WireGuard 不仅是安装包的事,更涉及路由、防火墙和网络策略的协同。理解 AllowedIPs 的双重角色、MTU 的影响和 NAT 环境下的保持连接策略,是快速排障与稳定运行的关键。通过逐步排查、调整并监控握手与流量统计,你可以在家用或小型办公室环境中构建既高效又安全的 WireGuard 网络。
暂无评论内容