Jonnyan404 / zerotier-planet

一分钟自建zerotier-planet
https://mrdoc.fun
GNU General Public License v3.0
1.35k stars 268 forks source link

建议作者修改描述:此项目并不是搭建私有的planet,只是一个私有的controller + ui。强烈建议新手阅读!! #11

Open bevishwang opened 2 years ago

bevishwang commented 2 years ago

经过本人踩了多个坑后,结合各方资料,得出了以下结论:

  1. 此项目并非用于搭建私有的planet,只是一个私有controller + ui,效果与作者的描述一致相关引用的描述
  2. 在使用官网的控制器时无法建立直接链接时,使用自建私有的控制器极大概率也无法建立直接链接(亲测)
  3. 解决因设备间无法建立直连而带来的高延迟问题的正确方法是搭建私有的moon,无论是使用私有的controller还是使用官网的controller,因为各种网络因素而无法建立直连时,在没有建立私有的moon的情况下,都只会走官方的全球planet服务器转发,只有在搭建了私有的moon时,才会使用离客户端更近的moon服务器进行转发
  4. 现在zerotier官方实际上并没有提供搭建私有planet的途径,意味着所有使用zerotier的设备都必须接入互联网,只能搭建私有moon(在未来的2.0版本中也将移除)

本人在使用官网的控制器且可以建立直接链接的场景中,设备间延迟在10ms以内,网速可以跑满;在无法建立直接链接时,使用官方的planet服务器做转发,延迟在400ms左右浮动,网速100k左右,使用基于aliyun服务器搭建的私有moon做转发,延迟在30ms以内,网速可以跑满aliyun服务器的网速上限。

关于几个相关术语的个人理解:

  1. planet:核心角色,官方不允许自建私有,zerotier的行星服务器,用于管理全球所有的zerotier客户端的地址信息,帮助建立客户端间的直接链接,以及在无法建立直接链接时,作为中继服务器转发设备间的流量
  2. controller:控制器,官方允许自建私有(不包含ui,可由用户自行实现,各接口使用json交互),客户端的管理者,负责管理各个客户端间的配置信息
  3. moon:官方允许自建私有,作为离客户端更近的中继服务器存在,可以使转发的效率更高
jqtmviyu commented 2 years ago

使用作者的docker, 最终中心节点显示为leaf, 测试移动4g和电信宽带延迟为500ms, 到中心节点分别为120ms和40ms, 实际没有走自定义的节点. 经过研究, 需要再进行设置. 提供下思路, 如下:

  1. compose需要增加ports: '9993:9993'和'9993:9993/udp', 服务器和防火墙也得放行
  2. 进入容器, 生成moon.json
  3. 拷贝moon.json到宿主机, 修改stableEndpoints
  4. 在宿主机用mkmoonworld-x86生成行星文件
  5. 把修改后的moon.json拷回容器, 在容器内生成moon文件, 创建moons.d文件夹, 放进去. 拷贝一份到宿主机备用
  6. 把行星文件替换回容器
  7. 重启容器
  8. 把客户端的planet文件替换
  9. 安卓端的话, 实测单独加载planet不生效. 加载moon文件, 关闭官方行星节点, 生效

具体参考 https://github.com/xubiaolin/docker-zerotier-planet 里面的代码实现和各种生成moon教程

