前言
随着科技发展日新月异,我们越来越需要软件,越来越依赖互联网。但是全球IPv4地址池即将耗尽,各地运营商开始逐步收回IPv4地址。那么家庭宽带没有公网IP,同时又想发布本地服务到公网应该怎么办呢?本文就是为了解决这个问题,通过 内网穿透 技术,我们能够实现安全、稳定地发布本地服务到公网。不用担心,一切都很简单,请耐心一点继续往下看。
内网穿透简介
内网穿透(又称 NAT 穿透 或 端口转发)是一种网络技术,用于解决处于内网(局域网)中的设备无法被公网直接访问的问题。
在传统网络架构中,内网设备通过路由器或防火墙连接到公网,这类设备通常只拥有私有 IP 地址(如 192.168.x.x、10.x.x.x),无法被公网直接识别和访问。
内网穿透的核心原理是通过一个具有公网 IP 的服务器(称为 穿透服务器 或 中转服务器)作为中介,建立内网设备与公网之间的通信通道,使公网用户能够访问内网中的服务或设备。
常用的内网穿透工具:
- FRP
- NPS
- Zerotier
- EasyTier
本人目前已经写了 Zerotier , Frp 和 NPS 的配置教程,后续如果发现其他好用的工具也会继续补充。
实际使用下来,个人认为EasyTier的实用性、功能性、操作性以及性能已经超过了FRP、NPS以及ZeroTier,对我来说是目前最好用的内网穿透工具。
内网穿透 通过 “中转” 机制打破了内网与公网的隔离,在开发、运维、物联网等场景中具有广泛应用。选择工具时需根据需求(如带宽、协议、安全性)权衡开源与商业方案,同时重视网络安全,避免因穿透导致内网暴露风险。
本人写这篇文章的目的就是力求零运维基础的小白看了也能直接配好,每行要执行的代码前面会标注执行原因。
首先我们得有一台拥有公网IP的云服务器,建议选择雨云,因为可以免费试用,正好可以用作测试,觉得合适再下单。
这是我写的雨云购置/配置教程:
综合云服务器选购策略:
配置前提:
- 一台拥有公网IP的云服务器,最好是干净的,刚装完系统的。
- 如果有云服务器提供商开了默认的防火墙或者安全组,请把所有端口全部开放,我们在服务器内部做防火墙。
- 本地客户端能正常上网,本教程以正常家用宽带为例,有些校园网可能不通,要视情况而定。
云服务器的推荐配置:
- 系统:Ubuntu 22.0.4 版本
- CPU:1H及以上
- 内存:1G及以上
本文以 Ubuntu 22.04 LTS 为例。
1:EasyTier 介绍
EasyTier 是一款简单、安全、去中心化的内网穿透和异地组网工具,适合远程办公、异地访问、游戏加速等多种场景。无需公网 IP,无需复杂配置,轻松实现不同地点设备间的安全互联。
为什么选择EasyTier?
- 去中心化:无需依赖中心服务器,所有节点平等独立,都可以参与转发和组网。
- 安全加密:支持 WireGuard 和 AES-GCM 加密,保障数据安全。
- 跨平台:支持 MacOS、Linux、Windows、FreeBSD、Android,未来将支持 iOS。
- 无公网 IP 组网:可通过共享公网节点组网,详见配置指南。
- NAT 穿透:支持 UDP NAT 穿透,复杂网络环境下也能稳定连接。
- 智能路由:自动选择最佳链路,降低延迟,提高吞吐量。
- 高可用性:多路径支持,自动切换健康链路,提升稳定性。
开始配置之前我希望你大概理解EasyTier的运作原理,这将对正确使用本工具有很大帮助:
- 本工具的大概原理是创建一个虚拟网络,然后通过配置使所有相关设备加入此虚拟网络(ZeroTier正是这种方式,但配置起来比这个麻烦),虚拟网络中的节点可通过分配的IP去访问任意其他节点。我们继续往下看。
- 我们需要一个中间节点作为公网入口,也就是公网IP云服务器。有了它,我们就能够从公网访问私网的内容。如果你有多个公网IP云服务器加入此网络,即使大部分云服务器都宕机了,只要还剩下一个网络正常的云服务器,EasyTier仍然可以保持所有节点正常运转。
- 其次,我们需要有
访问端和被访问端。假设你有一台NAS和一台笔记本,你希望在出差的路上用笔记本远程看家里NAS中的电影,那么我们称笔记本为访问端,NAS为被访问端。 - 正常情况下你需要在笔记本和NAS中安装EasyTier并加入虚拟网络,然后在笔记本上通过自动分配的虚拟IP+端口号访问NAS。这种模式相对安全,不会将被访问端直接暴露在公网之上。但是如果你的访问端是一台手机或者其他难以安装外部软件的设备,这种方式就相对麻烦。不用担心,该工具提供端口转发功能,能够将特定端口转发到云服务器的指定端口,通过此方式将服务直接暴露于公网,我将此方式的配置步骤放在最后,你可以按需选择需要的穿透方式。
2:服务器端配置
2.1:SSH连接云服务器
如果你不懂SSH是啥,这里是我写的SSH连接云服务器教程:
如果你懂SSH,请跳过这一步。
2.2:准备阶段
2.2.1:切换国内软件源
Ubantu的默认软件源很多是国外的,下载可能会中断或者速度很慢,所以切换软件源为国内清华源(如果你的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 update2.2.2:安装解压工具包
apt install unzip安装unzip时如果弹出以下窗口,不要慌张,点击键盘左上角的ESC键退出即可
2.3:安装服务端EasyTier
执行一键安装命令:
wget -O /tmp/easytier.sh "https://raw.githubusercontent.com/EasyTier/EasyTier/main/script/install.sh" && sudo bash /tmp/easytier.sh install --gh-proxy https://ghfast.top/安装完成界面:
启动EasyTier:
systemctl start easytier@default2.4:配置阶段
编辑配置文件,你可以自定义 network_name 和 network_secret,但是改完要记住,因为后面要用。
图省事就直接复制以下配置也没问题:
cat > /opt/easytier/config/default.conf << EOF
hostname = "转发服务器"
dhcp = true
listeners = [
"tcp://0.0.0.0:11010",
"udp://0.0.0.0:11010",
]
rpc_portal = "127.0.0.1:15888"
[network_identity]
network_name = "xiaotie"
network_secret = "Xiaotie333!"
[flags]
enable_kcp_proxy = true
enable_quic_proxy = true
latency_first = true
EOF重启EasyTier服务:
systemctl restart easytier@default如果你的云服务器是大厂的,一般是有安全组策略的,建议全部放开。如果是雨云云服务器则忽略本信息。
3:Windows客户端配置
EasyTier 提供 Windows GUI 面板,所以操作起来非常方便。
3.1:客户端GUI下载
安装时可能会报毒,不用担心,此软件100%开源,忽略即可。
安装后打开,界面是这样的:
点击右上角settings切换中文,如果你希望开机自启则点击开启开机自启。
3.2:客户端配置
所有需要修改的配置我都在图片中使用红框标注出来了。
修改完成后,点击运行网络按钮即可加入网络。
其他需要加入网络的Windows设备都按照本方法设置,加入后能够看到所有已加入网络的设备,如下图所示。

至此,你已经可以通过虚拟IPv4地址+端口号远程访问其他设备了。
4:Linux客户端配置
这里是命令行方式的配置步骤,本例的系统为Ubantu,如果你是Debian也通用。
为了兼容NAS、软路由等设备,我还写了Docker Compose的配置方式,请往下翻看。
4.1:安装解压工具包
apt install unzip安装unzip时如果弹出以下窗口,不要慌张,点击键盘左上角的ESC键退出即可
4.2:安装客户端EasyTier
执行一键安装命令:
wget -O /tmp/easytier.sh "https://raw.githubusercontent.com/EasyTier/EasyTier/main/script/install.sh" && sudo bash /tmp/easytier.sh install --gh-proxy https://ghfast.top/安装完成界面:
启动EasyTier:
systemctl start easytier@default4.3:配置阶段
编辑配置文件,如果你在服务器端配置文件中修改了 network_name 和 network_secret,这里也要对应修改:
cat > /opt/easytier/config/default.conf << EOF
hostname = "被控端"
dhcp = true
listeners = [
"tcp://0.0.0.0:11010",
"udp://0.0.0.0:11010",
"wg://0.0.0.0:11011",
]
rpc_portal = "0.0.0.0:0"
[network_identity]
network_name = "xiaotie"
network_secret = "Xiaotie333!"
[[peer]]
uri = "tcp://222.186.48.223:11010"
[flags]
enable_kcp_proxy = true
EOF重启EasyTier服务:
systemctl restart easytier@default其他需要加入网络的Windows设备都按照本方法设置。
配置完成后,你的设备已经加入了EasyTier网络,此时你可以在其他加入了EasyTier网络的设备中通过虚拟网络IP+端口访问该设备。
5:Docker Compose客户端配置
我个人比较喜欢用 Docker Compose而非Docker CLI,所以本教程也采用这种方式去配置。
这里假设你了解基本的Docker使用知识,写的比较简单。
5.1:编辑docker-compose.yml
services:
easytier:
image: daocloud.io/docker.io/easytier/easytier:latest
hostname: easytier
container_name: easytier
restart: always
network_mode: host
cap_add:
- NET_ADMIN
- NET_RAW
environment:
- TZ=Asia/Shanghai
devices:
- /dev/net/tun:/dev/net/tun
volumes:
- /etc/easytier:/root
- /etc/machine-id:/etc/machine-id:ro # 映射宿主机机器码
command:
- -d
- --network-name
- xiaotie
- --network-secret
- Xiaotie333!
- -p
- tcp://云服务器公网IP:11010注意:如果你在服务器端配置中修改了network-name和network-secret的值,这里也需要对应修改。
5.2:运行docker容器
执行命令:
docker compose up -d其他需要需要使用Docker Compose加入网络的设备都按照本方法设置。
完成后,你的设备已经加入了EasyTier网络,此时你可以在其他加入了EasyTier网络的设备中通过虚拟网络IP+端口访问该设备。
6:(可选)将服务暴露到公网
前面提到,有时候我们的设备不方便安装EasyTier,我们可以采用这种方式将服务直接暴露到公网,不要忘记开启指定端口的防火墙。
6.1:编辑服务器端配置文件
为什么我们需要再次编辑服务器端的配置文件呢?
这里的运作原理是:
EasyTier网络之外的设备发起请求 -> 到达公网云服务器 -> 转发请求至EasyTier网络之内的设备 -> 响应请求所以这里需要修改服务器端配置文件以接收指定端口的请求并转发到指定设备。
输入命令,编辑配置文件:
vim /opt/easytier/config/default.conf将以下内容加入进去:
[[port_forward]]
bind_addr = "0.0.0.0:xxxx"
dst_addr = "10.126.126.2:yyyy"
proto = "tcp" # 也可以输入udp注意:xxxx改成云服务器须指定的接收端口,yyyy改成被控端须发布到公网的服务的端口。如果要添加多个转发端口,继续往下追加即可。
以下是完整配置文件的最终内容,转发端口是我瞎填的:
hostname = "转发服务器"
dhcp = true
listeners = [
"tcp://0.0.0.0:11010",
"udp://0.0.0.0:11010",
]
rpc_portal = "127.0.0.1:15888"
[network_identity]
network_name = "xiaotie"
network_secret = "Xiaotie333!"
[[port_forward]]
bind_addr = "0.0.0.0:1234"
dst_addr = "10.126.126.2:2345"
proto = "tcp"
[[port_forward]]
bind_addr = "0.0.0.0:2345"
dst_addr = "10.126.126.2:3456"
proto = "udp"
[flags]
enable_kcp_proxy = true
enable_quic_proxy = true
latency_first = true7:结语
至此,EasyTier配置教程全部结束。
后面有时间的时候,我准备写EasyTier搭建Minecraft、饥荒等私人游戏服务器的教程,如果你有需要,就点个关注等待我的好消息吧!
最后,如果你觉得本文有用,请帮我点个赞,这是我继续写下去的动力,谢谢。

