zeroTier

问题

使用ZeroTier自建的服务延迟和丢包率过高

原因

中继路由跳数过多,且服务器在海外,连接延迟不稳定
20230113_zerotier2.png

解决方法

用一台有公网IP的云服务器,在上面配置moon服务

前置条件

  • 手上有一台有公网IP的云服务器
  • 可以远程SSH登录该服务器
  • 云服务器防火墙需要打开 9993 端口
  • 云服务器本身在运行 ZeroTier 服务

步骤

  1. 登录云服务器后台(SSH或直接网页端登录)
  2. 安装 ZeroTier 服务

    curl -s https://install.zerotier.com/| sudo bash

    安装后会出现 Success! You are ZeroTier address[XXXX..XX].(方括号中就是moonID)
    20230114_z.png

  3. 加入Network(ZTID为要加入的ZeroTier Network ID)

    zerotier-cli join ZTID

    20230114_z2.png

  4. cd /var/lib/zerotier-one
    sudo zerotier-idtool initmoon identity.public > moon.json
  5. 修改配置文件 moon.json,找到"stableEndpoints":[ "23.23.23.23/9993" ](中括号中填入IP)(可以使用有SFTP的终端连接,我这里使用XShell)
    20230114_z3a.png
  6. sudo zerotier-idtool genmoon moon.json
    mkdir moons.d
    mv ./*.moon ./moons.d/

    20230114_z4a.png

  7. 重启 ZeroTier 服务

    systemctl restart zerotier-one
  8. 加入moon命令(这里moonID用前面得到的moonID替换)

    zerotier-cli orbit moonID moonID

    20230114_z5.png

  9. 检验

    zerotier-cli listpeers

    若列表中有MOON可以视作成功加入moon服务
    20230114_z6.png

实测


正在 Ping 192.168.196.* 具有 32 字节的数据:

192.168.196.* 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 422ms,最长 = 762ms,平均 = 547ms

192.168.196.* 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 527ms,最长 = 703ms,平均 = 628ms

延迟仍然很高,但是丢包率下降了不少,延迟我这里估计是我手机的信号的问题,后面换成异地的家宽网络测试后延迟下降到50ms以内,基本满足需求。

资料附录

  1. 资料来源(视频):https://www.youtube.com/watch?v=OzKBXBwBrUQ