######## 仅供参考 #########

  1. 下载

    git clone https://github.com/Jonnyan404/zerotier-planet
    cd zerotier-planet
    vim docker-compose.yml
  2. 修改

    ### 参考
    ### date:2021年11月29日
    ### author: www.mrdoc.fun | jonnyan404
    ### 转载请保留来源
    version: '2.0'
    services:
       ztncui:
           container_name: ztncui
           restart: always
           environment:
               # - MYADDR=公网地址(不设置该项自动获取)
               - MYADDR=127.0.0.1  # 改成自己的服务器公网ip
               - HTTP_PORT=3443
               - HTTP_ALL_INTERFACES=yes
               - ZTNCUI_PASSWD=root
           ports:
               - '3443:3443'  # 设置网页的端口
               - '9993:9993'  # 作为中心节点,提供9993端口给客户端用,一般是9993
               - '9993:9993/udp'
           volumes:
               - './zerotier-one:/var/lib/zerotier-one'
               - './ztncui/etc:/opt/key-networks/ztncui/etc'
               # 按实际路径挂载卷, 冒号前面是宿主机的, 支持相对路径
           image: keynetworks/ztncui
  3. 运行

    docker-compose up -d
    
    docker images # 查看镜像
    docker container ps -a # 查看容器
    
    docker exec -it ztncui bash # 进入容器
    # 在容器内操作
    cd /var/lib/zerotier-one
    ls -l
    # 生成moon配置文件
    zerotier-idtool initmoon identity.public > moon.json
    chmod 777 moon.json
  4. 新建一个terminal, 在容器外修改moon.json, 位置对应挂载位置

    修改stableEndpoints, 注意格式和实际公网ip

    {
    "id": "b72b5e9e1a",
    "objtype": "world",
    "roots": [
     {
      "identity": "b72b5e9e1a:0:a892e51d2ef94ef941e4c499af01fbc2903f7ad2fd53e9370f9ac6260c2f5d2484fd90756bec0c410675a81b7cf61d2bb885783bd6a8c28bce83bcab5f03fe14",
      "stableEndpoints": ["127.0.0.1/9993"]
     }
    ],
    "signingKey": "45f0613e569a0549c74293c39b30495b594a003534290e8ade9ef82877aa7505d7a73eeabfc22c97c404e4caaf9f3c9eed2b134d696935c966e28f523364f15f",
    "signingKey_SECRET": "cc6afd67e7b7f84a92e2c8d3c2e7212c71e2ad0a4f5b3c03bf60ab1cd3b99281b57d9a2958d2bd8fc2bc77fdf2a1160099c2c61d3d9acc8cb311673ee120b4a6",
    "updatesMustBeSignedBy": "45f0613e569a0549c74293c39b30495b594a003534290e8ade9ef82877aa7505d7a73eeabfc22c97c404e4caaf9f3c9eed2b134d696935c966e28f523364f15f",
    "worldType": "moon"
    }
  5. 容器内生成moon文件

    zerotier-idtool genmoon moon.json
    mkdir moons.d
    cp *.moon moons.d/
  6. 容器外生成planet文件

    • 拷贝一份moon文件, 客户端可以用到

    • 下载mkmoonworld, 拷贝moon.json, 放在一个目录下

    • ./mkmoonworld-x86_64 ./moon.json
      mv world.bin planet
    • # 复制到容器内
      docker cp ./planet ztncui:/var/lib/zerotier-one
  7. 重启容器

    docker restart ztncui
    docker exec -it ztncui bash # 进入容器
    # 在容器内操作
    cd /var/lib/zerotier-one
    # 查看moon
    zerotier-cli listmoons
  8. 访问ip+端口对应的设置页面

  9. 替换客户端的planet文件并重启服务, 再加入网络, 在网页端授权

ruchid123123 commented 2 years ago

这个版本最高限速还是100mbps吗

simplove commented 2 years ago

你说得很对,在同一台服务器上面再搞一个moon就可以了。

chenyaofo commented 2 years ago

@jqtmviyu 非常感谢您的教程 我有一点疑问,按照我的理解,这个moon.json只是中间产物,最终是为了生成planet文件的,那么在您教程中的第5步中”在容器内生成moon文件“:

mkdir moons.d
cp *.moon moons.d/

这两行命令是不是没有必要的?

Kainblake commented 2 years ago

网络小白,想确认一下

  1. 现在有个准信,此github项目就是个控制器+ui了吗?
  2. 按照上面那位大神额外的修改步骤,也只是做了一个自用的moon服务器?但是这个moon服务器可以供给ios和android端使用?(因为现在官方的ios和android端都不支持orbit moon)
bevishwang commented 2 years ago

网络小白,想确认一下

  1. 现在有个准信,此github项目就是个控制器+ui了吗?
  2. 按照上面那位大神额外的修改步骤,也只是做了一个自用的moon服务器?但是这个moon服务器可以供给ios和android端使用?(因为现在官方的ios和android端都不支持orbit moon)
  1. 是的
  2. 以官方为准,官方不支持的话所有下层都没戏
Wu-Wenxiao commented 2 years ago

您好,请问在控制界面,为啥最后的Peer address / latency部分会出现一个172.18.0.1的地址,似乎这个地址出现后内网内的机子就再也ping不通了。

adminhxx commented 2 years ago

是可以创建私有planet的,相关构建代码在 ZeroTierOne/attic/world/ 目录下。

Wu-Wenxiao commented 2 years ago

是可以创建私有planet的,相关构建代码在 ZeroTierOne/attic/world/ 目录下。

好的好的,谢谢您,我已经借助腾讯云成功创建好了一个私有planet,谢谢您!!!!祝生活舒畅工作顺利!!

zzm88 commented 2 years ago

是可以创建私有planet的,相关构建代码在 ZeroTierOne/attic/world/ 目录下。

好的好的,谢谢您,我已经借助腾讯云成功创建好了一个私有planet,谢谢您!!!!祝生活舒畅工作顺利!!

可以说说创建过程吗

Wu-Wenxiao commented 2 years ago

是可以创建私有planet的,相关构建代码在 ZeroTierOne/attic/world/ 目录下。

