首页
关于
Search
1
AdGuardHome 安装及部署教程
43,057 阅读
2
关于微软Azure学生白嫖指南
10,626 阅读
3
搭建基于telegram的无限网盘
10,497 阅读
4
Oracle开放全部端口并关闭防火墙
10,418 阅读
5
最新Cloudflare免费自选IP教程(非Partner)
9,710 阅读
默认分类
技术搬砖
教学设计
故事奇谈
生活琐事
错题分析
精品软件
登录
找到
1
篇与
Zerotier
相关的结果
2023-11-17
Zerotier搭建私有根服务器及创建虚拟局域网
一、Zerotier 原理 1665711994820.png图片 概念 planet:核心角色,官方不允许自建私有,zerotier 的行星服务器,用于管理全球所有的 zerotier 客户端的地址信息,帮助建立客户端间的直接链接,以及在无法建立直接链接时,作为中继服务器转发设备间的流量。 moon:官方允许自建私有,作为离客户端更近的中继服务器存在,可以使转发的效率更高。 原理 客户端注册 在内网机器上启动一个 zerotier 客户端,使用 join 加入一个网络,在控制台对客户端进行授权,此时 planet 上有如下记录: 10.0.0.1 - 150.0.0.1/15679 10.0.0.2 - 160.0.0.1/22226 2.尝试 p2p 连接 当在 10.0.0.1 机器上访问 10.0.0.2,内网机器向 planet 查询到目标地址的公网 160.0.0.1,端口为 22226。 10.0.0.1 尝试与 160.0.0.1的 22226 端口进行直接数据交互,这个过程称为 udp 打洞实现 p2p 直连。 3.planet 转发 由于各种网络限制,p2p 不能直连。 此时通过 planet 转发,如果还配置了 moon 节点,此时会通过速度快的 moon 节点进行转发。 如上图则大概率从上海的 moon 节点进行数据转发,此时网络取决于 moon 的带宽。 二、私有 zerotier-planet 的优势 解除官方的设备连接数限制 提升手机客户端连接的稳定性 三、搭建私有 planet 了解了 zerotier 的概念原理,那么大概了解搭建私有 planet 的重要性。 1、运行控制器容器 docker run -d \ --name zt-ui \ -v /home/docker/zt-ui/zerotier-one:/var/lib/zerotier-one \ -v /home/docker/zt-ui/ztncui/etc:/opt/key-networks/ztncui/etc \ -p 4000:4000 \ -p 9993:9993 \ -p 9993:9993/udp \ -e MYADDR=1.1.1.1 \ -e HTTP_PORT=4000 \ -e HTTP_ALL_INTERFACES=yes \ -e ZTNCUI_PASSWD=admin123 \ --restart=always \ hausen1012/ztncui这里需要注意的是传参需要将 1.1.1.1 修改为公网 ip。 2、生成 planet 文件 docker exec -it zt-ui bash /tmp/patch.sh && \ docker restart zt-ui如果 linux 内核版本太低,可能报错 FATAL: kernel too old,那么需要升级内核。 当然,如果你觉得云服务器不太方便升级内核,那么完全可以用一台测试的虚拟机进行生成文件,文件生成后用 ftp 上传到 /home/docker/zt-ui/zerotier-one 目录,然后再启动容器。 3、测试 docker exec -it zt-ui zerotier-cli listmoons显示如下内容则表示搭建成功 [ { "id": "00000004e3b1b4b0", "roots": [ { "identity": "04e3b1b4b0:0:ea0c548b45efcc701c052305f06568c749a4647b9a5b111e2b372c05f7c3ed56ae1009c29cb1aa51d95057bf1b65b3a2f7b01d129437f6b72efd08f68281fb52", "stableEndpoints": [ "1.1.1.1/9993" ] } ], "signature": "b4f539ef93e198203d9e270c155d091769408ff98489d83bcf6444d2a95112ca7369138b98d42512caa3c878f3eff2c27ecada28f549ea19e3a407e71bbeb008d51f6ba92af17e8b6e4c1b8eacbd4abc42f0f639746ea924cffb99b539f94e2b", "timestamp": 1665642068786, "updatesMustBeSignedBy": "7fcb120079801a1ddde8c1fb6657365351bca7279e8470728f4cf01fb5efc81b57cde03338b4ea76dfd39570f74f2654d8d52a22613e77ed2e4cbb46a648a42d", "waiting": false } ]1.1.1.1 为公网 ip 则搭建 planet 成功。 四、创建私有网络 访问 http://公网ip:4000,账号密码:admin/admin123。 1、创建网络 1665677264789.png图片 2、初始化网络 点击 Easy setup 1665677326694.png图片 设置网段和子网掩码 1665677383128.png图片 五、安装 zerotier 客户端 docker 安装 既然已经搭建了私有的 planet,当然是使用自己的,需要先下载服务器 /home/docker/zt-planet/zerotier-one 目录下的 planet 文件。 1、启动 zerotier 客户端 docker run -d \ --name=zt-cli \ --device=/dev/net/tun \ --net=host \ --cap-add=NET_ADMIN \ --cap-add=SYS_ADMIN -d \ -v /home/docker/zt-client/zerotier-one:/var/lib/zerotier-one \ --restart unless-stopped \ hausen1012/zerotier2、替换 planet 文件 将服务器下载的 planet 文件上传到客户端的 /home/docker/zt-client/zerotier-one 目录。 3、重启客户端 docker restart zt-cli4、查看 planet docker exec -it zt-cli zerotier-cli listpeers可以看见 stableEndpoints 的配置是自己的公网 ip。 5、加入网络 docker exec -it zt-cli zerotier-cli join 8b8b9ed58a10bd456、授权 1665677970480.png图片 ip 也可以自己设置,不过要在刚刚设置的网段内。 1665678246335.png图片 Linux安装 1、简单快捷,只要执行以下命令一键安装即可。 安装完成后会自动在**/var/lib/zerotier-one/**下生成相关文件及目录 curl -s https://install.zerotier.com | sudo bashimg图片 2、替换planet文件 需要先下载服务器 /home/docker/zt-planet/zerotier-one 目录下的 planet 文件 将服务器下载的 planet 文件上传到客户端的 /var/lib/zerotier-one 目录 3、添加开机自启 systemctl enable zerotier-one.service4、启动zerotier-one.service systemctl start zerotier-one.service5、加入网络 zerotier-cli join ################(networkid)6、查看加入的网络的信息,比如network zerotier-cli listnetworks\# 如果连接成功,并且管理页面中勾选此客户端,则会返回以下内容 200 listnetworks <nwid> <name> <mac> <status> <type> <dev> <ZT assigned ips> 200 listnetworks 830xxxxxxxx49 high_wozniak 4a:ce:1d:66:95:9b OK PRIVATE ztqu3hhgt3 10.147.18.122/247、退出加入的network网段 zerotier-cli leave ################(networkid)8、卸载zerotier yum remove zerotier-one -y rm -rf /var/lib/zerotier-one/windows 安装 1、下载客户端 下载地址 2、安装客户端 双击安装即可 3、替换 planet 将下载好的 planet 文件复制到 C:\ProgramData\ZeroTier\One 目录下,(这个目录是个隐藏目录,需要运允许查看隐藏目录才行) 4、重启服务 如果仅仅只是重启 ui 是不行的,需要找到任务管理器 -> 服务 -> ZeroTierOneService,进行重启。 1665726393553.png图片 5、查看 planet 1665726530197.png图片 可以看见 planet 地址是自己的公网。 6、加入网络 点击右下角图标,join new network,输入刚刚创建的虚拟网络 id,我这边是 8b8b9ed58a0baa3d。 7、授权 和 dokcer 安装一样的操作,不再赘述 Android安装 有人制作了可以设置planet的版本:https://github.com/kaaass/ZerotierFix 更新日志 更新 Zerotier 核心 更新 Zerotier 核心至 1.12.2 改进消息提醒相关的用户体验 在 APP 未获得通知权限时弹窗提示用户 此弹窗提示可以被永久性关闭 MIUI 机型在成功连接网络后无法弹出 Toast 提示 更改通知类别名称为更具体的通知类型 点击状态栏通知时无法跳转至 APP 允许使用通过非官方 Planet ID 生成的 Planet 文件 允许使用通过非官方 Planet ID 生成的 Planet 文件 该功能应当能修复此前 APP 不识别部分自建 Planet 项目生成的 Planet 文件的问题 六、测试 通过上述方式将两台机器加入到网络,通过 ping 查看是否能打洞成功。其中 202 本地虚拟机,vps 是有公网 ip 的云服务器 1665710086842.png图片 ping 检测 在 10.0.0.202 机器上 ping 10.0.0.222 1665727979834.png图片 listpeers 查看到只有自己的私有根服务器,ping 的延迟不到 100ms 和直接 ping 公网 ip 差不多,说明打洞成功。 局域网 scp 检测 1665679296983.png图片 speedtest 测速 1665740929613.png图片 可以看见速度能达到十几MB,而我的根服务器是腾讯云的 3Mbps 服务器,如果通过根服务器转发肯定不可能达到这个速度,说明打洞成功。 如果没有出现以上测试情况,Zerotier也无法保证能打通的,并且打洞成功也有可能有波动,能连接,但可能是根服务器腾讯云的 3Mbps的速度,无法点对点直连 参考文章:https://www.nodeseek.com/post-37619-1
技术搬砖
# Zerotier
# 内网穿透
admin
2年前
0
1,053
0