zerotier one是众多内网穿透工具平衡性最好的。方便速度快部署简单的比他贵的多,速度比他快比他便宜的部署麻烦,比他便宜部署容易的使用体验又不好。
但是zerotier one也有不好的地方。首先是连接速度和延迟表现不佳,主要受限于多重NAT和运营商UDP QOS的影响。当然两个通讯的节点都有ipv6的环境下,或是拥有私人MOON节点的时候变现会有所提升。另外就是zerotier one的安全性不是很好。zerotier one通过一串16字符的网络ID和管理面板授权,就可以让的节点加入虚拟局域网。一旦管理面板的的账号密码泄露,内网就有可能被入侵。另外zerotier one的免费版只能添加50个节点,而第三方控制器则不受限制。
ztncui是zerotier one众多开源第三方控制器中的一个,之所以选它是因为它是唯一一个拥有图形界面的。通过配置客户端的planet就可以跳过官方节点,使用ztncui完成各个节点之间的通讯和打洞。
准备工作
云服务器准备
1 2 3 4 5 6 7 8 9 10 11 12 |
#zerotier安全组说明 #ztncui Web控制面板使用的端口。可以自行选择端口,根据自己选择端口配置安全组 TCP:3443 # Zerotier节点与控制器通讯的端口,可自行选择端口,根据自己选择的端口配置安全组 TCP:9993 #MOON节点与控制器通讯的中继端口,可自行选择端口,根据自己选择的端口配置安全组 UDP:9993 #需要分别设置ipv4和ipv6的规则 |
ztncui&Zerotier安装与设置
ssh登陆到云服务器开始搭建,以下为centos安装命令。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#ztncui依赖于zerotier,所以需要先安装zerotier curl -s https://install.zerotier.com | sudo bash #下载并安装ztncui yum install https://download.key-networks.com/el7/ztncui/1/ztncui-release-1-1.noarch.rpm -y yum install ztncui -y #设置ztncui配置文件 vi /opt/key-networks/ztncui/.env #按"i"键进入编辑模式,输入下面内容,端口号可以自行更改,但必须和安全组一致。 #输入后按“Esc”键输入“:wq!”保存退出 HTTPS_PORT = 3443 #重启ztncui systemctl restart ztncui #web登录ztncui控制台,https://ip:3443,账户:admin 密码:password。 |
配置moon服务器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#进入zerotier one文件夹 cd /var/lib/zerotier-one #生成moon.json文件 zerotier-idtool initmoon identity.public >> moon.json #编辑moon.json文件, # 修改 “stableEndpoints”: [ “你的公网IPx1/端口”,”你的公网IPxN/端口” ] #ipv4 ipv6都可以,一般端口默认为9993,然后保存退出 vi moon.json #拷贝到/home文件夹 cp moon.json /home && cd /home #生成客户端用的moon配置文件 zerotier-idtool genmoon moon.json #将生成的000000XXXXX.moon文件发给各个zerotier one客户端,建议使用winscp下载。 |
配置ztncui
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#修改ztncui配置文件 vi /opt/key-networks/ztncui/.env #添加一些需要的参数 #查看/var/lib/zerotier-one/authtoken.secret获取ZT_TOKEN,建议通过winscp查看 ZT_TOKEN=用authtoken.secret文件内的内容替换此处 ZT_ADDR=127.0.0.1:9993 #保存退出 #重启ztncui systemctl restart ztncui |
激活moon服务器,迁移控制器至ztncui
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
#进入/home文件夹 # 下载mkmoonworld主程序,并赋予执行权限,如果下载太慢,可以借助下载工具下载好后上次到/home wget https://github.com/kaaass/ZeroTierOne/releases/download/mkmoonworld-1.0/mkmoonworld-x86 chmod 777 mkmoonworld-x86 # 生成planet文件 ./mkmoonworld-x86 ./moon.json # 若要设置多个planet节点,将其他节点的moon.json 写入到另外的文件,如 moon1.json moon2.json # ./mkmoonworld-x86 ./moon1.json ./moon2.json # 令planet文件生效 mv world.bin planet && systemctl restart zerotier-one # 进入zerotier主目录 cd /var/lib/zerotier-one # 创建moons.d文件夹并将生成的moon节点移入该文件夹内,根据moon文件的实际名字修改命令 mkdir moons.d cd /home cp 000000f0c4b26838.moon /var/lib/zerotier-one/moons.d # 重启zerotier使moon节点生效 systemctl restart zerotier-one |
完成上面的操作,服务端的配置已经全部完成,接下来是客户端节点的配置。
ztncui管理界面配置
登陆到ztncui,首次登陆会要求你更改密码,更改好密码以后。点击ADD-NETWORK——输入网络名提交后建立完成——点击导航栏networks——找到刚才建立的网络——点击easy setup——点击Generate network address会自动建立一个虚拟网段,然后Submit。其他的选项不要去动,否则会无法分配IPV4地址。
Routes选项卡用于配置路由转发规则,用openwet需要设置好,才能访问内网。
网络名旁边的括号里是网络ID,各个节点通过这个ID加入虚拟网络
其他的操作和官方管理差不过
移动设备端设置
不能使用官方编译的Zerotier,需要使用kaaass大神Zerotier FIX。Zerotier FIX才能支持自定义moon节点和planet节点。目前Zerotier FIX只支持android设备。
将服务器上的world.bin和000000XXXXX.moon文件下载到本地,将world.bin更名为plannet。然后传送到手机
安装好Zerotier FIX,打开软件——右上角——设置——启动自定义planet——选择从文件导入——选择刚才的palnet文件。提示导入成功既切换planet成功。
加入moon服务器,打开软件——右上角——入轨——右下角加号——从文件导入——选择刚才的moon文件。提示成功,会在入轨界面看到moon服务的id。
主界面添加ztncui网络管理界面上的网络ID,并在ztncui上授权加入
openwrt设置
先停止openwrt上运行的Zerotier,winscp连接到openwrt。
替换planet,打开到/var/lib/zerotier-one——用刚才的planet文件替换目录下的planet文件(自行备份原文件)。
添加moon,打开到/var/lib/zerotier-one——新建一个文件夹“moons.d”文件夹,将moon文件复制过去。
回到Zerotier,填入网络ID,管理界面授权加入。
windows设置
找到Zerotier one安装目录,将planet文件替换目录下planet文件,新建moons.d文件夹,将moon文件复制过去。在服务管理器重启Zerotier one,添加网络ID,并授权加入。
我的windows设置后,被的其他节点无法ping windows节点。windows节点可以 ping其他节点。本人能力有限,非专业人员,排查不出问题。不过我主要是用openwrt的节点并配置路由规则来穿透。
linux设置
和openwrt设置一样
其它平台
下面是Debian/Ubuntu安装命令,请自行测试。
1 2 3 4 5 6 7 8 9 |
curl -O https://s3-us-west-1.amazonaws.com/key-networks/deb/ztncui/1/x86_64/ztncui_0.7.1_amd64.deb sudo apt-get install ./ztncui_0.7.1_amd64.deb sudo sh -c "echo 'HTTPS_PORT=3443' > /opt/key-networks/ztncui/.env" sudo sh -c "echo 'NODE_ENV=production' >> /opt/key-networks/ztncui/.env" sudo systemctl restart ztncui |