好的好的,谢谢您,我已经借助腾讯云成功创建好了一个私有planet,谢谢您!!!!祝生活舒畅工作顺利!!

可以说说创建过程吗

兄弟你好,按照这位老哥说的做就好,我已经成功了,没有一点问题。https://github.com/Jonnyan404/zerotier-planet/issues/11#issuecomment-1059961262

Wu-Wenxiao commented 2 years ago

如果有问题,欢迎私信问我,我觉得我已经基本上把所有的坑全踩过了。

therehello commented 2 years ago

如果有问题,欢迎私信问我,我觉得我已经基本上把所有的坑全踩过了。

image

可以问一下这种是什么情况吗😭

Wu-Wenxiao commented 2 years ago

有没有一种可能你的Linux是64位的,你用的是mkmoon32位的。我看下面有64位的下载链接https://github.com/kaaass/ZeroTierOne/releases/tag/mkmoonworld-1.0,我觉得可能是你没有32位的库。

jqtmviyu commented 2 years ago

如果有问题,欢迎私信问我,我觉得我已经基本上把所有的坑全踩过了。

image

可以问一下这种是什么情况吗😭

也有可能是linux内核过旧, 我服务器上的centos7也是这样提示, 后来我是在本地manjaro上生成的, 你可以按照@hustwwx 的试下, 或者用虚拟机装支持滚动更新的linux试下, 甚至升级内核.

jqtmviyu commented 2 years ago

@jqtmviyu 非常感谢您的教程 我有一点疑问,按照我的理解,这个moon.json只是中间产物,最终是为了生成planet文件的,那么在您教程中的第5步中”在容器内生成moon文件“:

mkdir moons.d
cp *.moon moons.d/

这两行命令是不是没有必要的?

理论上是没必要的, 只需要行星节点, 因为当时网络上的教程又乱又杂, 其中各种博客中以自建moon节点为主. 我也不清楚最终会不会生效, 所以干脆把行星节点和月亮节点都换了. 其中 v2ex上有人提供了支持自定义节点的android app, 只加载planet并不能生效, 但加载moon却ok. 我现在可以用, 暂时没时间去折腾. 或许你可以试下删除容器里的moon, 重启后看是否正常.

Wu-Wenxiao commented 1 year ago

使用作者的docker, 最终中心节点显示为leaf, 测试移动4g和电信宽带延迟为500ms, 到中心节点分别为120ms和40ms, 实际没有走自定义的节点. 经过研究, 需要再进行设置. 提供下思路, 如下:

  1. compose需要增加ports: '9993:9993'和'9993:9993/udp', 服务器和防火墙也得放行
  2. 进入容器, 生成moon.json
  3. 拷贝moon.json到宿主机, 修改stableEndpoints
  4. 在宿主机用mkmoonworld-x86生成行星文件
  5. 把修改后的moon.json拷回容器, 在容器内生成moon文件, 创建moons.d文件夹, 放进去. 拷贝一份到宿主机备用
  6. 把行星文件替换回容器
  7. 重启容器
  8. 把客户端的planet文件替换
  9. 安卓端的话, 实测单独加载planet不生效. 加载moon文件, 关闭官方行星节点, 生效

具体参考 https://github.com/xubiaolin/docker-zerotier-planet 里面的代码实现和各种生成moon教程

