自建内网穿透服务器

声明:本博主也是学习者,才接触这东西,参考司波图大佬以及凉晓风大佬整理的下文。

介绍

基于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/

最后编辑:2023年05月18日 ©著作权归作者所有

发表评论