title: 《树莓派不吃灰》第二十六期:局域网开黑神器,使用组建虚拟局域网,使用P2P技术为树莓派异地SMB下载超级加速:

我在《树莓派不吃灰》第二期:网盘界的未来科技,新增smb服务并完成内网穿透,实现所有设备共享文件 中使用frp实现了smb的公网映射,可以在任何有互联网的地方,访问家里树莓派上的文件。

但基于frp的smb数据传输速度,完全取决于云服务器的带宽,而带宽又很贵。

本文提供一种零成本加速的方法,也就是使用组建一个虚拟局域网,不同设备间通过p2p的方式来实现数据传输,不消耗服务器带宽,速度能达到家里上传带宽的上限。

分为服务端和客户端,客户端之间需要通过服务端建立连接,建立连接后,即可进行p2p通讯,如果客户端之间无法进行连接,则通过服务端进行数据中转,保证服务的可用性。

是开源软件 ,同时有商业化的版本 ,截止2024年1月,商业化的版本有25台设备的限制,普通用户是够用的。

image-

但的服务器在海外,而国内的网络环境又非常复杂,为了保证稳定的链接,我们需要在自己的国内云服务器,建立一个Moon中继节点用于处理国内设备间的链接请求,同时建立一个 (网络控制器)用于管理各客户端的授权, 以及查看各客户端的虚拟IP, 从而实现突破25台设备限制,进行私有化部署。本文按照官方文档进行编写 官方的英文文档,比较粗糙,本文的内容更详细。

image-创建Moon节点

在云服务器(本文服务器系统为)运行以下命令, 安装

curl -s https://install.zerotier.com | sudo bash

安装完成后,运行- 即可看到相关信息

image-

进入/var/lib/-one , 基于/var/lib/-one/. 生成 moon.json, 再基于moon.json 生成一个.moon 后缀的文件

cd /var/lib/zerotier-one
zerotier-idtool initmoon identity.public >> moon.json
zerotier-idtool genmoon moon.json

image-

编辑新生成的moon.json文件, 将””: [] , 改成””: [服务器IP/9993] , 记得前往云服务器的防火墙页面,将9993端口打开

创建moons.d 文件夹,将刚刚生成的.moon 后缀的文件,移动到moons.d 文件夹

mkdir moons.d
mv *.moon ./moons.d/

image-

最后,重启 -one 服务

systemctl restart zerotier-one

image-创建 (网络控制器)

官方没有网络控制器的web界面,我们直接通过一个开源项目完成网络控制器的设置 开源项目的官网

安装

cd /opt/
mkdir ztncui
cd ztncui

curl -O https://s3-us-west-1.amazonaws.com/key-networks/deb/ztncui/1/x86_64/ztncui_0.8.14_amd64.deb


apt install ./ztncui_0.8.14_amd64.deb

sudo sh -c "echo ZT_TOKEN=`sudo cat /var/lib/zerotier-one/authtoken.secret` > /opt/key-networks/ztncui/.env"

sudo sh -c "echo HTTP_PORT=3443 >> /opt/key-networks/ztncui/.env"

sudo sh -c "echo NODE_ENV=production >> /opt/key-networks/ztncui/.env"


sudo chmod 400 /opt/key-networks/ztncui/.env


sudo chown ztncui.ztncui /opt/key-networks/ztncui/.env


sudo systemctl restart ztncui

启动成功后,可以开启云服务器3443端口,通过 公网ip:3443 , 在浏览器访问,也可以参考 《树莓派不吃灰》第二十五期:以树莓派为网关,将追剧刷课神器Plex服务配置到公网 将3443端口的服务转发到443端口,并配置独立的域名访问。

image-

默认用户名admin, 默认密码

image-

登录成功后,修改密码

image-

修改完成密码后,点击Add

image-

image-

创建网络成功

image-

快速简单设置

image-

生成网络地址

image-

网络设置成功

image-

回到刚刚创建的网络

image-

在让云服务器加入 刚刚创建的网络

zerotier-cli info
zerotier-cli join 187477c1344ccea5

image-

查看网页,可以发现一个新的用户加入

image-

授权用户加入,并给用户起个名

image-

查看分配的虚拟IP

image-

通过macOS加入,客户端下载地址

image-

image-

image-

将运行smb服务端的树莓派加入网络, 并使用刚刚创建的

curl -s https://install.zerotier.com | sudo bash
zerotier-cli join 187477c1344ccea5

image-

image-

在外网通过smb挂载的卷宗,将树莓派的文件复制到本地,下载速度直接7MB每秒,起飞~

image-

使用的SMB客户端挂载也可

image-刚刚创建的moon服务用到了么?

刚刚创建的moon标识为

image-

而我们通过网页创建的所有都使用了 做前缀,如果想要确认,可以在终端运行

zerotier-cli peers

image-

被标识为MOON , 说明确实被用到了。

实用功能:远程控制办公室的树莓派桌面,可实现异地打卡

办公室启用树莓派桌面全攻略,可参考 无显示器玩转树莓派桌面版

image-小结

使用组建虚拟局域网,零成本,不依赖服务器带宽,不仅可用于smb加速,还可以用于好朋友之间开黑联机游戏。在家中局域网运行的各种服务,也能通过p2p高速访问。