28
2022
09
09:18:50

Zerotier - 分分钟组网工具最全食用方案



推荐点击下面图片,通过本站淘宝优惠价购买:

image.png

之前一直在用v2ray 服务器在内网开端口,相当于通过代理的方式访问内网,利用内网的 openwrt 中 smartdns 做 dns 解析服务。


同事最近买了个群晖,但是家里没有公网 IP,所以一直在用 Frp 做内网穿透。但是 FRP 使用过的比较清楚,速度依靠公网服务器的带宽,而且每起一个服务都要暴露一个端口。


在此之上,我进行了一番搜索,发现了一个新东西——Zerotier。


这是一个类似于 ZooKeeper 的工具,一款异地组网工具。每台服务器上只需要安装对应的客户端,连接到同一个网络,就可以实现 IP 互相访问。在此之上,还有自定义 DNS 服务器的功能,将通过 IP 这个步骤转换为通过域名进行访问,相当实用。


纵观国内的文章,基本都是上来就一步一步搭建,没有任何解释性说明。在几天的折腾后,搞了篇解释比较强的文章。


根据 Zerotier 的官方简介,是这个意思:


Connect team members from anywhere in the world on any device.


ZeroTier creates secure networks BETween on-premise, cloud, desktop, and mobile devices.


概念

所有的设备都是客户端,连接方式是点对点。在路由器下面的话是用 uPnP 的方式进行转发实现客户端到客户端的直接连接。如果 uPnP 没有开启,会通过传统的服务器转发的方式进行连接。


Earth

根据其介绍,将地球上的所有设备连起来。那这里的 Earth 指的就是整体的一个服务。


Network

每一个 Network 包含的所有设备都在同一个网络里。每个网络有一个 Network ID。各客户端通过这个 ID 连接到此网络。当然,一个账号是可以创建多个网络的。


网络氛围 Public 和 Private。一般我们自己组网是要用 Private,需要在页面授权设备才可以进行访问。Public 权限好像不太有人会需要吧..


以下介绍的所有概念都是属于 Network 下的。


Planet

星球嘛。指的是官方提供的服务器节点。各客户端都是通过这些服务来互相寻址的。相当于 zookeeper 的不同节点。


Moon

自定义的 Planet。由于 Zerotier 没有国内节点,在两个设备刚开始互连的时候有可能需要通过国外的节点寻址(不过我没发现有什么慢的)导致创建连接的速度偏慢。在自己的网络里搭建 Moon 可以使连接提速。


Leaf

客户端。就是连接到网络上的每一个设备。其实经过测试,Moon 也是客户端的一种。这里特指没有额外功能,单纯用于连接的客户端。


开始使用

Zerotier 支持基本所有设备:Windows、MacOS、iOS、Android、Linux、FreeBSD、Synology、QNAP、WD MyCloud、OpenWRT。再不济,支持 Docker,凡是能跑 Docker 能联网的设备都可以用。


其中 iOS 不支持自定义 Moon,Android 的自定义 Moon 要下载非官方的 App。


本着不给自己找麻烦的原则,能用 ui 就用 ui,能一键搭建就一键搭建。给了 docker-compose 就直接用,不要折腾乱七八糟的东西。


注册账号

官方网站登录,我直接用 Github 登录。登录后发现我两年前玩过这个东西…



创建网络

不用输入任何没用的信息,上来直接创建网络,只需一次点击,网络就创建好了。


记住这个 Network ID,以后会经常见到。


点击网络进去,默认配置基本够用。


连接客户端

MacOS


官方下载链接


安装好后,启动。



在下面输入网络 ID,点击 Join Network 即可。


Windows 的 UI 跟这个一毛一样。


iOS

AppStore 搜索 Zerotier,下载。点击右上角加号,输入网络 ID,OK。


Linux

根据官网给的说明,直接运行脚本即可。



如果你安装了 GPG 密钥验证,用下面这条命令



脚本会自动将 Zerotier 的源添加到 apt/yum 里并安装。


安装好后,运行命令



即可。


群晖

DSM 7 不支持 root 安装第三方程序,因此官网建议使用 Docker 来实现。英文文档在这里:https://docs.zerotier.com/devices/synology/


简单说就是 ROOT 权限。


