小铁的博客

ZeroTier内网穿透、远程访问详细配置教程

前言

随着科技发展日新月异,我们越来越需要软件,越来越依赖互联网。但是全球IPv4地址池即将耗尽,各地运营商开始逐步收回IPv4地址。那么家庭宽带没有公网IP,同时又想发布本地服务到公网应该怎么办呢?本文就是为了解决这个问题,通过 内网穿透 技术,我们能够实现安全、稳定地发布本地服务到公网。不用担心,一切都很简单,请耐心一点继续往下看。

内网穿透简介

内网穿透(又称 NAT 穿透端口转发)是一种网络技术,用于解决处于内网(局域网)中的设备无法被公网直接访问的问题。
在传统网络架构中,内网设备通过路由器或防火墙连接到公网,这类设备通常只拥有私有 IP 地址(如 192.168.x.x、10.x.x.x),无法被公网直接识别和访问。
内网穿透的核心原理是通过一个具有公网 IP 的服务器(称为 穿透服务器中转服务器)作为中介,建立内网设备与公网之间的通信通道,使公网用户能够访问内网中的服务或设备。

适用场景:

常用的内网穿透工具:

以上工具各有优缺点,本人目前已经写了 ZerotierFrp 的配置教程,后续会把其他的内网穿透工具教程一个个全部补充上去。

内网穿透 通过 “中转” 机制打破了内网与公网的隔离,在开发、运维、物联网等场景中具有广泛应用。选择工具时需根据需求(如带宽、协议、安全性)权衡开源与商业方案,同时重视网络安全,避免因穿透导致内网暴露风险。

本文使用Zerotier,这个软件官方也提供免费通道,但是很不稳定,所以本文是自建Planet实现稳定的内网穿透。

力求小白看了也能直接配好,每行要执行的代码前面会标注执行原因。但是你如果连怎么连接云服务器都不清楚的话,你需要先搜一下怎么SSH连接云服务器。

首先我们得有一台拥有公网IP的云服务器,推荐雨云

雨云优惠注册地址:https://www.rainyun.com/

优惠码:xiaotie

使用优惠码注册后绑定微信可获得5折券。

其他云服务器推荐:
[post cid="29" /]

配置前提:

云服务器的推荐配置:


1:ZeroTier 介绍

ZeroTier 是一款强大的 内网穿透 工具,它能让你在互联网上搭建属于自己的虚拟局域网。通过它,你可以轻松实现远程访问家中设备的需求 - 比如在公司用手机直接访问家里的 NAS。最重要的是,设备之间是点对点直连的,无需经过中转服务器,既保证了速度,又提升了安全性。

它的工作原理是这样的:通过 ZeroTier One 客户端,在不同设备(如笔记本、手机、服务器等)之间建立 内网 连接,即使这些设备都在 NAT 后面也没问题。它使用了 STUN 等技术,可以穿透大多数类型的 NAT,实现设备间的直接通信。如果实在无法直连,才会通过中转服务器进行通信。

简单来说,ZeroTier 就像是一个跨越互联网的"虚拟交换机",让分布在世界各地的设备,都能像在同一个局域网内一样方便地相互访问。

ZeroTier 网络中的关键概念

PLANET(行星服务器):ZeroTier 网络的核心根服务器,负责网络发现和初始连接。相当于整个网络的"中枢"。

MOON(卫星服务器):用户可以自建的私有根服务器。它可以作为区域性的代理节点,帮助就近的设备更快地建立连接,提升网络性能。

LEAF(叶子节点):所有接入 ZeroTier 网络的终端设备,如电脑、手机、服务器等。这些设备通过 PLANET 和 MOON 的协调来相互发现和通信。

本教程将指导您搭建一个私有的 PLANET 服务器,让您完全掌控自己的 ZeroTier 网络。


2:服务器端配置

2.1:准备条件

2.1.1:切换国内软件源

首先SSH连接到云服务器,记住要使用root用户。连上去以后不要切换目录。

Ubantu/Debian的默认软件源很多是国外的,下载可能会中断或者速度很慢,所以切换软件源为国内阿里源(如果你的VPS是海外线路,那么这块不执行也可以):

cat > /etc/apt/sources.list << EOF
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
EOF

修改软件源配置文件以后,我们更新一下软件包索引,否则白改了:

