欢迎光临
我们一直在努力

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个注释掉,自己按格式新增一个自己的。
    ##修改好保存退出后继续执行下面的命令

    // 工作站自建zerotier
    roots.push_back(World::Root());
    roots.back().identity = Identity("a8dxx7xxxe1c9:0:2df2e752c7137b6fd4827xxx6814459e00429e3e109190387457c3a29d3eace058fd061b77658e52a797d6919264e69b8715c49d4b7d1d8a36e34bf817e8"); ##前面文件中的ID
    roots.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/”。替换后重启系统就可以加入自己的服务器了。

    赞(0)
    未经允许不得转载:171主机测评 » zerotier内网穿透部署(rockylinux部署本地服务器)超详细~~~
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址