首先,将虚拟网卡添加到启动项:



以上执行后就有虚拟网卡了。然后创建 docker 容器:



启动后,执行以下加入网络



有 compose 的话,我是这么操作的:



加入网络:



OpenWRT

软路由上,有一个 Zerotier 工具,启用,输入网络 ID,保存并启用即可。


Docker

首先启用虚拟网卡(跟群晖一样,这步我还不知道怎么搞)


用以下 docker compose 文件:



我不知道为什么网上的人都爱用第三方很久不更新的镜像。用官方的不香吗。


直接启动即可。


授权

每一次添加了客户端后,在控制面板上会显示新设备加入,勾上前面的勾表示对这个设备授权,会给其分配 IP,显示 zerotier 客户端的版本号和物理地址。



免费版最多一个网络可以有 50 个设备。真大方.. 怎么用都够用了。


使用

好了,这回,只要输入对应的虚拟 IP,就可以访问对应的设备了。这些设备相当于都处于同一个局域网下了。你会发现,速度相当快了。


状态管理

命令行的使用

所有的设备都是使用 zerotier 相同源码编译的客户端。我们平时主要操作的就是 zerotier-cli。其他的,zerotier-one 是运行程序,zerotier-idtool 是生成客户端 id 使用的。zerotier-cli 要使用root权限运行。


查看所有设备

zerotier-cli peers



Path 指的是连接时连接到的 IP 地址。这台机器是我最头疼的一台,它给 zerotier 的地址都是 ipv6 的,导致它的节点与其他 ipv4 的节点没办法互联,搞了我好几天了。


不过也可以看见,同一内网下的话,IP 会使用内网的 IP,不需要再经历转发的流程。


其中 link 代表了连接状况。DIRECT 代表可以直接连接,RELAY 代表需要转发。转发的速度当然会慢一些,因此尽量保证你的 NET 类型为 A/B。(跟 switch 学来的)这里我还没有细致研究,不过只要你的路由器支持 uPnP,一般都是直连。


这里有连接方式的官方介绍,我懒得看:https://docs.zerotier.com/zerotier/troubleshooting#recommended-local-network-and-internet-gateway-configuration


查看网络

zerotier-cli listnetworks



这里有以下信息:网络 ID、名称、本机的虚拟 IP 地址,和网络状态。其中,网络状态 OK 表示正常,REQUEST_CONFIGURATION 表示没有 uPNP,连不上,ACCESS_DENIED 表示还没有授权。其他的状态我还没见过。


查看连接情况

zerotier-cli info


高级

自定义 Moon

任何一个节点都可以作为 Moon 使用。当然,正常的我们肯定会选择公网 IP 的节点,一般都会使用云服务器。


官方文档在这里:https://docs.zerotier.com/zerotier/moons


那么第一步就是搞一台云服务器,在上面连接好网络。


进入配置文件夹,linux 上的是。执行


打开的文件大概长这个样子:



在其中的数组中填上本机的,一般端口都是 9993。如果你服务器支持 ipv6,填上 ipv6 也是不错的。


服务器要打开 9993 端口!


然后执行:



会生成一个 000xxxx.moon 的文件,将其放在 moons.d 文件夹中。


这个 000xxx 就是此 mood 的 id。


在与其连接的客户端上,执行:



其中,第一个是 Word ID,第二个是 moon id。不用考虑细节,两个一样就对了。


这样,在连接的时候,就可以看到这台机器已经从 LEAF 变成了 MOON。


自定义 controller

Controller 就相当于一个完整的 zerotier 服务。由于 iOS 端不支持自定义 controller,我也没做这个东西。等我把家里的网络重新整理一遍再来玩这个。


自定义 dns

使用 zerotier/zeronsd 来进行 DNS 的设置,官方文档在这里:https://docs.zerotier.com/zeronsd/quickstart


这个功能目前还是 BETA 版,我将在把家里的网络整理好后再来配置 DNS。


这个 DNS 处于网络的里面,主要用于避免客户端以 IP 进行访问,太复杂了。 作者:纠结当道 https://www.bilibili.com/read/cv16375642 出处:bilibili


本文链接:http://www.hqyman.cn/post/2740.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:





休息一下,本站随机推荐观看栏目:


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

您的IP地址是: