zerotier内网穿透部署(rockylinux部署本地服务器)超详细~~~
官网地址:ZeroTier | Next-Generation Connectivity and Cybersecurity
ZeroTier 连接您的设备,就像它们在同一个本地网络上一样。只需几分钟即可从任何地方进行部署,并通过端到端加密在全球范围内连接无限设备。创建您的网络。
内网穿透:
简单说就是 让外网设备(比如你家的手机、公司的电脑)能够访问内网里的设备或服务—— 而原本,内网设备(如家里的 NAS、部署 Jumpserver 的服务器)因为处于路由器 / 防火墙后面,只有同一内网的设备能访问,外网是 “看不见” 的。
一、先搞懂:为什么需要内网穿透?(举个实际例子)
你之前遇到的「容器服务内部能访问、外部电脑连不上」,本质就是内网设备(Jumpserver 宿主机)被路由器隔离了:
- 内网设备的 IP 是「私有 IP」(比如
192.168.168.123、171.21.0.5),只能在路由器内网里用; - 外网设备(比如你手机用 4G/5G,或公司电脑)的 IP 是「公网 IP」,路由器默认会拦截外网对私有 IP 的访问,避免内网设备暴露在公网。
而内网穿透,就是在「路由器 / 防火墙」上打一个 “专属通道”,让外网请求能通过这个通道,精准到达内网的目标设备(比如你的 Jumpserver、5001 端口的 SSH 隧道)。
二、内网穿透的核心原理(类比理解)
可以把路由器想象成「小区大门」:
- 内网设备(如你家的服务器)是小区里的住户,门牌号是「私有 IP」(只在小区内有效);
- 路由器有一个「公网 IP」(相当于小区的地址,对外唯一);
- 没有内网穿透时,外人(外网设备)只能找到小区大门(公网 IP),但不知道要找哪个住户,大门保安(路由器防火墙)会直接拦住;
- 内网穿透相当于给小区大门装了一个「快递柜 + 专属编号」:你告诉快递员(外网设备)“把东西送到 XX 小区 + 快递柜编号 101”,保安(路由器)收到后,会自动把东西转给小区里对应编号的住户(内网设备)。
三、常见的内网穿透场景(你可能用到的)
- 远程访问内网服务:比如你在外面用手机 / 电脑访问家里的 Jumpserver、NAS 文件、监控摄像头;
- 本地开发测试:程序员在自己电脑(内网)开发网站,让客户在外网直接访问测试;
- 你之前的需求:通过 SSH 隧道(
ssh -L 5005:xxx)让外部能访问内网容器的 5090 端口,本质就是一种「临时内网穿透」。
四、常用的内网穿透方式(从简单到复杂)
-
端口映射(路由器层面,最常用):
- 就是在路由器上配置「公网端口→内网 IP + 内网端口」的映射(比如公网 8080 端口→内网 192.168.191.123:80);
- 适合:有路由器管理权限,且路由器有公网 IP 的场景(你之前的 Jumpserver 若在家庭 / 小型办公网络,优先用这个)。
-
SSH 端口转发(你正在用的):
- 就是你执行的
ssh -g -Nf -L 5995:173.11.0.4:5812命令; - 原理:借助一台有公网 IP 的服务器(
ssh.ai.chinahpc.com)当 “中转”,把内网 5995 端口的服务,通过公网服务器转发到本地 5812 端口,实现外网访问; - 适合:临时使用、没有路由器管理权限的场景(但需要一台公网服务器)。
- 就是你执行的
-
内网穿透工具(傻瓜式操作):
- 比如花生壳、Frp、Ngrok、ZeroTier 等;(有流量限制、有的不免费)
- 无需配置路由器,工具会自动建立内外网通道,适合小白或没有公网 IP 的场景(部分工具免费,部分收费)。
五、关键注意事项
- 安全性:内网穿透会把内网设备暴露给外网,一定要设强密码(比如你的 SSH 密码)、限制访问 IP,避免被恶意攻击;
- 公网 IP 问题:如果路由器没有固定公网 IP(比如电信 / 联通家庭宽带,IP 会定期变),需要配合「动态 DNS(DDNS)」工具,让域名自动绑定变动的公网 IP;
- 带宽限制:家庭宽带的上传带宽通常比下载小,远程访问内网服务时,速度会受上传带宽影响。
总结下来:内网穿透的核心就是「打破内网与外网的隔离」,让外网能精准访问内网设备 —— 你之前用 SSH 隧道、路由器端口转发,其实都是内网穿透的不同实现方式~
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
以下介绍zerotier内网部署局域网的方式来解决内网穿透的问题!
六、基于zerotier部署,实现内外网络访问!免费!高效!安全!
1、下载安装
curl -s https://install.zerotier.com/ | sudo bash
2、获取密钥文本
使用如下命令获取两个后面步骤需要用到的密钥文本。
cat /var/lib/zerotier-one/identity.public
内容如下:
axxc9:0:2df2e752c7137b6fd482799943e6681xxxx9e3e109190387457c3a29d3eacexxxx1b776a58w1e52a797d6919264e69b8715c49d4b7d1d8a36e34bf817e8
cat /var/lib/zerotier-one/authtoken.secret
内容如下:
sooxxxxxu7n6zamce5
3、下载依赖
yum -y install g++
4、下载上传软件包
git方式:git clone https://github.com/zerotier/ZeroTierOne
压缩包方式:
ZeroTierOne-1.14.0.zip ##软件包
##文件均放在/usr/src/zerotier目录下
cd /usr/src/zerotier
unzip ZeroTierOne-1.14.0.zip
5、修改对应的文件
备注:git方式需要先编译安装,此处不做演示,直接用压缩包
cd ZeroTierOne-1.14.0
cd ./ZeroTierOne-1.14.0/attic/world/
cp mkworld.cpp{,.bak} ##备份配置文件
vim mkworld.cpp
配置修改如下:
##在里面修改planet网络,把原来的4个注释掉,自己按格式新增一个自己的。
##修改好保存退出后继续执行下面的命令
// 工作站自建zerotierroots.push_back(World::Root());roots.back().identity = Identity("a8dxx7xxxe1c9:0:2df2e752c7137b6fd4827xxx6814459e00429e3e109190387457c3a29d3eace058fd061b77658e52a797d6919264e69b8715c49d4b7d1d8a36e34bf817e8"); ##前面文件中的IDroots.back().stableEndpoints.push_back(InetAddress("192.168.169.26/9994")); ##服务器的ip和端口号//roots.back().stableEndpoints.push_back(InetAddress("x2:6s0:c8s::/999a"));
##以下均注释,例如下// Los Angeles//roots.push_back(World::Root());//roots.back().identity = Identity("3a46f1bf30:0:76e66fab33e28549a62sss1843273c2c300ba45c3f20bef02dbad225723bb59a9bb4b13535730961aeecf5a163ace477cceb0727025b99ac14a5166a09a3");//roots.back().stableEndpoints.push_back(InetAddress("s85.ss.13.82/9ss3"));//roots.back().stableEndpoints.push_back(InetAddress("2ss02:6ess0:c815::/9ss3"));
source ./build.sh ##执行脚本命令生成mkworld
#如果缺少软件包,在这个命令执行后会提示缺少哪些软件包,自行安装即可yum -y install g++
./mkworld ##查看是否执行成功
mv ./world.bin ./planet ##复制命令并改名,此文件,客户端也需要,可以提前保存到相应位置
cd ~/ ##回到root用户家目录
mv /var/lib/zerotier-one/planet /var/lib/zerotier-one/planet.bak ##修改服务的配置,做好备份,否则为(官方)国外地址
cp ./planet /var/lib/zerotier-one/planet ##将本地的服务器地址信息给服务加载,使得使用本地器地址
chown zerotier-one:zerotier-one /var/lib/zerotier-one/planet ##修改归属
systemctl restart zerotier-one ##重启服务
systemctl status zerotier-one ##查看服务的状态
systemctl is-enabled zerotier-one #3查看是否为开机自启,若不是,则设置为开机自启
6、服务配置完成,增加web节点,方便服务进行管理
软件下载地址:https://key-networks.com/ztncui/(备注:需要打开科学!!!)

