Zerotier 异地组网方案初探

前言

我之前想要异地组网的话,一般都采用内网穿透的方法,但是这个内网穿透有弊端就是都是要通过公网服务器转发流量,对于大流量的传输就比较不方便,我发现了Zerotier 这个工具非常的好用,是基于p2p的

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

概念

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

Earth

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

Network

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

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

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

Planet

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

Moon

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

Leaf

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

网络拓扑

Zerotier 对于客户端支持的非常全面,几乎包括了大部分系统

客户端下载地址:Download

docker客户端(docker compose)

version: '3'
services:
  zerotier:
    image: zerotier/zerotier
    network_mode: host
    container_name: zerotier
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun
    volumes:
      - ./zerotier-one:/var/lib/zerotier-one
    command:
      - 网络id

我在linux中使用的时候喜欢用docker部署,因为非常的方便,我也推荐大家在linux环境下使用docker部署

注册并且登录 网站:ZeroTier Central 

我推荐使用微软账户登录

他提供的第三方登录有谷歌登录,Github和微软

谷歌不用说了肯定是访问不了的,Github不定时抽风,所以最好还是微软账户登录

虽然微软在国内的访问速度也是比较迷

进入之后点击Create A Network 创建一个网络,设置的话不用改默认就行了,记下网络id就行

将docker容器和windows客户端分别启动,并且加入网络,在网站下点击你创建的网络,最下面看下在线的设备

 如果发现没有的话,我们可以看看linux下的docker容器日志

docker compose logs -f zerotier

日志最后输出一行 zerotier  | 200 join OK 代表已经加入网络成功了

测试

在最上面设备的图中我们看到linux服务器的虚拟ip是172.27.14.177 ping一下试试

C:\Users\Administrator>ping 172.27.14.177

正在 Ping 172.27.14.177 具有 32 字节的数据:
来自 172.27.14.177 的回复: 字节=32 时间=19ms TTL=64
来自 172.27.14.177 的回复: 字节=32 时间=4ms TTL=64
来自 172.27.14.177 的回复: 字节=32 时间=6ms TTL=64
来自 172.27.14.177 的回复: 字节=32 时间=4ms TTL=64

在服务器端linux中ping下异地的windows客户端

[root@localhost ZeroTier]# ping 172.27.16.228
PING 172.27.16.228 (172.27.16.228) 56(84) bytes of data.
64 bytes from 172.27.16.228: icmp_seq=1 ttl=64 time=3.84 ms
64 bytes from 172.27.16.228: icmp_seq=2 ttl=64 time=3.78 ms
64 bytes from 172.27.16.228: icmp_seq=3 ttl=64 time=4.49 ms
64 bytes from 172.27.16.228: icmp_seq=4 ttl=64 time=5.82 ms
64 bytes from 172.27.16.228: icmp_seq=5 ttl=64 time=3.98 ms
64 bytes from 172.27.16.228: icmp_seq=6 ttl=64 time=5.93 ms
64 bytes from 172.27.16.228: icmp_seq=7 ttl=64 time=4.27 ms
64 bytes from 172.27.16.228: icmp_seq=8 ttl=64 time=4.62 ms
64 bytes from 172.27.16.228: icmp_seq=9 ttl=64 time=4.02 ms
64 bytes from 172.27.16.228: icmp_seq=10 ttl=64 time=20.2 ms
64 bytes from 172.27.16.228: icmp_seq=11 ttl=64 time=4.25 ms
64 bytes from 172.27.16.228: icmp_seq=12 ttl=64 time=3.85 ms
64 bytes from 172.27.16.228: icmp_seq=13 ttl=64 time=10.6 ms

发现也是通了,组网成功

刚开始的时候延迟会比较大,等待一会就慢慢会降下来

那现在只能两个设备互访,那如何访问服务器所在的局域网内的所有设备呢???

我目前的方案是  SSH代理

可以参考我之前的文章

http://t.csdnimg.cn/8juHT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/470106.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python计算机二级选择易错题(一)

题目来源:python计算机二级真题(选择题) - 知乎 选择题第08,09套

MNN createFromBuffer(一)

系列文章目录 MNN createFromBuffer(一) MNN createRuntime(二) MNN createSession 之 Schedule(三) MNN createSession 之创建流水线后端(四) MNN Session::resize 之流水线编码&am…

AI写作:为你创造令人惊叹的内容

AI写作:为你创造令人惊叹的内容!在当今信息爆炸的时代,内容创作已经成为吸引注意力、传达信息和建立品牌形象的重要手段。然而,随着人工智能技术的快速发展,AI写作正逐渐成为一种改变游戏规则的利器,为人们…

HarmonyOS NEXT应用开发之多文件下载监听案例

介绍 多文件下载监听在应用开发中是一个非常常见的需求。本示例将介绍如何使用request上传下载模块实现多文件下载监听,如监听每个文件下载任务的进度,任务暂停,下载完成等下载情况。每个应用最多支持创建10个未完成的任务,相关规…

【Godot4.2】2D导航04 - TileMap导航的逻辑

基于NavigationRegion2D 我们基于NavigationRegion2D的逻辑一文的场景结构,但是将NavigationRegion2D删除,更改为TileMap节点。 为TileMap创建Tileset,并创建一个导航层。在TileSet面板中,为草地和黄色泥土地面图块绘制可通行区…

