一些问题

可以用来干嘛?

  • 异地组网,管理方便,A、B网段内的IP可以直接相互访问

到底好不好用?

  • 如果不搭建MOON节点,直接P2P的话,速度确实让人捉急,我感觉这个原因劝退了绝大多数人

和FRP的区别?

  • 应用场景不同。Zerotier One更适合用来组网,可以把它理解成VPN,可以直接通过局域网内IP互相访问。而frp特点是把内网的某个服务穿透出去,机器一多的话,你就需要记住不同端口号或子网域名。这里并不是说Zerotier Onefrp更好用,需要根据自己的业务场景来看。比如你在家里部署了一个WEB服务,想要给你异地的朋友使用,你不可能让你的朋友安装Zerotier One吧?直接用frp把该服务反向代理映射出去,直接给他一个域名不是更方便?

开始使用

初级----安装

  • 账号注册(略),注意国内访问速度很慢,这个自己解决一下
  • 创建网络,进入网络管理页面,点击Create A Network后,自动创建一个网络,点击网络ID右侧的小图标可以进行复制

  • 客户端安装,推荐使用docker

    (1)拉取并运行:docker run -d --restart unless-stopped --name zerotier-one --device /dev/net/tun --net host --cap-add NET_ADMIN --cap-add SYS_ADMIN -v /var/lib/zerotier-one:/var/lib/zerotier-one henrist/zerotier-one

    (2)将该客户端A加入网络:docker exec zerotier-one zerotier-cli join 8bd5124fd655f3bf,注意最后的网络ID,就是上面复制的,根据自己的进行替换,成功后会显示200 join OK字段

    (3)进入该网络的管理界面,授权该客户端加入该网络



    (4) 重复上面步骤,加入另外的客户端B

    (5)根据图(3)中分配的IP,A、B机器可以相互ping

    (6)如果是Windows,客户端可以直接下载官方的安装包,进行安装,不需要使用Docker

    (7)直接使用这种P2P方式连接的话,速度较慢,一般至少有200ms的延时

中级----使用MOON加速

  • 准备一台有公网IP的机器,放行9993端口
docker run --name zerotier-moon -d --cap-add NET_ADMIN --device /dev/net/tun --net host -p 9993:9993/udp --restart always -v ~/zerotier:/var/lib/zerotier-one seedgou/zerotier-moon:master -4 你的公网IP地址
  • 根据docker logs -f zerotier-moon运行输出的日志,在客户端执行该命令添加该MOON节点

  • A、B机器再ping一下,查看网络连接是否改善
  • docker exec zerotier-one zerotier-cli listmoons可以查看加入的MOON

高级----组网

现在考虑一个场景:A机器所在的内网lan_A有10台Server,B机器所在的内网lan_B也有10台Server,怎么让A、B机器直接访问到对方其它Server?

在这20台Server上分别装上客户端,这个可以实现需求,不过管理上比较麻烦。

实际上只要分别在lan_Alan_B的某台机器上安装客户端,开启内核转发,然后在Web管理页面添加两条路由就可以了。

最简单的方法当然是分别在A、B机器上安装客户端就可以了,但前提是这两台机器都是Linux系统,因为需要开启内核转发功能。我在官网文档并没找到Windows的配置方法。

如果A、B两台机器都是Windows系统的话,需要分别装上客户端。然后在各自的内网内找一台Server,安装客户端后,开启内核转发就可以了

添加路由

  • 正常在两台Server上安装客户端
  • 两台机器分别执行以下命令,开启内核转发:
Iface=`ifconfig | grep ^zt | awk '{print $1}'`
echo "net.ipv4.ip_forward=1">>/etc/sysctl.conf
sysctl -p
PHY_IFACE=你的物理网卡名称; ZT_IFACE=$Iface
iptables -t nat -A POSTROUTING -o $PHY_IFACE -j MASQUERADE
iptables -A FORWARD -i $PHY_IFACE -o $ZT_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i $ZT_IFACE -o $PHY_IFACE -j ACCEPT #开启防火墙配置生效
apt install iptables-persistent -y
netfilter-persistent save
  • 登录Web管理添加路由

    尽力表示了,还看不懂的话看下文档,按照这个方法,添加另外一条路由。

    再来概括一下吧:通过Zerotier One中分配的IP作为网关,跳到对应的网络

