WireGuard的优势
优势
相比于传统的VPN解决方案,WireGuard具有以下显著优势:
- 更高的性能:WireGuard使用现代加密技术和精简的代码实现,使其在性能上明显优于OpenVPN和其他传统VPN协议。它能够更快地建立连接,并在相同的硬件上提供更高的吞吐量和更低的延迟。
- 更强的安全性:WireGuard设计之初就采用了最新的加密算法,如ChaCha20和Poly1305,确保数据传输的安全性。其代码库较小,减少了潜在的漏洞和攻击面。
- 易于配置和使用:相比于OpenVPN较为复杂的配置文件和参数,WireGuard的配置更加直观和简洁。一个简单的配置文件就可以完成大部分设置,使其非常适合没有太多技术背景的用户。
- 跨平台支持:WireGuard不仅支持Linux,还支持Windows、macOS、iOS和Android等多种操作系统,方便用户在不同设备上实现无缝连接。
- 更低的资源占用:由于其高效的设计,WireGuard在运行时占用的系统资源更少,特别适合资源有限的嵌入式设备,如路由器和单板计算机。
准备
软件
需要您的网络环境有公网IP。
我这里用的是x86软路由安装自编译的OpenWrt进行演示,较新版本的OpenWrt/ImmortalWrt/iStoreOS等都可以使用。
路由需要安装WireGuard支持,进入路由器-系统-软件包,刷新软件包列表,然后搜索WireGuard。
安装luci-proto-wireguard,其他依赖会自动安装,可以同时安装zh-cn的中文包
安装完后重启路由,接下来开始我们的设置。
开始
接口
进入路由器页面-网络-接口,我们添加一个新接口。
新接口名称可以自定义,我们这里接口名称为 wg1 。注意,接口协议必须为WireGuard VPN。点击创建。
创建后,我们直接添加一个Peers
点击更多选项,选择 预共享密钥,点击添加。
密钥
如果私钥公钥输入框旁有生成密钥对的选项我们可以直接生成,如果像我这样没有的话,这时我们使用ssh工具进入路由器控制台输入以下命令。
mkdir wg #创建存放公钥私钥 cd wg #进入 wg 文件夹 umask 077 #表示屏蔽其他用户的读、写、执行权限,只允许文件所有者拥有读、写、执行权限 wg genpsk > sharekey #创建预共享密钥 cat sharekey #查看密钥
为了后续方便,我们同时把服务器私钥公钥和客户端私钥公钥一起生成了。
wg genkey | tee sprivatekey | wg pubkey > spublickey # 创建服务端公钥和私钥 cat sprivatekey # 查看服务端私钥 cat spublickey # 查看服务端公钥 wg genkey | tee cprivatekey | wg pubkey > cpublickey # 创建客户端公钥和私钥 cat cprivatekey # 查看客户端私钥 cat cpublickey # 查看客户端公钥
回到咱们刚刚的接口页面,在私钥框内填入我们刚才生成的服务端私钥即 sprivatekey。在监听端口内填入一个高位未占用的端口 55555 记住这个55555等下有用,IP地址填入我们 WireGuard 的专用地址,我这里演示内网环境为192.168.50.X网段,WireGuard为192.168.51.X网段,则192.168.51.1为本机 WireGuard IP。
点击防火墙设置标签页。将接口分配至VPN防火墙区域,如过没有设置过VPN区域也可以分配至Lan区域。
接下来在Peers内,公钥框填入我们刚刚生成的客户端公钥即 cpublickey。
在预共享密钥框内填入 sharekey 。
允许的IP为192.168.51.2即后续连接的客户端的IP。
勾选路由允许的IP框框。
Keep-Alive建议为25。
其他保持默认,点击创建。
防火墙
来到网络-防火墙页面。在打开路由器端口栏中,自定一个名字,协议选择UDP,端口填入我们刚刚的高位未占用端口55555,点击添加。
然后在上面规则里会出现这么一条。点击保存并应用。
这样,我们路由器上就设置好了。
客户端
iOS
Surge
我这里用 Surge 来进行演示,当然也可以使用 WireGuard 官方应用程序。
根据当前自己的网络环境进行配置
配置完后,测试是否能连接。测试成功,我们的 WireGuard 搭建完成!
更进一步
分流策略
Surge可以实现我们根据不同网络环境来进行分流。
可以抄我的规则策略,当我们访问192.168.50.X(家里内网)时,判断是否当前为家里的WiFi名,如不是,则进行 WireGuard 代理。反之,则直连。
该规则可以避免我们在家里访问时网络流量仍然走 WireGuard 而访问缓慢的问题。