前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Openwrt 使用 Wireguard 异地组网(远程家庭网所有设备)

Openwrt 使用 Wireguard 异地组网(远程家庭网所有设备)

作者头像
宋天伦
发布2023-10-20 13:37:57
8.7K0
发布2023-10-20 13:37:57
举报
文章被收录于专栏:fryteafrytea

本文 首发于 🌱 煎茶,请注明 来源。

最近入手了一款友善 Nano pi (型号 FriendlyElec NanoPi R2S (CpuMark : 20651.944334 Scores)),直接作为家庭内网的主路由使用,各项性能比之前的 新路由3 要好太多了。

折腾了各项插件后,决定使用 WireGuard 打通一个虚拟的家庭网络,方便远程访问家庭内网的各种设备。之前使用过 OpenVPN ,确实有些臃肿,这次正好尝尝鲜,看看 wireguard 的效果怎么样。使用过只能说,这真是个太棒的东西了,有各种我想不到玩法。

在配置的过程中,踩了不少坑,这里简单记录一下。

首先说明一下情况:

  • 设备型号: FriendlyElec NanoPi R2S (CpuMark : 20651.944334 Scores)
  • 架构:ARMv8 Processor rev 4 (v8l) x 4 (1200MHz, 55.5°C)
  • 固件 OpenWrt R22.3.23 / LuCI Master (git-22.068.45502-a50e601)

我的固件使用的是 Leans 大神 多功能版固件,自带 WireGuard 等插件,因此在这里略过 OpenWrt 安装 WireGuard 的步骤。

为了远程访问,我直接将一台公网的 nat 服务器作为所有 Wireguard 节点的 Endpoint,所有外网访问均通过这台服务器中转。

WireGuard 公网端准备#

在服务器上安装 Wireguard 时,我采用了开源脚本 **wireguard-install 进行安装:

代码语言:javascript
复制
$ curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh
$ chmod +x wireguard-install.sh
$ ./wireguard-install.sh

如果github拉取缓慢,可以在 这里 找到我在coding镜像的代码库,直接拷贝使用即可。

安装过程很简单,输入公网 IP地址,之后一路回车即可完成配置。

安装完毕后,再次运行该脚本,即可添加 peer 节点。

每个设备必须有一个独享的配置文件,若公用会导致多设备不可同时在线。

生成的配置文件大概是这样:

代码语言:javascript
复制
cat /root/wg0-client-iphone.conf
[Interface]
PrivateKey = xxxxxxxxxxxxxxxxx
Address = 10.66.66.2/32,fd42:42:42::2/128
DNS = xxxx,xxxx

[Peer]
PublicKey = xxxxxxxxxxxxxxxxxxxx
PresharedKey = xxxxxxxxxxxxxxxxxxxx
Endpoint = x.x.x.x:xxx
AllowedIPs = 10.66.66.0/24, 192.168.2.0/24

需要注意 [Peer] 部分的 AllowedIPs ,默认为 0.0.0.0/0 ,即全局流量均走该 VPN。如果只希望特定网段,在这里制定好即可。比如我的 Wireguard 网段 为 10.66.66.0/24,家庭内网网段为 192.168.2.0/24 ,我就制定这两个网段即可。隧道激活时会自动为我们配置这两个网段的路由。

为每个客户端(包括 OpenWrt )生成配置文件后,下面将 OpenWrt 接入该网络,并作为我们远程虚拟网和家庭子网的 NAT 使用。

OpenWrt 配置#

首先添加一个协议类行为 WireGuard VPN 类型的接口,在基本配置中填入配置文件对应的内容:

之后添加 peer ,继续填写配置文件的内容:

填写完毕后保存,下面配置防火墙,选择 lan 区域即可:

这里也是我出现问题的地方。防火墙这里配置错误,可能导致远程访问不到我们的 OpenWrt 网络,或者是访问不到 OpenWrt 网络内的其他主机。

使用默认的 lan 配置,就无需配置各种复杂的路由或是 iptables 来进行 nat 转换了,如果这里配置有问题,或是有特别的需求,就需要有额外的配置了。

至此,连接该接口,或是重启 OpenWrt ,使用远程接入 WireGuard 网络的另一台设备应该就可以顺利的 ping 同内网设备,访问各种服务了。

我是在踩了一圈坑后,发现仅仅使用以上最简单的配置即可完成配置。

如果有问题,可以使用 tcpdump 或是其他抓包工具一路跟踪 icmp 报文来排查一下问题所在。

至此,配置完毕。

参考文献#

注:本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • WireGuard 公网端准备#
  • OpenWrt 配置#
  • 参考文献#
相关产品与服务
VPN 连接
VPN 连接(VPN Connections)是一种基于网络隧道技术,实现本地数据中心与腾讯云上资源连通的传输服务,它能帮您在 Internet 上快速构建一条安全、可靠的加密通道。VPN 连接具有配置简单,云端配置实时生效、可靠性高等特点,其网关可用性达到 99.95%,保证稳定、持续的业务连接,帮您轻松实现异地容灾、混合云部署等复杂业务场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档