K2P使用

以下内容搬运自恩山论坛csl0524的帖子,稍微做了些修改,如果侵权,请联系删除

  • open-zerotier.sh脚本:
#!/bin/sh

download_ZT(){
if [ -e "/opt/bin/opkg" ];then
opkg update && opkg install zerotier
opkg remove zerotier
wget -P /tmp https://cdn.jsdelivr.net/gh/steinvenic/JSDELIVR_CDN/zerotier_1.4.6-5_mipsel-3.4.ipk
opkg install /tmp/zerotier_1.4.6-5_mipsel-3.4.ipk if [ -d "/etc/storage/ZT" ]; then
zerotier-one -d
killall zerotier-one
sleep 5
cd /etc/storage/ZT
cp -rf authtoken.secret identity.public identity.secret /opt/var/lib/zerotier-one/
fi zerotier-one -d
sleep 15
zerotier-cli join xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
zerotier-cli orbit mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
#上面的xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx改成自己的networkID
#上面的mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm 改成自己的moon id(如果有的话)
# 添加防火墙规则
sleep 20
Iface=`ifconfig | grep ^zt | awk '{print $1}'`
iptables -I FORWARD -i $Iface -j ACCEPT
iptables -I FORWARD -o $Iface -j ACCEPT
iptables -I INPUT -i $Iface -j ACCEPT #添加ZT路由表
#route add -net 172.16.64.0 netmask 255.255.240.0 gw 10.144.63.69 $Iface
#route add -net 192.168.41.0 netmask 255.255.255.0 gw 192.168.191.242 $Iface
#route add -net 192.168.13.0 netmask 255.255.255.0 gw 192.168.191.242 $Iface
#route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.191.105 $Iface
#route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.191.127 $Iface fi
} while [ ! -e "/opt/bin/zerotier-one" ]
do
download_ZT
sleep 600
done
  • 保存open-zerotier.sh脚本,放入/etc/storage目录下

  • 自定义脚本中添加以下命令

killall open-zerotier.sh
/etc/storage/open-zerotier.sh > /tmp/zerotier_log.txt 2>&1 &

  • 到zerotier后台看应该有设备连接上来了,在Auth项打勾授权
  • 切换到/etc/storage目录,在该目录下新建一个ZT的文件夹,再打开/opt/var/lib/zerotier-one/目录,复制authtoken.secret identity.public identity.secret三个文件到刚才的ZT文件夹。这三个文件夹包含着本机zerotier的网络号,每次开机zerotier自动安装好后会把这三个文件恢复,不然每次开机zerotier会重新生成一个网络号并且要后台重新授权