apt update

2.1.2:安装curl

安装curl工具,用来下载特定软件。

apt install curl -y

2.1.3:安装1Panel和Docker

安装Docker和1Panel面板,用这个就图个配置方便,用命令也是能同样实现的。
这是docker的安装命令,默认选第一个一直回车就行。

curl -sSL https://linuxmirrors.cn/docker.sh -o docker.sh && bash docker.sh

这是1Panel面板的安装命令,用这个就图个配置方便,用命令也是能同样实现的。可以全部采用默认配置,也可以自己修改一下,安装完成后会输出访问地址和用户名密码,记得保存下来。

curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh

配置docker加速镜像,更修改软件源一样,用来加速下载docker镜像。

tee /etc/docker/daemon.json <<EOF
{
    "registry-mirrors": [
        "https://docker.mirrors.aster.edu.pl",
        "https://docker.mirrors.imoyuapp.win"
    ]
}
EOF

应用docker配置。

systemctl daemon-reload

重启docker,使配置生效。

systemctl restart docker

2.1.4:安装git

安装git,后面下载docker-zerotier-planet存储库要用到。

apt install git -y

2.1.5:安装ufw防火墙(用于配置端口转发)

执行命令安装ufw防火墙,用来端口转发,下面的命令一行一行执行,井号后面的可别执行嗷,那是注释!

apt install ufw -y

2.2:下载项目源码

下载docker-zerotier-planet存储库,该项目用于自建Zerotier Planet。

git clone https://ghproxy.imoyuapp.win/https://github.com/xubiaolin/docker-zerotier-planet.git

2.3:执行安装脚本

执行docker-zerotier-planet的安装脚本,按照默认指示就行,安装完成后会打印访问信息,记录下来。

./docker-zerotier-planet/deploy.sh

2.4:配置网络

浏览器访问<云服务器ip>:3443,输入默认的用户名和密码(admin/password),进去后先改一下密码,默认的不安全。

2.4.1:新建网络

进入以后,先点击Add network按钮,然后输入Network name,这个随便输,最后点击Create Network按钮。


2.4.2:分配网络IP

点击Easy setup按钮。

Network address in CIDR notation 输入11.11.11.0/24,下面两个输入框的内容应该会自动生成,然后点击Submit按钮,看到xxx Successful的字样,点击上方Networks按钮,这个页面先放着,不要关掉。


2.5:配置ufw防火墙

2.5.1:通过命令开放ssh以及1Panel端口
# 开放ssh端口,如果你用NAT型云服务器,那你得把22改成自己连接ssh的端口号
ufw allow 22/tcp

# 开放1Panel访问端口,这个每个人不一样,如果你忘了那么你得去看一下刚刚安装完1Panel以后打印的内容。把下main命令里的尖括号内容改成1Panel访问端口。
ufw allow <1Panel端口>/tcp

# 启用ufw防火墙
ufw --force enable

2.5.2:通过1Panel开放所有端口(可仅开放Zerotier需要的端口)

打开1Panel页面,开放防火墙所有端口,也可以只开发特定的,按自己的需求来,我这个只是演示用。


2.6:配置Zerotier

2.6.1:安装Zerotier

在服务器中安装zerotier,用来与客户端取得联系,以便后续把请求转发到客户端。

curl -s https://install.zerotier.com | bash

2.6.2:替换planet文件

转移自建的planet文件至zerotier-one目录。

cp /root/docker-zerotier-planet/data/zerotier/dist/planet /var/lib/zerotier-one/

重启zerotier-one服务,使配置生效。

service zerotier-one restart

2.6.3:加入网络

Zerotier加入服务器的Network ID,这个Network ID可以在刚刚保留的页面获取到,看下图红框的位置,每个人的Network ID不一样,别把我图里的给放上去了。

执行命令,把<Network ID>替换成自己的。

zerotier-cli join <Network ID>

看到200 join OK字样,我们再次返回之前保留的zerotier页面,等个十几秒刷新一下。


2.6.4:授权并分配服务器IP

看到列表中多一行,Member name输入本机,然后点击IP assignment

输入11.11.11.99,点左边的➕,然后点右上角的Back按钮。

勾选AuthorizedActive bridge两个复选框,然后点击左下角Refresh按钮。


至此,服务器端配置完成。

