zerotier的planet服务器(根服务器)-搭建教程和客户端连接

应用场景介绍:

利用阿里云服务器,搭建根服务器,把不同局域网打通,实现内网穿透,远程控制。

准备工具:  1、服务端:云服务器(有公网IP)Centos 7.6

                    2、客户端:   工控机(或者家里电脑)(Linux) ,公司电脑Windows

搭建私有化 ZeroTier步骤:

一、云服务器上安装服务操作

1、安装编译组件

yum install wget gcc gcc-c++ git -y
yum install json-devel -y

2、安装根服务

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

安装完成后,默认监听的端口是9993,这个端口需要对外提供服务,需要在服务器防火墙和云服务提供商的安全组设置放行。

安全组修改:新增允许访问的规则 UDP:9993 和 TCP:9993,TCP: 3443(后面的显示面板用)

3、记录安全认证信息

到安装目录/var/lib/zerotier-one/

找到并记录identity.public

authtoken.secret文件里的字符串,备用

4、下载源码

可以在 /var/lib/zerotier-one/ 目录下直接下载源码:

git clone https://github.com/zerotier/ZeroTierOne

下载后的代码路径:/var/lib/zerotier-one/ZeroTierOne

5、修改源码

找到ZeroTierOne/attic/world/mkworld.cpp并打开,仿照mkworld.cpp原来的代码,将我们自定义的Planet服务器添加进去。

注意,需要删除或注释掉至少一个原来的Planet服务器,再增加我们自己的服务器,否则后续执行我们编译的可执行程序时程序会崩溃。

原因是代码里默认只允许4台Planet服务器,可以在World.hpp里看到如下定义#define ZT_WORLD_MAX_ROOTS 4

删除东京的就可以。 

 

 std::vector<World::Root> roots;
 const uint64_t id = ZT_WORLD_ID_EARTH;
 const uint64_t ts = 1567191349589ULL; // August 30th, 2019
 // 插入的代码
 roots.push_back(World::Root());
 roots.back().identity = Identity("填写identity.public里的字符串");
 // 默认端口是9993,可以自行修改,但不建议
 roots.back().stableEndpoints.push_back(InetAddress("服务器公网ip地址/通讯端口")); 

 // 下面这些是官方的根服务器,可以注释或删掉
 //如果想保留一些官方的根服务器,只需要删除或注释掉一个就行
 // 这里只保留了一个洛杉矶的根服务器,然后增加一个自己的

 // Los Angeles
 roots.push_back(World::Root());
 roots.back().identity = Identity("3a46f1bf30:0:76e66fab33e285.................a09a3");
 roots.back().stableEndpoints.push_back(InetAddress("185.180.13.82/9993"));
 roots.back().stableEndpoints.push_back(InetAddress("2a02:6ea0:c815::/9993"));

 // Amsterdam
//roots.push_back(World::Root());
//roots.back().identity = Identity("992fcf1db7:0:206e.................003ceb6");
//roots.back().stableEndpoints.push_back(InetAddress("195.181.173.159/443"));
//roots.back().stableEndpoints.push_back(InetAddress("2a02:6ea0:c024::/443"));

 6、编译配置文件

     cd ./ZeroTierOne/attic/world/

     source ./build.sh
     ./mkworld
     mv ./world.bin ./planet

7、替换服务端配置文件

cp -r ./planet /var/lib/zerotier-one/
cp -r ./planet /root # 备用保存好

8、重启服务端

  systemctl restart zerotier-one.service

9、安装服务端面板服务

执行如下命令 把相关网络配置写入到 “/opt/key-networks/ztncui/.env”文件中

sudo yum install https://download.key-networks.com/el7/ztncui/1/ztncui-release-1-1.noarch.rpm -y
sudo yum install ztncui -y
sudo sh -c "echo 'ZT_TOKEN=authtoken.secret文件里的字符串' >> /opt/key-networks/ztncui/.env"
sudo sh -c "echo 'NODE_ENV=production' >> /opt/key-networks/ztncui/.env"
sudo sh -c "echo 'ZT_ADDR=127.0.0.1:9993' >> /opt/key-networks/ztncui/.env" # 面板与本地服务的通讯端口,没有自定义端口的话使用9993就行,否则需要和自定义的端口一致

sudo sh -c "echo 'HTTPS_PORT=3443' >> /opt/key-networks/ztncui/.env"
sudo systemctl restart ztncui


10、访问ztncui面板
在公司电脑浏览器访问即可,别忘了输入https!!!!!!!!!!!
https://服务器公网ip:3443 登录了,默认账号和密码是:admin/password 

登陆到ztncui,首次登陆会要求你更改密码,更改好密码以后。点击ADD-NETWORK——输入网络名提交后建立完成——

点击导航栏networks——找到刚才建立的网络——点击easy setup——点击Generate network address会自动建立一个虚拟网段,

然后Submit。其他的选项不要去动,否则会无法分配IPV4地址。

 

网络名旁边的括号里是网络ID,各个节点通过这个ID加入虚拟网络

 


 至此服务器端配置完成,

别忘了第7步里面,生成的那个  planet 文件 备用的, 以后所有的客户端都需要该配置文件进行覆盖。

二、客户端配置
1、 Windows客户端配置
1>去官网下载客户端:https://www.zerotier.com/download/ 各种版本都有,先下windows即可

 


        2>安装 exe

      3>替换客户端的planet文件

              将 第一步里面那个重要备用的   planet 文件覆盖粘贴到   C:\ProgramData\ZeroTier\One  中 (这个目录是个隐藏目录,需要运允许查看隐藏目录才行)

      4>windows找到 服务   并重启 ZeroTier One 服务

 


     5>加入网络


   使用管理员身份打开PowerShell
  执行如下命令,看到join ok字样就成功了
  PS C:\Windows\system32> zerotier-cli.bat join 网络id(就是在网页里面创建的那个网络)
  200 join OK
  PS C:\Windows\system32>
  方式2:
  桌面右下角有个ZeroTier 的小图标,
  点击 : Join New NetWork...
  输入 ZtnCuI 面板里面的 网络ID就可以


6> 登录面板授权
勾选上分配的IP地址第一列复选框,然后通过 mstsc命令就可以通过分配的虚拟网络的IP地址
访问其他内网里面的用户了
例如上图中的: 10.71.**.150
外网直接访问不太安全,建议通过反向代理方式,
使用SSH本地端口转发来将远程服务映射到本地,然后在本机访问。

2、Linux客户端配置(以Centos 为例)

  1>安装
     curl -s https://install.zerotier.com | sudo bash

    如果总是安装失败请更换Yum镜像源:!!!!!!!!!!!!!!

  # yum install wget -y

  备份原来镜像源配置
  #cd /etc/yum.repo.d/
  #mv CentOS-Base.repo CentOS-Base.repo.bak
  #wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  #yum clean all
  #yum makecache

 

  2>查看状态
    zerotier-cli info
  显示正常:200 info ded50b0c30 1.10.4 ONLINE
  3>配置开机自启动
  sudo systemctl enable zerotier-one.service


     4>替换客户端所在电脑的 planet文件。(用上面第一步中修改过的planet文件替换客户端电脑上的planet)
     客户端planet文件默认位置: /var/lib/zerotier-one/planet

 5>重启服务
systemctl restart zerotier-one
6> 加入网络:
          zerotier-cli join network_id
 7>登录上管理端授权(Authorized勾选上即可)


 


      8>授权并刷新Refresh后可为客户端分配内网IP,ssh远程登录就可以了

            

 

 

 

 

 

 

 


 

posted @ 2022-09-29 18:52  SateWang  阅读(13316)  评论(0编辑  收藏  举报