组网神器Zerotier One使用的更多相关文章

  1. deepin下zerotier组网

    环境:deepin 1.安装zerotier curl -s https://install.zerotier.com/ | sudo bash 官网也是有的 安装完成之后进行内网连接 sudo ze ...

  2. zerotier 远程办公方案

    武汉新肺炎疫情下,搞得人心惶惶.很多公司都要求前期远程办公 我厂日常有在家远程应急支持的情况,所以公司很早就有VPN服务.只需要申请VPN服务,开通之后就可以连上公司各种公共资源. 然而对于一些非公共 ...

  3. 微软新神器-Power BI横空出世,一个简单易用,还用得起的BI产品,你还在等什么???

    在当前互联网,由于大数据研究热潮,以及数据挖掘,机器学习等技术的改进,各种数据可视化图表层出不穷,如何让大数据生动呈现,也成了一个具有挑战性的可能,随之也出现了大量的商业化软件.今天就给大家介绍一款逆 ...

  4. 内网穿透神器ngrok

    相信做Web开发的同学们,经常会遇到需要将本地部署的Web应用能够让公网环境直接访问到的情况,例如微信应用调试.支付宝接口调试等.这个时候,一个叫ngrok的神器可能会帮到你,它提供了一个能够在公网安 ...

  5. 新编码神器Atom使用纪要

    Atom是 Github 专门为程序员推出的一个跨平台文本编辑器.她很大程度上继承了SublimeText的美,而又不仅如此.有费了蛮大力气总结了一篇关于SublimeText文章: 如何优雅地使用S ...

  6. 查看Windows下引起Oracle CPU占用率高的神器-qslice

    前言: qslice是一个win2000的工具包,能分析进程的cpu占用率,我们用于分析oracle的性能 这是绿色的软件无需安装. 我们经常会碰到oracle的CPU占用居高不下,无法快速定位到问题 ...

  7. 打造android偷懒神器———RecyclerView的万能适配器

    转载请注明出处谢谢:http://www.cnblogs.com/liushilin/p/5720926.html 很不好意思让大家久等了,本来昨天就应该写这个的,无奈公司昨天任务比较紧,所以没能按时 ...

  8. C#组件系列——又一款Excel处理神器Spire.XLS,你值得拥有(二)

    前言:上篇 C#组件系列——又一款Excel处理神器Spire.XLS,你值得拥有 介绍了下组件的两个功能,说不上特色,但确实能解决我们项目中的一些实际问题,这两天继续研究了下这个组件,觉得有些功能用 ...

  9. [.NET逆向] 破解NET的四大神器

     原本这篇文章可以更早一星期写出来与大家分享,由于某方面的原因耽搁到现在,心里竟有那么一点好像对不住大家的感觉.这当然与神器有关,因为我发现利用这四大神器我似乎觉得几乎所有的NET程序破解都不在话下了 ...

随机推荐

  1. come on! 基于LinkedHashMap实现LRU缓存

    /** * @Description 基于LinkedHashMap实现一个基于'LRU最近最少使用'算法的缓存,并且最多存MAX个值 * @Author afei * @date:2021/4/25 ...

  2. BUUCTF-MISC:二维码

    题目 解题过程 1.点击下载附件,发现是一个压缩包,解压后得到一张二维码 2.使用QR research扫描,得到的内容并不是flag 3.使用010editor打开图片分析,发现图片里面含有一个tx ...

  3. 使用 Python 来自动回微信

    准备 Python3 Python Itchat库(可以通过pip install itchat来安装) (可选)Python Pymongo库(可以通过pip install pymongo来安装) ...

  4. 【远古黑历史】List链表及其功能

    前言 我知道有学校是禁用STL的, 但STL是真的香,加个蛋,嗯,好吃 所以,本人希望有更多OIer能使用STL,减少工作量! 初见STL 首先,什么是STL? STL,全称 Standard Tem ...

  5. 1.Spring开发环境搭建——intellj

    1.在intellj中新建项目,选择JDK版本(1.8版本) 2.选择相关信息填写,注意Java版本要和上面步骤选择的版本一致. 3.选择springBoot版本,勾选Spring Web选项. 4. ...

  6. unity---脚本创建按钮

    脚本创建按钮 新建文件夹 Resources 方便引用图片 在文件Resources中新建Images,并且下载一个图片 没有图片,按钮内容无法显示 图片需要处理一下 Textrue Type 改为 ...

  7. Vue基础之 动态组件

    为什么会有动态组件> vue 通过组件机制 实现的页面功能的模块化处理,通常情况下 我们在vue中使用组件  就是先定义组件 然后再需要的地方 插入组件即可 但是在某些情况下 需要根据不同的需求 ...

  8. MVC 调试页面路径变成 Views/Controller/Action.cshtml问题

    MVC在路由里面已经写好了路径,但是调试时地址栏还是会变成 Views/Controller/Action.cshtml,导致报404错误,找不到路径. 原因可能是你将某一页面设为了起始页,导致每次运 ...

  9. drools决策表的简单使用

    目录 一.背景 二.一个简单的决策表 1.在同一个决策表中处理多个Sheet页 2.RuleSet下方可以有哪些属性 3.RuleTable下方可以有哪些属性 4.规则属性的编写 三.需求 四.实现 ...

  10. salesforce零基础学习(一百一十五)记一个有趣的bug

    本篇参考:https://help.salesforce.com/s/articleView?language=en_US&type=1&id=000319486 page layou ...