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/zerotiernetwork_mode: hostcontainer_name: zerotiercap_add:- NET_ADMINdevices:- /dev/net/tunvolumes:- ./zerotier-one:/var/lib/zerotier-onecommand:- 网络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.rhkb.cn/news/279931.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高效使用 JMeter 生成随机数:探索 Random 和 UUID 算法

在压力测试中,经常需要生成随机值来模拟用户行为。JMeter 提供了多种方式来生成随机值,本文来具体介绍一下。 随机数函数 JMeter 提供了多个用于生成随机数的函数,其中最常用的是__Random函数。该函数可以生成一个指定范围内的随机整数或浮…

【哈希表】算法例题

目录 五、哈希表 39. 赎金信 ① 40. 同构字符串 ① 41. 单词规律 ① 42. 有效的字母异位词 ① 43. 字母异位词分组 ② 44. 两数之和 ① 45. 快乐数 ① 46. 存在重复元素 ① 47. 最长连续序列 ② 五、哈希表 39. 赎金信 ① 给你两个字符串:ransomNote 和 m…

Linux入门-常见指令及权限理解

目录 1、Linux背景 1.1、发展历史 1.2、开源 1.3Linux企业应用现状 2、Linux下的基本命令 2.1、ls 指令 2.2、pwd 命令 2.3、cd 命令 2.4、touch命令 2.5、mkdir 命令 2.6、rmdir 指令和 rm指令 2.7 man 指令 2.8、cp指令 2.9、mv 指令 2.10 cat 2.11 more 2…

网络学习:IPV6基础配置

目录 一、配置接口的全球单播地址 二、配置接口本地链路地址 三、配置接口任播地址 四、配置接口PMTU 配置静态PMTU: 配置动态PMTU: 五、接口配置IPV6地址示例: 一、配置接口的全球单播地址 全球单播地址类似于IPv4公网地址&#xff0…

个人微信开发API

安卓微信的api,个人微信开发API协议,微信 ipad ,微信ipad协议,微信web版接口api,微信网页版接口,微信开发sdk,微信开发API,微信协议,微信接口文档,网页个人微…

FPGA高端项目:FPGA基于GS2971+GS2972架构的SDI视频收发+HLS图像缩放+多路视频拼接,提供4套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐本博主所有FPGA工程项目-->汇总目录本博已有的 SDI 编解码方案本方案的SDI接收发送本方案的SDI接收图像缩放应用本方案的SDI接收纯verilog图像缩放纯verilog多路视频拼接应用本方案的SDI接收OSD动态字符叠加输出应用本方案的SDI接收HLS…

docker小白第十四天之Portainer与CIG

Portainer简介 Portainer是一款轻量级的应用,它提供了图形化界面,用于方便地管理Docker环境,包括单机环境和集群环境。 Portainer命令安装 # 一个容器可以同时起多个-p端口,restartalways表示随时在线,重启机器后也…

麒麟系统Redis7.2哨兵集群部署

redis哨兵集群部署 1、原理 Redis 哨兵模式是指在 Redis 集群中,有一组专门的进程(即哨兵进程)负责监控主节点和从节点的状态,并在发现故障时自动进行故障转移,以保证 Redis 集群的高可用性。 Redis 提供了哨兵的命令,哨兵命令是一个独立的进程,哨兵进程会周期性地向主…

Flutter开发入门——路由

什么是路由? 移动端应用开发中,路由技术是一个非常重要的组成部分。路由技术负责管理应用中各个页面之间的跳转、导航以及参数传递等关键功能。在移动端应用中,一个高效、易于维护的路由系统对于提高开发效率和用户体验具有重要意义。 Flut…

MySQL 多表查询与事务的操作

一,多表联查 有些数据我们已经拆分成多个表,他们之间通过外键进行连接.当我们要查询两个表的数据,各取其中的一列或者多列. 这时候就需要使用多表联查. 数据准备: # 创建部门表 create table dept(id int primary key auto_increment,name varchar(20) ) insert into dept (n…

【机器学习系列】M3DM工业缺陷检测部署与训练

一.基础资料 1.Git 地址 地址 2.issues issues 3.参考 参考 csdn 二.服务器信息 1.GPU 服务器 GPU 服务器自带 CUDA 安装(前提是需要勾选上)CUDA 需要选择大于 11.3 的版本登录服务器后会自动安装 GPU 驱动 2.CUDA 安装 GPU 服务器自带 CUDA CUDA 版本查看 3.登录信…

软件杯 深度学习 python opencv 实现人脸年龄性别识别

文章目录 0 前言1 项目课题介绍2 关键技术2.1 卷积神经网络2.2 卷积层2.3 池化层2.4 激活函数:2.5 全连接层 3 使用tensorflow中keras模块实现卷积神经网络4 Keras介绍4.1 Keras深度学习模型4.2 Keras中重要的预定义对象4.3 Keras的网络层构造 5 数据集处理训练5.1 …

软件企业在咨询第三方软件测试机构报价时,应提前准备什么资料?

近年来,随着软件行业的迅速发展,软件企业对于软件质量的重视程度日益增加。为了确保软件产品的质量以及用户的满意度,越来越多的企业倾向于委托第三方软件测试机构进行测试工作。在咨询第三方软件测试机构报价之前,软件企业需要提…

软考81-上午题-【面向对象技术3-设计模式】-行为型设计模式01

一、行为型设计模式一览 二、责任链模式 2-1、意图 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 1-2、结构 1-3、代码实现 1-4、适…

C/C++炸弹人游戏

参考书籍《啊哈,算法》,很有意思的一本算法书,小白也可以看懂,详细见书,这里只提供代码和运行结果。 这里用到的是枚举思想,还有更好地搜索做法。 如果大家有看不懂的地方或提出建议,欢迎评论区…

【Linux】Linux基本开发工具(yum) (vi/vim)的使用

本文章内容: 学习yum工具,进行软件安装掌握vim编辑器使用 Linux 软件包管理器 yum 什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成…

基于python的4s店客户管理系统

技术:pythonmysqlvue 一、背景 进入21世纪网络和计算机得到了飞速发展,并和生活进行了紧密的结合。目前,网络的运行速度以达到了千兆,覆盖范围更是深入到生活中的角角落落。这就促使管理系统的发展。网上办公可以实现远程处理事务…

2024.03.19日志

今日复盘 1 学习导师给的项目 1.1 了解项目的业务背景:经销商-银行贷款 1.2 了解了大致的业务流程 经销商添加客户贷款信息->提交贷款信息->银行审核->审核通过经销商提交客户贷款信息资料->银行审核->制作名单导入网贷系统 1.3 业务功能 经销…

Java 设计模式系列:行为型-状态模式

简介 状态模式(State Pattern)是一种行为型设计模式,允许一个对象在其内部状态改变时改变其行为。状态模式中类的行为是由状态决定的,在不同的状态下有不同的行为。 状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂…

linux下关闭swap文件系统

临时关闭(马上生效) 永久关闭(重启计算机才能生效) vim /etc/fstab