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
接口后流量记录会清零。