自建内网穿透服务器
声明:本博主也是学习者,才接触这东西,参考司波图大佬以及凉晓风大佬整理的下文。
介绍
基于Zerotier根服务器的内网穿透部署
创建(伪)根服务器 | 项目地址:https://github.com/Jonnyan404/zerotier-planet
docker run --restart=on-failure:3 -d --name ztncui -e HTTP_PORT=4000 -e HTTP_ALL_INTERFACES=yes -e ZTNCUI_PASSWD=mrdoc.fun -p 4000:4000 keynetworks/ztncui
创建 moon 服务器 | 项目地址:https://github.com/jonnyan404/docker-zerotier-moon
#创建容器
docker run --name zerotier-moon -d -p 9993:9993 -p 9993:9993/udp -v /etc/ztconf/:/var/lib/zerotier-one jonnyan404/zerotier-moon -4 [公网ipx.x.x.x]
#查看moon ID
docker logs zerotier-moon
群晖 DSM 7.x 安装Zerotier客户端
登录SSH并创建虚拟网络设备TUN
#获取权限
sudo -i
#创建“创建虚拟网络设备TUN”的脚本,并设为开机自动运行
echo -e '#!/bin/sh -e \ninsmod /lib/modules/tun.ko' > /usr/local/etc/rc.d/tun.sh
#给予脚本运行权限
chmod a+x /usr/local/etc/rc.d/tun.sh
#运行脚本创建TUN
/usr/local/etc/rc.d/tun.sh
#确认TUN是否创建成功
ls /dev/net/tun
创建存放配置文件的目录
mkdir /var/lib/zerotier-one
创建Zerotier应用容器:
docker run -d \
--name zt \
--restart=always \
--device=/dev/net/tun \
--net=host \
--cap-add=NET_ADMIN \
--cap-add=SYS_ADMIN \
-v /var/lib/zerotier-one:/var/lib/zerotier-one zerotier/zerotier-synology:latest
常用命令:
#查看zerotier状态
docker exec -it zt zerotier-cli status
#加入网络
docker exec -it zt zerotier-cli join [xxxxxxxxxxxx]
#加入moon服务器
docker exec zt zerotier-cli orbit [moon_ID] [moon_ID]
#确认是否加入
docker exec zt zerotier-cli listpeers
Windows 客户端加入moon服务器
cd C:\ProgramData\ZeroTier\One
zerotier-cli orbit [moon_id] [moon_id]
zerotier常用命令整理
安装
curl -s https://install.zerotier.com | sudo bash
启停
sudo systemctl start zerotier-one.service
sudo systemctl restart zerotier-one.service
sudo systemctl enable zerotier-one.service
加入网络
加入、离开、列出网络
zerotier-cli join 8850xxxxxxxxxxxxxxx
zerotier-cli leave 8850xxxxxxxxxxxxxxx
zerotier-cli listnetworks
- 8850xxxxxxxxxxxxxxx 为zerotier后台页面上的网络id
注意需要再zerotier中开启授权,点击ip前面的小对钩,也可以自定义ip地址。
获取地址和服务状态
zerotier-cli status
设置moon
linux中执行命令
生成moon配置文件
cd /var/lib/zerotier-one/
sudo zerotier-idtool initmoon identity.public > moon.json
修改配置文件moon.json
vim moon.json
在 stableEndpoints数组中增加公网ip,如
"stableEndpoints": ["95.169.24.xxx/9993"]
(主要是添加公网IP,公网IP是服务器的IP,9993是zerotier的默认端口,服务器防火墙上需要开放UDP:9993,否则是连接不上Moon的)
生成签名文件
zerotier-idtool genmoon moon.json
移动刚生成的签名文件
mkdir moons.d
mv 0000007144xxxxx.moon moons.d/0000007144xxxxx.moon
重启服务
sudo systemctl restart zerotier-one.service
sudo systemctl enable zerotier-one.service
记录服务器id
zerotier-cli info
返回的是:
200 info 714xxxxxx 1.6.4 ONLINE
其中 714xxxxxx 为本机id,下方给客户端使用。
客户端增加moons
zerotier-cli orbit 714xxxxxx 714xxxxxx
注意 orbit 要跟两次 moon机器的id
客户端离开某个Moon节点
zerotier-cli deorbit <world ID>
客户端查看 moons
zerotier-cli listpeers
看输出列 role 是否具有moon 机器
Debian/Ubuntu 发行版卸载方法
1.通过dpkg删除zerotier-one服务
sudo dpkg -P zerotier-one
2.删除zerotier-one文件夹,该文件夹存储了address地址,删除后再次安装会获得新的address地址
sudo rm -rf /var/lib/zerotier-one/
Redhat/CentOS 发行版卸载方法
sudo rpm -e zerotier-one
sudo rm -rf /var/lib/zerotier-one/