3:客户端配置

3.1:Windows 配置

3.1.1:安装zerotier-one

下载zerotier-one并安装,下载地址:https://download.zerotier.com/dist/ZeroTier%20One.msi


3.1.2:替换planet文件

planet 文件覆盖粘贴到C:\ProgramData\ZeroTier\One中。


3.1.3:使新的planet生效

按Win+S键,输入service,打开服务。

找到ZeroTier One,并且重启服务。


3.1.4:加入网络

使用管理员身份打开PowerShell。
执行如下命令,看到join OK字样就成功了。

PS C:\Windows\system32> zerotier-cli.bat join <Network ID>(刚服务器端那边用的Network ID)
200 join OK
PS C:\Windows\system32

3.1.5:授权并分配客户端IP

去zerotier管理端网页做刚刚服务器端一样的设置,只不过IP换成11.11.11.11,记得勾选AuthorizedActive bridge两个复选框并刷新页面。


3.1.6:验证网络连通性

等个十几秒之后,试着在客户端的cmd里ping一下11.11.11.99,能ping通就可以了。


3.2:Linux 配置

3.2.1:安装zerotier-one

下载zerotier-one并安装

curl -s https://install.zerotier.com | sudo bash

3.2.2:替换planet文件

planet 文件上传到linux客户端。

planet 文件所在目录执行以下命令,覆盖客户端安装的zerotier-one自带的planet。

cp planet /var/lib/zerotier-one/

3.2.3:使新的planet生效

重启zerotier-one服务。

service zerotier-one restart

3.2.4:加入网络

执行如下命令,看到200 join OK字样就成功了。

zerotier-cli join join <Network ID>(刚服务器端那边用的Network ID)

3.2.5:授权并分配客户端IP

去zerotier管理端网页做刚刚服务器端一样的设置,只不过IP换成11.11.11.11,记得勾选AuthorizedActive bridge两个复选框并刷新页面。


3.2.6:验证网络连通性

等个十几秒之后,试着在客户端ping一下11.11.11.99,能ping通就可以了。


3.3:安卓 配置

Zerotier 非官方安卓客户端


3.4:MacOS 配置

3.4.1:安装zerotier-one

下载地址:https://download.zerotier.com/dist/ZeroTier%20One.pkg


3.4.2:替换planet文件

进入 /Library/Application\ Support/ZeroTier/One/ 目录,并替换目录下的 planet 文件


3.4.3:使新的planet生效

重启 ZeroTier-One

cat /Library/Application\ Support/ZeroTier/One/zerotier-one.pid | sudo xargs kill

3.4.4:加入网络
zerotier-cli join 网络 id

3.4.5:授权并分配客户端IP

去zerotier管理端网页做刚刚服务器端一样的设置,只不过IP换成11.11.11.11,记得勾选AuthorizedActive bridge两个复选框并刷新页面。


3.4.6:验证网络连通性

等个十几秒之后,试着在客户端的cmd里ping一下11.11.11.99,能ping通就可以了。


3.5:OpenWRT 配置

3.5.1:安装zerotier-one

这个在openwrt商店里可以下载到。


3.5.2:替换planet文件

进入 /etc/config/zero/planet 目录,并替换目录下的 planet 文件。


3.5.3:使新的planet生效

在openwrt网页后台先关闭zerotier服务,再开启zerotier服务。


3.5.4:加入网络

在openwrt网页后台输入服务器端生成的网络ID,然后加入。


3.5.5:授权并分配客户端IP

去zerotier管理端网页做刚刚服务器端一样的设置,只不过IP换成11.11.11.11,记得勾选AuthorizedActive bridge两个复选框并刷新页面。


3.5.6:验证网络连通性

等个十几秒之后,试着在客户端的cmd里ping一下11.11.11.99,能ping通就可以了。


3.6:iOS 配置

方案一: 越狱后安装ZeroTie,然后替换planet文件

方案二: 使用Wireguard接入到ZeroTier网络


4:端口转发配置

打开服务器端1Panel,切换到系统——防火墙——端口转发页面。

协议选tcp/udp,源端口就是服务器这边对应的端口,目标IP填zerotier为客户端分配的IP,目标端口填写客户端的被转发的端口,最后点击确认。

最后用云服务器IP:源端口访问一下,此时应该可以访问了。

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »