WireGuard 是一种现代、快速且安全的虚拟专用网络(VPN)通信协议和免费开源软件。
WireGuard 的设计目标在于易于使用、高速性能和低攻击面。它利用了最新的加密技术,旨在提供比 IPsec 和 OpenVPN 等传统VPN协议更好的性能和更强大的功能。WireGuard 的核心代码相对精简,被 Linux 之父 Linus Torvalds 称为 艺术品,其核心代码只有四千多行。
此外,WireGuard 协议通过 UDP 传递流量,使其在速度和安全性方面具有显著优势。它被设计为简单、高效,并适用于从低端设备如树莓派到高端服务器的广泛环境。
这玩意简单、灵活,怪不得会被
Linus Torvalds直接合入内核。本文记录的是WireGuard的一种用法。
如果主要使用场景是移动端,可以使用配置为 TCP 协议的 OpenVPN,稳定性比 UDP 协议的隧道好一些。
传送门在此:OpenWrt 图形化搭建 OpenVPN 服务
安装软件包
在 OpenWrt 中安装 luci-proto-wireguard 和 qrencode 两个包。


其中 luci-proto-wireguard 是用于支持 WireGuard 的核心包,qrencode 用来生成展示客户端的二维码。
!!!安装后重启一次 OpenWrt,否则无法进行下一步!!!
配置服务
创建接口
和 OpenVPN 不一样,WireGuard 在 OpenWrt 中是作为一种接口的存在。要开启 WireGuard 首先是需要创建对应的接口。

在 网络 的 接口 界面,点击 添加新接口 创建。协议选择 WireGuard VPN。
接下来配置接口。



编辑接口,配置公私钥、配置监听端口、配置隧道的 IP 以及防火墙(防火墙也可以后面单独配置)。公私钥如果已经持有直接填写即可,如果没有可以点击 生成新的密钥对 快速创建。
添加对端
WireGuard 可以快速的搭建星型网络隧道。这里它作为服务器,需要给它添加对端(这个场景可以理解为客户端)。


在接口的 对端 界面,点击 添加对端。
需要给 对端 配置公私钥、预共享密钥(建议设置)、允许的IP 和 持续 Keep-Alive。在国内,一般 Peer 都是在 NAT 之中,建议给设置上 持续 Keep-Alive 来保持 UDP 在 NAT 中的有效性。
防火墙配置
和 OpenVPN 类似,防火墙部分也需要两个步骤。
配置虚拟网卡策略
在创建接口时如果没有创建防火墙的 区域 则现在可以创建一个,关联上 WireGuard 的接口。继续配置新增加的 区域。

在新增加的区域中将 lan 网络组合在一起,然后将 入站数据、出站数据 和 转发 都给放行,转发区域选择 lan 和 wan。
当然,也可以通过修改现有的 lan 区域将 WireGuard 的接口绑定到一起,效果是类似的。
配置防火墙的要点:
- 如果需要局域网内设备普通情况下可以直接和隧道内设备通讯,则需要满足
lan和WireGuard的接口绑定在同一个区域。 - 如果需要隧道内设备可以和局域网内设备通讯,则需要满足
WireGuard的接口放行了向lan或OpenWrt(即不指定)的转发。
配置工作端口入站放行
正常情况下通过 wan 口的外网是访问不了 51820 端口的。

在防火墙 通信规则 中新增加对 wan 口 51820 端口的放行策略。
扫码连接
到这里,OpenWrt 的 WireGuard 就配置完毕了,接下来就可以在客户端中发起连接了。

在 WireGuard 接口的 对端 中打开目标对端的详情页,点击 生成配置 按钮,此页面上半部分设置导出给客户端配置的 连接端点、路由、DNS 和 IP 等信息,下半部分则是对应的配置二维码。
如果你的 OpenWrt 配置了 DDNS,那么 连接端点 可以自动带出域名可供选择。
当然,这些信息是为了快速配置客户端用的。这些信息也可以在客户端手动修改。
什么?!配置不生效
在 OpenWrt 只保存 WireGuard 配置是无效的!!!
修改 WireGuard 配置之后必须重启 WireGuard 程序来应用配置,在 OpenWrt 对应操作是重启 WireGuard 的接口。
下面这些动作会导致配置变化,都需要保存配置后重启 WireGuard 接口来应用配置:
- 增加
Peer条目 - 修改
Peer信息 - 删除
Peer条目
这些动作不会引起配置变化:
- 导出
Peer条目
重启
WireGuard接口后流量记录会清零。