OpenWrt 使用 WireGuard 配合 Lucky 回家冲浪
OpenWrt通过使用WireGuard配合Lucky可以随时随地访问家庭局域网,畅想低延迟互联。
博客迁移导致图没了,先将就着看下,等之后有时间再重写一篇。
第一步:前提条件
路由器系统为OpenWrt,且已安装WireGuard。一般OpenWrt里都会有默认安装,没有的话可能需要重新安装下OpenWrt系统,似乎是WireGuard的一些依赖编译时才能装上。我推荐使用:多固件云编译版,具体安装教程请参考网上其他教程。
有公网IPV6(正常上网情况下,在OpenWrt查看Lan接口的IPV6是否为
240开头,是则有公网IPV6)域名一个(教程演示为阿里云托管域名),没有域名的,买一个吧
第二步:配置 WireGuard
1. 生成 WireGuard 密钥对
- SSH 登录到路由器,创建wg配置目录,生成**
服务端**公钥和私钥以及预分享密钥
mkdir wg
cd wg
umask 077
# 生成服务端的公钥和私钥,分别叫spublickey、sprivatekey ,名称可自定义,记住就行
wg genkey | tee sprivatekey | wg pubkey > spublickey
# 创建预分享密钥
wg genpsk > sharekey
# 查看所有密钥,记得找个地方保存一下
cat spublickey
cat sprivatekey
cat sharekey- 生成**
客户端**公钥和私钥:
# 创建一个用户01,存放该用户的公钥和私钥,后续有几个用户就按照这个方式添加即可
mkdir user01
cd user01
# 生成客户端的公钥和私钥,分别叫cpublickey、cprivatekey ,名称可自定义,记住就行
wg genkey | tee cprivatekey | wg pubkey > cpublickey
# 查看所有密钥,记得找个地方保存一下
cat cpublickey
cat cprivatekey2. 创建 WireGuard 接口
在 OpenWrt 的管理界面中,进入 网络(Network) > 接口(Interfaces) 。
点击 添加新接口(Add new interface) ,创建一个新的接口。
输入接口名称(如
wg),选择接口类型为 WireGuardVPN。在 私钥 中输入之前生成的服务器私钥(sprivatekey) 。
配置监听端口(如
7000),IP地址填写一个和本机路由器地址不同的地址段,也就是VPN 专用的网段 IP,例如:192.168.3.1/24,保存。切换到防火墙设置,将其绑定到lan区域
3. 创建Peers
- 在 Peers 中,选择更多选项,
预共享密钥添加。
这样会出来一个Peer的配置,按照要求分别填写:
- 公钥 - 客户端公钥,注意:是客户端公钥,也就是
cpublickey - 预共享密钥 - 填写上文获取的
预共享密钥,也就是sharekey - 允许的 IP - 即表示为此客户端分配固定 IP , 例如
192.168.3.10, 注意各客户端 IP 不能冲突 - 勾选路由允许的IP
- 持续 Keep-Alive - 我这里填写
20,你可以填写建议值25
设置完成,记得**保存,保存,保存**!!!
第三步:配置动态域名
1. OpenWrt安装Lucky
虽然有其他DNS解析和端口转发软件选择,但我还是建议大家安装Lucky,后面会用到它的一些其他功能。
在系统-软件包中安装Lucky,具体安装方法可网上搜索。
2. Lucky配置动态域名
在 Lucky 中点击动态域名,添加任务,任务名称随意填写,例如DDNS。
跳转到阿里云页面,选择使用RAM用户AccessKey,具体操作如图。
此处复制AccessKeyID、AcessKeySecret分别粘贴到Lucky中的相应位置。
点击用户登录名称进入后,设置权限管理,加入DNS解析权限。
回到Lucky,按图填写设置。
设置完成保存,等待DNS解析结果。
第四步:配置客户端
1. 安装 WireGuard 客户端
- 在各客户端设备上安装 WireGuard 应用。
注意:iphone的WireGurad客户端需要外区id才能下载!
2. 创建客户端配置
- 创建后缀为
.conf的配置文件,例如user01.conf,复制以下信息,并修改对应信息:
[Interface]
# 对应客户段分配的IP,在openwrt里配置过
Address = 192.168.x.x/32
# 这里的私钥是指客户端的私钥,也就是user01的cprivatekey
PrivateKey = cprivatekey
# 本地的 DNS 服务器或者公有 DNS 服务器,一般填路由器DNS
DNS = 192.168.1.1
[Peer]
# 这里的公钥是指服务端的公钥,也就是服务端的spublickey
PublicKey = spublickey
# 192.168.1.0/24 表示家庭局域网,192.168.100.0/24表示本机局域网
# 这样填写仅代理局域网,互联网走本地网络,如果想要所有流量都走家庭局域网,则只填写类似第一个
# iPhone iPad 设置为 0.0.0.0/0 则为全局模式
AllowedIPs = 192.168.1.0/24, 192.168.100.0/24
# 前面生成的预共享密钥
PresharedKey = xxxx
# 远程连接地址,DNS解析的域名+之前设置的7000端口,端口根据实际情况填写
Endpoint = home.xxxxx.com:7000
# 保活时间,默认是25,我填写的是20,所以这里填写20,一般默认即可
PersistentKeepalive = 20- 将填写好的配置文件导入到对应客户端中,保存配置。
第五步:测试连接
在各客户端设备上启用连接,尝试访问家庭网络中的设备(如 NAS、OpenWrt等)。
- Windows端效果
连接成功显示:
正常访问内网:
- iphone端效果
连接成功显示:
正常访问内网:
通过 WireGuard VPN 连接后,效果相当于在家中上网,除非特殊设定,否则所有流量都由家中发起,包括强国!🤪🤪🤪
总结
通过本教程,我们成功配置了 OpenWrt 路由器通过 WireGuard 和 IPv6 实现了随时随地安全地访问家庭网络。这种方式不仅提升了连接的灵活性,还增强了数据传输的安全性。如果你有任何问题或需要进一步的帮助,欢迎评论区讨论!
此篇教程重点是使用IPV6,当外部网络不提供IPV6时,只有通过STUN服务器穿透生成IPV4地址来进行连接,下一篇文章我将编写关于通过Lucky进行STUN穿透来获取公网IPV4的教程,这样可以在外真正做到随时连回家庭局域网。