######## 仅供参考 #########

  1. 下载
    git clone https://github.com/Jonnyan404/zerotier-planet
    cd zerotier-planet
    vim docker-compose.yml
  2. 修改
    ### 参考
    ### date:2021年11月29日
    ### author: www.mrdoc.fun | jonnyan404
    ### 转载请保留来源
    version: '2.0'
    services:
       ztncui:
           container_name: ztncui
           restart: always
           environment:
               # - MYADDR=公网地址(不设置该项自动获取)
               - MYADDR=127.0.0.1  # 改成自己的服务器公网ip
               - HTTP_PORT=3443
               - HTTP_ALL_INTERFACES=yes
               - ZTNCUI_PASSWD=root
           ports:
               - '3443:3443'  # 设置网页的端口
               - '9993:9993'  # 作为中心节点,提供9993端口给客户端用,一般是9993
               - '9993:9993/udp'
           volumes:
               - './zerotier-one:/var/lib/zerotier-one'
               - './ztncui/etc:/opt/key-networks/ztncui/etc'
               # 按实际路径挂载卷, 冒号前面是宿主机的, 支持相对路径
           image: keynetworks/ztncui
  3. 运行

    docker-compose up -d
    
    docker images # 查看镜像
    docker container ps -a # 查看容器
    
    docker exec -it ztncui bash # 进入容器
    # 在容器内操作
    cd /var/lib/zerotier-one
    ls -l
    # 生成moon配置文件
    zerotier-idtool initmoon identity.public > moon.json
    chmod 777 moon.json
  4. 新建一个terminal, 在容器外修改moon.json, 位置对应挂载位置 修改stableEndpoints, 注意格式和实际公网ip
    {
    "id": "b72b5e9e1a",
    "objtype": "world",
    "roots": [
     {
      "identity": "b72b5e9e1a:0:a892e51d2ef94ef941e4c499af01fbc2903f7ad2fd53e9370f9ac6260c2f5d2484fd90756bec0c410675a81b7cf61d2bb885783bd6a8c28bce83bcab5f03fe14",
      "stableEndpoints": ["127.0.0.1/9993"]
     }
    ],
    "signingKey": "45f0613e569a0549c74293c39b30495b594a003534290e8ade9ef82877aa7505d7a73eeabfc22c97c404e4caaf9f3c9eed2b134d696935c966e28f523364f15f",
    "signingKey_SECRET": "cc6afd67e7b7f84a92e2c8d3c2e7212c71e2ad0a4f5b3c03bf60ab1cd3b99281b57d9a2958d2bd8fc2bc77fdf2a1160099c2c61d3d9acc8cb311673ee120b4a6",
    "updatesMustBeSignedBy": "45f0613e569a0549c74293c39b30495b594a003534290e8ade9ef82877aa7505d7a73eeabfc22c97c404e4caaf9f3c9eed2b134d696935c966e28f523364f15f",
    "worldType": "moon"
    }
  5. 容器内生成moon文件
    zerotier-idtool genmoon moon.json
    mkdir moons.d
    cp *.moon moons.d/
  6. 容器外生成planet文件

    • 拷贝一份moon文件, 客户端可以用到
    • 下载mkmoonworld, 拷贝moon.json, 放在一个目录下
    • ./mkmoonworld-x86_64 ./moon.json
      mv world.bin planet
    • # 复制到容器内
      docker cp ./planet ztncui:/var/lib/zerotier-one
  7. 重启容器
    docker restart ztncui
    docker exec -it ztncui bash # 进入容器
    # 在容器内操作
    cd /var/lib/zerotier-one
    # 查看moon
    zerotier-cli listmoons
  8. 访问ip+端口对应的设置页面
  9. 替换客户端的planet文件并重启服务, 再加入网络, 在网页端授权

请问ztncui安装好后有没有类似于官方的API,可以返回用户信息和在线状况的命令呀。

Wu-Wenxiao commented 1 year ago

使用作者的docker, 最终中心节点显示为leaf, 测试移动4g和电信宽带延迟为500ms, 到中心节点分别为120ms和40ms, 实际没有走自定义的节点. 经过研究, 需要再进行设置. 提供下思路, 如下:

  1. compose需要增加ports: '9993:9993'和'9993:9993/udp', 服务器和防火墙也得放行
  2. 进入容器, 生成moon.json
  3. 拷贝moon.json到宿主机, 修改stableEndpoints
  4. 在宿主机用mkmoonworld-x86生成行星文件
  5. 把修改后的moon.json拷回容器, 在容器内生成moon文件, 创建moons.d文件夹, 放进去. 拷贝一份到宿主机备用
  6. 把行星文件替换回容器
  7. 重启容器
  8. 把客户端的planet文件替换
  9. 安卓端的话, 实测单独加载planet不生效. 加载moon文件, 关闭官方行星节点, 生效

具体参考 https://github.com/xubiaolin/docker-zerotier-planet 里面的代码实现和各种生成moon教程

######## 仅供参考 #########

  1. 下载
    git clone https://github.com/Jonnyan404/zerotier-planet
    cd zerotier-planet
    vim docker-compose.yml
  2. 修改
    ### 参考
    ### date:2021年11月29日
    ### author: www.mrdoc.fun | jonnyan404
    ### 转载请保留来源
    version: '2.0'
    services:
       ztncui:
           container_name: ztncui
           restart: always
           environment:
               # - MYADDR=公网地址(不设置该项自动获取)
               - MYADDR=127.0.0.1  # 改成自己的服务器公网ip
               - HTTP_PORT=3443
               - HTTP_ALL_INTERFACES=yes
               - ZTNCUI_PASSWD=root
           ports:
               - '3443:3443'  # 设置网页的端口
               - '9993:9993'  # 作为中心节点,提供9993端口给客户端用,一般是9993
               - '9993:9993/udp'
           volumes:
               - './zerotier-one:/var/lib/zerotier-one'
               - './ztncui/etc:/opt/key-networks/ztncui/etc'
               # 按实际路径挂载卷, 冒号前面是宿主机的, 支持相对路径
           image: keynetworks/ztncui
  3. 运行

    docker-compose up -d
    
    docker images # 查看镜像
    docker container ps -a # 查看容器
    
    docker exec -it ztncui bash # 进入容器
    # 在容器内操作
    cd /var/lib/zerotier-one
    ls -l
    # 生成moon配置文件
    zerotier-idtool initmoon identity.public > moon.json
    chmod 777 moon.json
  4. 新建一个terminal, 在容器外修改moon.json, 位置对应挂载位置 修改stableEndpoints, 注意格式和实际公网ip
    {
    "id": "b72b5e9e1a",
    "objtype": "world",
    "roots": [
     {
      "identity": "b72b5e9e1a:0:a892e51d2ef94ef941e4c499af01fbc2903f7ad2fd53e9370f9ac6260c2f5d2484fd90756bec0c410675a81b7cf61d2bb885783bd6a8c28bce83bcab5f03fe14",
      "stableEndpoints": ["127.0.0.1/9993"]
     }
    ],
    "signingKey": "45f0613e569a0549c74293c39b30495b594a003534290e8ade9ef82877aa7505d7a73eeabfc22c97c404e4caaf9f3c9eed2b134d696935c966e28f523364f15f",
    "signingKey_SECRET": "cc6afd67e7b7f84a92e2c8d3c2e7212c71e2ad0a4f5b3c03bf60ab1cd3b99281b57d9a2958d2bd8fc2bc77fdf2a1160099c2c61d3d9acc8cb311673ee120b4a6",
    "updatesMustBeSignedBy": "45f0613e569a0549c74293c39b30495b594a003534290e8ade9ef82877aa7505d7a73eeabfc22c97c404e4caaf9f3c9eed2b134d696935c966e28f523364f15f",
    "worldType": "moon"
    }
  5. 容器内生成moon文件
    zerotier-idtool genmoon moon.json
    mkdir moons.d
    cp *.moon moons.d/
  6. 容器外生成planet文件

    • 拷贝一份moon文件, 客户端可以用到
    • 下载mkmoonworld, 拷贝moon.json, 放在一个目录下
    • ./mkmoonworld-x86_64 ./moon.json
      mv world.bin planet
    • # 复制到容器内
      docker cp ./planet ztncui:/var/lib/zerotier-one
  7. 重启容器
    docker restart ztncui
    docker exec -it ztncui bash # 进入容器
    # 在容器内操作
    cd /var/lib/zerotier-one
    # 查看moon
    zerotier-cli listmoons
  8. 访问ip+端口对应的设置页面
  9. 替换客户端的planet文件并重启服务, 再加入网络, 在网页端授权

请问在这样的docker下,控制器的网页的文件在哪里呀,我在docker内和docker外都找了一遍,还是找不到。

Wu-Wenxiao commented 1 year ago

使用作者的docker, 最终中心节点显示为leaf, 测试移动4g和电信宽带延迟为500ms, 到中心节点分别为120ms和40ms, 实际没有走自定义的节点. 经过研究, 需要再进行设置. 提供下思路, 如下:

  1. compose需要增加ports: '9993:9993'和'9993:9993/udp', 服务器和防火墙也得放行
  2. 进入容器, 生成moon.json
  3. 拷贝moon.json到宿主机, 修改stableEndpoints
  4. 在宿主机用mkmoonworld-x86生成行星文件
  5. 把修改后的moon.json拷回容器, 在容器内生成moon文件, 创建moons.d文件夹, 放进去. 拷贝一份到宿主机备用
  6. 把行星文件替换回容器
  7. 重启容器
  8. 把客户端的planet文件替换
  9. 安卓端的话, 实测单独加载planet不生效. 加载moon文件, 关闭官方行星节点, 生效

具体参考 https://github.com/xubiaolin/docker-zerotier-planet 里面的代码实现和各种生成moon教程

######## 仅供参考 #########

  1. 下载
    git clone https://github.com/Jonnyan404/zerotier-planet
    cd zerotier-planet
    vim docker-compose.yml
  2. 修改
    ### 参考
    ### date:2021年11月29日
    ### author: www.mrdoc.fun | jonnyan404
    ### 转载请保留来源
    version: '2.0'
    services:
       ztncui:
           container_name: ztncui
           restart: always
           environment:
               # - MYADDR=公网地址(不设置该项自动获取)
               - MYADDR=127.0.0.1  # 改成自己的服务器公网ip
               - HTTP_PORT=3443
               - HTTP_ALL_INTERFACES=yes
               - ZTNCUI_PASSWD=root
           ports:
               - '3443:3443'  # 设置网页的端口
               - '9993:9993'  # 作为中心节点,提供9993端口给客户端用,一般是9993
               - '9993:9993/udp'
           volumes:
               - './zerotier-one:/var/lib/zerotier-one'
               - './ztncui/etc:/opt/key-networks/ztncui/etc'
               # 按实际路径挂载卷, 冒号前面是宿主机的, 支持相对路径
           image: keynetworks/ztncui
  3. 运行

    docker-compose up -d
    
    docker images # 查看镜像
    docker container ps -a # 查看容器
    
    docker exec -it ztncui bash # 进入容器
    # 在容器内操作
    cd /var/lib/zerotier-one
    ls -l
    # 生成moon配置文件
    zerotier-idtool initmoon identity.public > moon.json
    chmod 777 moon.json
  4. 新建一个terminal, 在容器外修改moon.json, 位置对应挂载位置 修改stableEndpoints, 注意格式和实际公网ip
    {
    "id": "b72b5e9e1a",
    "objtype": "world",
    "roots": [
     {
      "identity": "b72b5e9e1a:0:a892e51d2ef94ef941e4c499af01fbc2903f7ad2fd53e9370f9ac6260c2f5d2484fd90756bec0c410675a81b7cf61d2bb885783bd6a8c28bce83bcab5f03fe14",
      "stableEndpoints": ["127.0.0.1/9993"]
     }
    ],
    "signingKey": "45f0613e569a0549c74293c39b30495b594a003534290e8ade9ef82877aa7505d7a73eeabfc22c97c404e4caaf9f3c9eed2b134d696935c966e28f523364f15f",
    "signingKey_SECRET": "cc6afd67e7b7f84a92e2c8d3c2e7212c71e2ad0a4f5b3c03bf60ab1cd3b99281b57d9a2958d2bd8fc2bc77fdf2a1160099c2c61d3d9acc8cb311673ee120b4a6",
    "updatesMustBeSignedBy": "45f0613e569a0549c74293c39b30495b594a003534290e8ade9ef82877aa7505d7a73eeabfc22c97c404e4caaf9f3c9eed2b134d696935c966e28f523364f15f",
    "worldType": "moon"
    }
  5. 容器内生成moon文件
    zerotier-idtool genmoon moon.json
    mkdir moons.d
    cp *.moon moons.d/
  6. 容器外生成planet文件

    • 拷贝一份moon文件, 客户端可以用到
    • 下载mkmoonworld, 拷贝moon.json, 放在一个目录下
    • ./mkmoonworld-x86_64 ./moon.json
      mv world.bin planet
    • # 复制到容器内
      docker cp ./planet ztncui:/var/lib/zerotier-one
  7. 重启容器
    docker restart ztncui
    docker exec -it ztncui bash # 进入容器
    # 在容器内操作
    cd /var/lib/zerotier-one
    # 查看moon
    zerotier-cli listmoons
  8. 访问ip+端口对应的设置页面
  9. 替换客户端的planet文件并重启服务, 再加入网络, 在网页端授权

您好,方便问一下,ztncui界面中的active bridge功能是有什么用的呀。

io-max commented 1 year ago

使用m1 的mac mini 连接自己搭建的行星服务器,一直提示REQUESTING_CONFIGURATION, 但是intel的mac却能连接上。你们有遇到这种情况吗?

kanon-H commented 1 year ago

如果有问题,欢迎私信问我,我觉得我已经基本上把所有的坑全踩过了。

请教一下,那个Planet文件在哪里取呀,根据教程http://ip:3180 或者在目录的./ztncui/etc/myfs/里都只有一个moon文件

kanon-H commented 1 year ago

如果有问题,欢迎私信问我,我觉得我已经基本上把所有的坑全踩过了。

又重新执行了一遍,发现没有planet,请教一下这是什么原因

wuchjun commented 1 year ago

服务器最低内核版本要求多少啊?

czou613 commented 1 year ago

搭建的行星服务器成功,但是plant文件替换到window客户端后,zeroTier one 重启连接失败

b1ank1108 commented 1 year ago

您好,方便问一下,ztncui界面中的active bridge功能是有什么用的呀。

大佬现在知道是干啥用的了吗,还请告知

anonsaber commented 1 year ago

@b1ank1108 启用虚拟网卡到物理网卡的桥接。

linkseven commented 1 year ago

如果有问题,欢迎私信问我,我觉得我已经基本上把所有的坑全踩过了。

请问一下windows服务器如何编译生成world.bin文件呢

U11Leung commented 1 year ago

如果搭建planet并且需要它同时负责转发的任务,是不是还需要生成moon,即planet和moon在同一台主机上都要生成?客户端只需要替换planet文件即可,不需要放置moon文件?

Egolas commented 10 months ago

请问加入之后控制台里一直没有出现设备怎么办呢?

image image
b1ank1108 commented 10 months ago

请问加入之后控制台里一直没有出现设备怎么办呢? image image

9993的udp和tcp在安全组开了没

zhangguangtong commented 10 months ago

如果搭建planet并且需要它同时负责转发的任务,是不是还需要生成moon,即planet和moon在同一台主机上都要生成?客户端只需要替换planet文件即可,不需要放置moon文件?

不需要。只用将docker network设置成 host 。

示例yaml

### date:2021年11月29日
### author: www.mrdoc.fun | jonnyan404
### 转载请保留来源
### update:2022年08月14日
version: '2.0'
services:
    ztncui:
        container_name: ztncui
        restart: always
        devices:
            - /dev/net/tun
        cap_add:
            - NET_ADMIN
            - SYS_ADMIN
            - NET_RAW
        environment:
            - MYADDR=1.1.1.1 #改成自己的服务器公网IP
            - HTTP_PORT=4000
            - HTTP_ALL_INTERFACES=yes
            - ZTNCUI_PASSWD=mrdoc.fun
        ports:
            - '4000:4000' # web控制台入口
            - '9993:9993'
            - '9993:9993/udp'
            - '3180:3180' # planet/moon文件在线下载入口,如不对外提供。可防火墙禁用此端口。
        volumes:
            - './zerotier-one:/var/lib/zerotier-one'
            - './ztncui/etc:/opt/key-networks/ztncui/etc'
            # 按实际路径挂载卷, 冒号前面是宿主机的, 支持相对路径
        image: keynetworks/ztncui
        network_mode: host

之后可以在容器里安装bash等软件包

docker exec -it ztncui sh
sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list && apt-get update && apt-get install -y bash iproute2 iputils-ping net-tools
exit

如果需要转发,在容器里加入就可以了。

docker exec -it ztncui bash
zerotier-cli join <network id>
Egolas commented 10 months ago

请问加入之后控制台里一直没有出现设备怎么办呢? image image

9993的udp和tcp在安全组开了没

都开了 image image

Egolas commented 10 months ago

现在listpeers还会提示: image

zhangguangtong commented 10 months ago

出现这种情况,大概率是由于没有替换 planet 文件导致的。 需要下载planet 文件。 如何替换可以参考: https://github.com/xubiaolin/docker-zerotier-planet#4%E5%AE%A2%E6%88%B7%E7%AB%AF%E9%85%8D%E7%BD%AE

Egolas commented 10 months ago

出现这种情况,大概率是由于没有替换 planet 文件导致的。 需要下载planet 文件。 如何替换可以参考: https://github.com/xubiaolin/docker-zerotier-planet#4%E5%AE%A2%E6%88%B7%E7%AB%AF%E9%85%8D%E7%BD%AE

我确认替换了下载的planet文件,不替换的话会有很多其他的节点出现在listpeers中,更换后就只有截图的这一个了

Egolas commented 10 months ago

有一个情况是在重启服务的时候,会提示

image

确认以后会显示还是已经停止了,重新点击启动也没有报错

image
Egolas commented 10 months ago

发现应该是腾讯云屏蔽了9993端口,换用其他端口就可以了

TOSTRING-Z commented 10 months ago

发现应该是腾讯云屏蔽了9993端口,换用其他端口就可以了

我和你遇到了同样的情况,而且我换用了其它端口也不行,你能说下具体的解决流程吗,谢谢! 图片

zgc commented 6 months ago

发现应该是腾讯云屏蔽了9993端口,换用其他端口就可以了

我和你遇到了同样的情况,而且我换用了其它端口也不行,你能说下具体的解决流程吗,谢谢! 图片

我一开始也遇到一样的问题,我是把 current.c25519 previous.c25519 planet 一起复制到容器的/var/lib/zerotier-one下,突然就正常了

sjhsbhqf commented 5 months ago

现在listpeers还会提示: image

对于这个问题,我在 docker-compose.yml 文件中发现了一个地方 - MYADDR=1.1.1.1 #改成自己的服务器公网IP ,原先是写的全是1,然后我改成了我自己服务器的公网IP。这个地方,github和博客上都没说,不知道需不需要改。

但是我改了之后,立马就能看到我的那个公网服务器作为planet存在了

sjhsbhqf commented 5 months ago

还有一种可能,你的客户端要有网,如果没网也是没办法出现你的公网服务器作为planet

sjhsbhqf commented 5 months ago

不过我为啥没看到moon节点?

(base) PS C:\Users\abc> zerotier-cli.bat peers
200 peers
<ztaddr>   <ver>  <role> <lat> <link>   <lastTX> <lastRX> <path>
241111xxxx 1.12.2 LEAF       6 DIRECT   562      9368     172.20.1.1/20843
8c87xxxxxx 1.8.4  PLANET    23 DIRECT   -380     4114     1.1.1.1/9993
sjhsbhqf commented 5 months ago

学得差不多了,这个issue的标题和楼主的发言有误导性。

这个项目就是搭建了一个私有的planet,不然你解释不了为啥role是planet而不是moon

节点控制器是一方面,能够越过官方控制自己VPN内的节点。官方并不会没有想到moon和planet的区别。如果这里搭建的仅仅是节点控制器,难道role就会显示planet了吗

xljbyy commented 5 months ago

如果搭建planet并且需要它同时负责转发的任务,是不是还需要生成moon,即planet和moon在同一台主机上都要生成?客户端只需要替换planet文件即可,不需要放置moon文件?

不需要。只用将docker network设置成 host 。

示例yaml

### date:2021年11月29日
### author: www.mrdoc.fun | jonnyan404
### 转载请保留来源
### update:2022年08月14日
version: '2.0'
services:
    ztncui:
        container_name: ztncui
        restart: always
        devices:
            - /dev/net/tun
        cap_add:
            - NET_ADMIN
            - SYS_ADMIN
            - NET_RAW
        environment:
            - MYADDR=1.1.1.1 #改成自己的服务器公网IP
            - HTTP_PORT=4000
            - HTTP_ALL_INTERFACES=yes
            - ZTNCUI_PASSWD=mrdoc.fun
        ports:
            - '4000:4000' # web控制台入口
            - '9993:9993'
            - '9993:9993/udp'
            - '3180:3180' # planet/moon文件在线下载入口,如不对外提供。可防火墙禁用此端口。
        volumes:
            - './zerotier-one:/var/lib/zerotier-one'
            - './ztncui/etc:/opt/key-networks/ztncui/etc'
            # 按实际路径挂载卷, 冒号前面是宿主机的, 支持相对路径
        image: keynetworks/ztncui
        network_mode: host

之后可以在容器里安装bash等软件包

docker exec -it ztncui sh
sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list && apt-get update && apt-get install -y bash iproute2 iputils-ping net-tools
exit

如果需要转发,在容器里加入就可以了。

docker exec -it ztncui bash
zerotier-cli join <network id>

如果搭建planet并且需要它同时负责转发的任务,是不是还需要生成moon,即planet和moon在同一台主机上都要生成?客户端只需要替换planet文件即可,不需要放置moon文件?

不需要。只用将docker network设置成 host 。

示例yaml

### date:2021年11月29日
### author: www.mrdoc.fun | jonnyan404
### 转载请保留来源
### update:2022年08月14日
version: '2.0'
services:
    ztncui:
        container_name: ztncui
        restart: always
        devices:
            - /dev/net/tun
        cap_add:
            - NET_ADMIN
            - SYS_ADMIN
            - NET_RAW
        environment:
            - MYADDR=1.1.1.1 #改成自己的服务器公网IP
            - HTTP_PORT=4000
            - HTTP_ALL_INTERFACES=yes
            - ZTNCUI_PASSWD=mrdoc.fun
        ports:
            - '4000:4000' # web控制台入口
            - '9993:9993'
            - '9993:9993/udp'
            - '3180:3180' # planet/moon文件在线下载入口,如不对外提供。可防火墙禁用此端口。
        volumes:
            - './zerotier-one:/var/lib/zerotier-one'
            - './ztncui/etc:/opt/key-networks/ztncui/etc'
            # 按实际路径挂载卷, 冒号前面是宿主机的, 支持相对路径
        image: keynetworks/ztncui
        network_mode: host

之后可以在容器里安装bash等软件包

docker exec -it ztncui sh
sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list && apt-get update && apt-get install -y bash iproute2 iputils-ping net-tools
exit

如果需要转发,在容器里加入就可以了。

docker exec -it ztncui bash
zerotier-cli join <network id>

IMG_0001 改为host行不通啊

zhangguangtong commented 5 months ago

改成host模式后,可以直接去掉端口转发部分。

示例yaml

### date:2021年11月29日
### author: www.mrdoc.fun | jonnyan404
### 转载请保留来源
### update:2022年08月14日
version: '2.0'
services:
    ztncui:
        container_name: ztncui
        restart: always
        devices:
            - /dev/net/tun
        cap_add:
            - NET_ADMIN
            - SYS_ADMIN
            - NET_RAW
        environment:
            - MYADDR=1.1.1.1 #改成自己的服务器公网IP
            - HTTP_PORT=4000
            - HTTP_ALL_INTERFACES=yes
            - ZTNCUI_PASSWD=mrdoc.fun
        volumes:
            - './zerotier-one:/var/lib/zerotier-one'
            - './ztncui/etc:/opt/key-networks/ztncui/etc'
            # 按实际路径挂载卷, 冒号前面是宿主机的, 支持相对路径
        image: keynetworks/ztncui
        network_mode: host
bensonemma commented 5 months ago

如果有问题,欢迎私信问我,我觉得我已经基本上把所有的坑全踩过了。

可以把教程分享一下吗