②免费AI软件开发工具测评:通义灵码 VS 码上飞

前言 我又双叒叕来测评了!上次给大家带来的是iFlyCode和CodeFlying两款产品的测评,受到了大家的一致好评~ 今天咱就继续来聊聊,这次我们选的的对象是通义灵码和码上飞,从名字上也能看到出来这两款产品一定是跟软件开发有关系的&…

机器视觉系统选型-镜头基础知识

广角镜头:焦距小于标准焦距50mm的。例如:16mm 景深大,聚焦距离更近 远距照像镜头:焦距大于标准焦距50mm的。例如:75mm 景深浅,放大远距离物体 变焦镜头:镜头焦距可调节,焦距有范围&a…

web前端框架设计第二课-Vue.js简介

web前端框架设计第二课-Vue.js简介 一.预习笔记 1.Vue.js概述 Vue.js是一套用于构建用户界面的渐进式框架。本质上是一个用于开发Web前端界面的库,其本身具有响应式编程和组件化的特点。 Vue.js的特性: 轻量级 数据绑定 应用指令 插件化开发 2.V…

面试八-git使用

1. 初始化(git init 把这个目录变成git可以管理的仓库) git init 2. 添加到暂存区里面去 git add readme.txt 3. 查看文件状态 git status 4. 提交到本地仓库 git commit -m " 版本信息“ readme.txt 5. 查看readme.txt文件到底改了什么内容…

大模型面试题最全总结,没有一道是送分题。。。

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂同学、参加社招和校招面试的同学,针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 今天分享…

视频素材免费下载素材库哪里有?推荐8个高清无水印素材网

在这个数字化时代,无论是专业的内容创作者还是日常的社交媒体使用者,我们都会寻找高质量的素材来丰富我们的作品或帖子。从令人震撼的摄影作品到高分辨率的视频素材,再到生动的GIF和必需的设计元素,素材的需求无处不在。 视频素材…

DZY-212中间继电器 DC 220V 板后接线 面板安装 JOSEF约瑟

系列型号: DZY-200系列中间继电器;DZY-201中间继电器; DZY-202中间继电器;DZY-203中间继电器; DZY-204中间继电器;DZY-205中间继电器; DZY-206中间继电器;DZY-207中间继电器; DZY-20…

Leetcode 70.爬楼梯

心路历程: 这道题是之前学院的一道复试题,大家都没怎么刷过算法题,只记得当年凭借几次试错自己把这道题做出来了,当时也不知道动态规划之类的。 正常来讲,这种找不到循环结构的题一般都是递归解决。 注意的点&#x…

js 中文乱码解决、乱码对照

1、js iso-8859-1转utf-8 在JavaScript中,可以使用内置的TextEncoder和TextDecoderAPI来实现ISO-8859-1编码和UTF-8编码之间的转换。以下是一个将ISO-8859-1编码的字符串转换为UTF-8编码的示例代码: function convertISO88591ToUTF8(isoString) {// 将…

上班族兼职宝典:五个副业赚钱项目助你财富增值

在快节奏的现代生活中,许多上班族已不再满足于固定的月薪,纷纷寻求额外收入来源以缓解生活压力。副业赚钱作为一种有效途径,正逐渐受到他们的青睐。为此,我们为上班族精心挑选了五种可行的副业赚钱方式,助力他们在工作…

蓝牙耳机连上电脑后播放音频一卡一卡的还有声音变形,电脑连接后总是容易断开蓝牙

蓝牙耳机连上电脑后播放音频一卡一卡的还有声音变形,电脑连接后总是容易断开蓝牙 问题描述问题排查可能6可能7电脑蓝牙驱动问题 结语: 问题描述 蓝牙耳机连上电脑后播放音频一卡一卡的还有声音变形,电脑连接后总是容易断开蓝牙。 关键之前我…

详细教---用Django封装写好的模型

本次我们要用自己写好的热销词条爬虫代码来演示如何用Django把我们写好的模型封装。 第一步:代码准备 热搜词条搜集代码: import requests from lxml import etreeurl "https://tophub.today/n/KqndgxeLl9" headers{User-Agent: Mozilla/5.…

【Godot4.2】 基于SurfaceTool的3D网格生成与体素网格探索

概述 说明:本文基础内容写于2023年6月,由三五篇文章汇总而成,因为当时写的比较潦草,过去时间也比较久了,我自己都得重新阅读和理解一番,才能知道自己说了什么,才有可能重新优化整理。 因为我对…

Redis数据结构对象之集合对象和有序集合对象

集合对象 集合对象的编码可以是intset或者hashtable. 概述 intset编码的集合对象使用整数集合作为底层实现,集合对象包含的所有元素都被保存在整数集合里面。 另一方面,hashtable编码的集合对象使用字典作为底层实现,字典的每个键都是一个…

H.整数删除【蓝桥杯】优先队列+双向链表

优先队列 在头文件 < q u e u e > <queue> <queue>中定义方法&#xff1a;priority_queue<储存的类型,vector<储存的类型>,顶堆的类型> 容器名less<储存的数据类型> 即使用大顶堆&#xff0c;即队首为最大元素greater<储存的数据类型&…