Centos8/9(rocky)下载方式:
yum install https://download.key-networks.com/el7/ztncui/1/ztncui-release-1-1.noarch.rpm -y
yum install ztncui -y ##需加上,不进行秘钥检查--nogpgcheck
sh -c "echo ZT_TOKEN=`sudo cat /var/lib/zerotier-one/authtoken.secret` > /opt/key-networks/ztncui/.env"
sh -c "echo HTTPS_PORT=3443 >> /opt/key-networks/ztncui/.env"
sh -c "echo NODE_ENV=production >> /opt/key-networks/ztncui/.env"
chmod 400 /opt/key-networks/ztncui/.env
chown ztncui.ztncui /opt/key-networks/ztncui/.env
systemctl restart ztncui

PS:因我当前服务的3000端口被grafana占用,所以需要修改配置如下
[root@bh005 ztncui]# cat .env
配置如下:
ZT_TOKEN=soo4tvnl3svwzeu7n6zamce5
HTTPS_PORT=3443
HTTP_PORT=3444 ##因本地服务器3000端口被占用,因此本地访问http://127.0.0.1:3444
NODE_ENV=production
PS:ubuntu下载方式: curl -O https://s3-us-west-1.amazonaws.com/key-networks/deb/ztncui/1/x86_64/ztncui_0.8.14_amd64.deb apt install ./ztncui_0.8.14_amd64.deb sh -c "echo ZT_TOKEN=`sudo cat /var/lib/zerotier-one/authtoken.secret` > /opt/key-networks/ztncui/.env" sh -c "echo HTTPS_PORT=3443 >> /opt/key-networks/ztncui/.env" sh -c "echo NODE_ENV=production >> /opt/key-networks/ztncui/.env" chmod 400 /opt/key-networks/ztncui/.env chown ztncui.ztncui /opt/key-networks/ztncui/.env systemctl restart ztncui
7、进入web页面配置,地址为:https://192.168.XXX.XXX:3443
##备注,此为未经授权https协议,需要浏览器进行登录验证
登录,初始设置
用户:admin 密码:初始密码为password 需要修改密码: 密码为:123456.com ##至少为10位密码
新建网络:test
easy setup
设置的网段为:xx.xx.xx.xx/24

成员管理:当客户端加入时,需进行授权

8、客户端加入:
windows加入方式:
安装官方客户端自动安装后在右下角有ZeroTierUI, 先退出将服务端的Planet下载下来用服务端的 planet替换本地的planet默认planet路径 C:\ProgramData\ZeroTier\One\。##建议将原来的planet做备份,文件名为planet.bak重启ZeroTier服务 ##快速打开:win + r 输入services.msc重新启动ZeroTier应用程序,等待服务状态变为运行中。连接私有网络
需要ID
服务器查看ID:网页查看
服务器授权
得到IP地址:
linux加入方式:
# 1、备份原planet文件 sudo mv /var/lib/zerotier-one/planet /var/lib/zerotier-one/planet.bak # 2、复制自己的planet文件进行文件替换 sudo cp ./planet /var/lib/zerotier-one/planet # 3、修改文件所有者 sudo chown zerotier-one:zerotier-one /var/lib/zerotier-one/planet # 4、重启服务 service zerotier-one restart
例:本地加入
zerotier-cli listnetworks zerotier-cli status zerotier-cli join a8d367e1c96e9777 zerotier-cli listnetworks ifconfig ##授权之后,多出IP地址,120.116.0.164 两台之间进行ping测试,测试成功
mac加入方式:
文件替换路径为:“/Library/Application\ Support/ZeroTier/One/”。替换后重启系统就可以加入自己的服务器了。



















