V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
TcDhl
V2EX  ›  宽带症候群

分享下自建 ZeroTier 根节点服务端

  •  
  •   TcDhl · 2023-01-11 20:53:02 +08:00 · 5465 次点击
    这是一个创建于 716 天前的主题,其中的信息可能已经有所发展或是发生改变。

    ZeroTier 自建根节点服务端:


    适配 Debian10.10:

    • 全自动安装
    • 自动识别主机系统
    • 自动识别主机 IP,切换对应的下载节点
    • 主要解决了原版本中'显示大量历史节点记录'的 Bug

    注意事项及参考:

    • 建议用个干干净净的 Debian10 系统进行安装 ZtnCui 控制器 - 根节点服务端
    • 测试用的服务器系统为: Debian10.10 64 位
    • 提供的一键安装脚本只做了适配 Debian10 系统
    • 如果想用 Centos, 请自行解决环境搭建相关的问题

    安装步骤

    • 进入目录:
    cd ~
    
    • 下载脚本:
    wget https://agent-github.08w80.com/https://github.com/TcDhlPro/ZeroTierOne-SelfHostingNetworkControllers-ZtnCui/releases/download/v1.0.0/Auto_Install_ZtncuiForZerotier.tar.gz
    
    • 解包:
    tar -zxvf Auto_Install_ZtncuiForZerotier.tar.gz
    
    • 给脚本文件夹权限:
    chmod -R 775 Auto_Install_ZtncuiForZerotier
    
    • 进入目录:
    cd /root/Auto_Install_ZtncuiForZerotier
    
    • 启动脚本进行自动化安装:
    ./Auto_Install_ZtncuiForZerotier
    
    • 初次安装时, 脚本一般都会在倒计时后, 主动断开 ssh 连接, 会有提示, 是为了重新配置环境
    • 断开 ssh 连接后, 重新连接服务器
      • 进入目录cd /root/Auto_Install_ZtncuiForZerotier
      • 运行脚本./Auto_Install_ZtncuiForZerotier
    • 会有一小段时间配置环境......
    • 终端会提示你输入两个自定义端口[ZtnCui 的 Https 端口] [ZeroTier 的 TCP/UDP 端口]
      • 输入3000以外未占用的端口, 因为 3000 端口是被默认用作 ZtnCui-Http
    • 要记得在防火墙放开[ZtnCui 的 Http 端口][ZtnCui 的 Https 端口][ZeroTier 的 TCP/UDP 端口]
    • 等安装完成, 访问 ZtnCui 后台地址进行查看

    在官方仓库 key-networks/ztncui 基础上进行汉化并打包成可直接安装的 linux 包,包含 deb 和 rpm 格式(附带了证书 RPM-KEY-TcDhlProForZtnCui@20230110)的软件包


    新版 ZtnCui(0.8.6)控制器相关截图(汉化完成度 98%):

    • 编辑日期: 2023 年 01 月 10 日
    • 98%是因为有些没必要汉化

    输入图片说明 输入图片说明 输入图片说明 输入图片说明 输入图片说明 输入图片说明

    新版 ZtnCui(0.8.6)控制器相关截图(未完全汉化阶段):

    • 编辑日期: 2022 年

    输入图片说明 输入图片说明 输入图片说明 输入图片说明


    客户端替换 Planet 文件

    • 服务器安装完成后会在脚本执行的目录找到 planet 文件,例如 /root 下生成的 planet 文件
    • 或者使用/var/lib/zerotier-one目录中的 planet 文件

    重启服务

    • linux 重启 Zerotier: service zerotier-one restart
    • win 系统重启 Zerotier: 需要在服务中重启 ZeroTier One 这个服务

    加入自建的根节点网络

    • 客户端执行zerotier-cli join 网络 ID, 之后就可以在 web 控制中心找到设备。

    特别注意:安装成功后会变更 ZeroTier 默认的 9993 端口为你自己设定的端口

    • 初始安装成功后, zerotier-cli listpeers服务端执行命令查看节点列表,如果打印出的节点列表是空的,则安装正确
    • 无论是什么样的安装方法,在初始安装完成后打印出来如果有其他节点信息,都是错误的
    • 自行部署的 Zerotier 根服务器,服务端在打印出的节点信息中,应该只显示有效连接的客户端
    • 客户端替换 planet 文件后,在不加入自己根服务器网络的情况下, 打印出的节点列表也是空的
    • 加入自己根服务器网络后zerotier-cli listpeers客户端执行命令查看节点信息, 如果 Planet 只有一个,且 IP 为自己服务器,则安装正确.
    27 条回复    2023-01-14 16:55:48 +08:00
    cxtrinityy
        1
    cxtrinityy  
       2023-01-11 21:44:47 +08:00
    感觉 op 很熟 zerotier, 借楼问点问题. 这是自建 planet 么? 为什么要自建 planet? planet 和 moon 啥区别, 看了官方文档, 理解的不太透彻, 没理解错的话, 如果 moon orbit 官方的 planet, 依然是优先通过 moon 打洞, 不行再用官方的 planet 打洞? 那这样只要 moon 可用, 就没必要 planet 吧?
    lithiumii
        2
    lithiumii  
       2023-01-11 22:02:58 +08:00   ❤️ 1
    @cxtrinityy 首先是给不信任第三方服务的人准备的,自建 Planet 数据就可以不走官方的了。其次是理论上有 Moon 的时候 Moon 优先没错,但跑个一年半载总有那么一两次突然就抽风了,这时候官方的 Planet 由于在国外,效果也不是很好,导致连不上或者速度感人。
    TcDhl
        3
    TcDhl  
    OP
       2023-01-11 22:49:33 +08:00   ❤️ 1
    @cxtrinityy #1
    如果你是部署了 moon 方式, 假设部署 moon 的机器是国内或者香港的, 那么在你某个 zerotier 客户端, 会同时存在官方节点和你的 moon 节点.

    如果你是部署了 planet 方式, 假设部署 planet 的机器是国内或者香港的, 那么在你某个 zerotier 客户端, 只能通过你的 planet 那台机器进行握手(不会再有官方节点, 对于境内的人来说, 相当于是加快了握手速度和某种程度上提高了两端打洞的稳定性)

    自建 planet 肯定是优于 moon 的
    这两种方式的打洞, 遇到跨运营商的话, 效果都是没那么好, 我是家庭网络的客户端都是电信, 华东那一片的打洞起来很快很稳, 家庭网络打洞到服务器网络也蛮稳
    jiangboyueplus
        4
    jiangboyueplus  
       2023-01-11 22:53:02 +08:00 via Android
    马克 抽空实践下
    Yien
        5
    Yien  
       2023-01-11 23:26:11 +08:00
    感谢分享!👍
    Lentin
        6
    Lentin  
       2023-01-11 23:30:01 +08:00
    https://github.com/jonnyan404/zerotier-planet
    用 docker 更方便一些……
    laoyur
        7
    laoyur  
       2023-01-11 23:33:21 +08:00
    @TcDhl 电信同省的两个客户端有时会互相 ping 不通,现象是通了 10s 左右就会不通个 30s 的样子,这种是被电信 qos 了吗?一般等个几个小时又会正常,但时不时遇到这种情况是真要命。
    TcDhl
        8
    TcDhl  
    OP
       2023-01-11 23:41:13 +08:00
    @laoyur #7
    我是上海-江苏-镇江 这三个地方的家庭网络穿透起来蛮稳的, 电信宽带
    TcDhl
        9
    TcDhl  
    OP
       2023-01-11 23:49:02 +08:00
    @Lentin #6
    他这个如果修复了那个 bug 的话, 那 docker 倒是更方便点
    mercury233
        10
    mercury233  
       2023-01-12 08:05:50 +08:00
    ZtnCui 不需要长期启动,有新设备加入时手动开启一会就行
    miyuki
        11
    miyuki  
       2023-01-12 08:36:12 +08:00
    我理解的:Planet 和 Moon 翻译过来就是行星和卫星,如果 Planet 是自己建的,那么肯定只会使用环绕这个 Planet 的 Moon
    YGBlvcAK
        12
    YGBlvcAK  
       2023-01-12 10:15:40 +08:00 via Android
    之前也搞过自建 planet ,遇到过一个问题,就是一段时间后,某些客户端就连不上了,查看连接是连接到美国的 zerotier 官方节点,jonnyan404 和另一个大佬的,都是这样
    xiaonian233
        13
    xiaonian233  
       2023-01-12 11:28:08 +08:00
    支持 op ,感觉如果只是临时用一下 n2n 是更轻量点
    sun82kg
        14
    sun82kg  
       2023-01-12 15:09:02 +08:00
    @TcDhl 实测 没修
    TcDhl
        15
    TcDhl  
    OP
       2023-01-12 15:12:43 +08:00
    @YGBlvcAK #12
    每个客户端其实也要替换 planet 文件的
    TcDhl
        16
    TcDhl  
    OP
       2023-01-12 15:13:08 +08:00
    @sun82kg #14
    docker 那个没修的话, 那你可以试试我这个
    TcDhl
        17
    TcDhl  
    OP
       2023-01-12 15:17:18 +08:00
    @miyuki #11
    自建了 Planet 后就没必要再设置 Moon 了
    sun82kg
        18
    sun82kg  
       2023-01-12 15:25:09 +08:00
    大佬,要是做个 docker 版就好了。 群晖里也能随意部署
    TcDhl
        19
    TcDhl  
    OP
       2023-01-12 15:40:02 +08:00
    @sun82kg #18
    docker 我还不是很精, 等后面玩熟了再出个 docker 版的哈哈
    YGBlvcAK
        20
    YGBlvcAK  
       2023-01-12 16:23:34 +08:00 via Android
    @TcDhl 当然都替换了,不然怎么连上自己的 planet
    TcDhl
        21
    TcDhl  
    OP
       2023-01-12 16:42:58 +08:00
    @YGBlvcAK #20
    那肯定没整对, 正常自建完成且替换好 planet 后, 除了你服务器的 IP, 是不会有其他节点的
    troilus
        22
    troilus  
       2023-01-12 19:32:39 +08:00
    DDNS 支持吗?
    TcDhl
        23
    TcDhl  
    OP
       2023-01-12 20:28:34 +08:00
    @troilus #22
    DDNS 和 zerotier 共存的话你可以试试 OpenWrt
    acupnocup
        24
    acupnocup  
       2023-01-14 08:50:15 +08:00
    好棒,收藏一下。
    zeze0556
        25
    zeze0556  
       2023-01-14 14:50:17 +08:00
    version: '2.0'
    services:
    ztncui:
    container_name: zerotier
    restart: always
    networks:
    zerotier_net:
    ipv4_address: 192.168.x.x
    volumes:
    - "/mnt/user/appdata/docker_server/zerotier_keynetworks/opt:/opt/key-networks/ztncui/etc:rw"
    - "/mnt/user/appdata/docker_server/zerotier_keynetworks/zerotier-one:/var/lib/zerotier-one:rw"
    environment:
    - HTTP_PORT=4000
    - HTTP_ALL_INTERFACES=yes
    - ZTNCUI_PASSWD=passwd
    ports:
    - '4000:4000'
    image: keynetworks/ztncui
    networks:
    zerotier_net:
    external:
    name: br0
    TcDhl
        26
    TcDhl  
    OP
       2023-01-14 15:54:43 +08:00
    @zeze0556 #25
    你这个应该是 Jonnyan404 这位兄弟的 Docker 版
    zeze0556
        27
    zeze0556  
       2023-01-14 16:55:48 +08:00
    @TcDhl 我喜欢简单直接的一键部署方式。目前我用在 unraid 中,用了大半年了,爽歪歪
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1097 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:04 · PVG 03:04 · LAX 11:04 · JFK 14:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.