OpenWrt 通过 WireGuard 实现异地访问/异地组网

WireGuard的优势

优势

相比于传统的VPN解决方案,WireGuard具有以下显著优势:

  1. 更高的性能:WireGuard使用现代加密技术和精简的代码实现,使其在性能上明显优于OpenVPN和其他传统VPN协议。它能够更快地建立连接,并在相同的硬件上提供更高的吞吐量和更低的延迟。
  2. 更强的安全性:WireGuard设计之初就采用了最新的加密算法,如ChaCha20和Poly1305,确保数据传输的安全性。其代码库较小,减少了潜在的漏洞和攻击面。
  3. 易于配置和使用:相比于OpenVPN较为复杂的配置文件和参数,WireGuard的配置更加直观和简洁。一个简单的配置文件就可以完成大部分设置,使其非常适合没有太多技术背景的用户。
  4. 跨平台支持:WireGuard不仅支持Linux,还支持Windows、macOS、iOS和Android等多种操作系统,方便用户在不同设备上实现无缝连接。
  5. 更低的资源占用:由于其高效的设计,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 而访问缓慢的问题。

 

 

 

 

暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