小白也能看懂的 EasyTier 远程组网教程
这篇文章写给第一次接触“组网”的朋友。我会用最少的术语,把“一台服务器、两台电脑怎么连成一个虚拟局域网”这件事讲清楚。
先看结论:这套东西到底是怎么工作的?
一句话版:服务器上有一个一直在运行的 EasyTier 程序,它被注册成了系统服务(开机自动启动);两台电脑用 EasyTier 的图形界面(GUI)加入同一个网络,于是大家就像在同一个局域网里一样。
更具体一点:
- 服务器上的程序负责“牵线搭桥”,让两台电脑互相找到对方;
- 两台电脑尽量直接通信(P2P),不走服务器,速度快、不占服务器带宽;
- 你打开电脑上的 GUI,它就会自动连上服务器。服务器“在线”,就是因为那个服务一直在跑。
一、先搞懂几个词
| 词 | 大白话解释 |
|---|---|
| 公网服务器 | 在网上有固定“门牌号”(公网 IP)的电脑,任何人从任何地方都能访问它 |
| 内网电脑 | 家里或公司路由器后面的电脑,外面的人不能直接找到它 |
| 组网 | 让这些“找不到”的电脑之间也能互相访问,像在同一个局域网里 |
| P2P 直连 | 两台电脑之间直接通信,不绕路 |
| UDP 打洞 | 两台内网电脑通过服务器交换联系方式后,尝试直接连通的技术 |
| 信令 | 正式通信前传的少量“打招呼”消息,比如“我在哪、你在哪” |
| 端口 | 服务器上某个服务的入口,像大楼里的房间号 |
| systemd 服务 | Linux 系统管理后台程序的方式,能做到后台常驻、开机自启 |
| 防火墙/安全组 | 门卫,默认不让人进,需要手动放行端口 |
| SSH 工具 | 远程操作服务器的软件,我用的是 FinalShell |
二、整体架构
公网服务器(CentOS + easytier-core)
│ tcp/udp:<端口>(只传“打招呼”的信令,不传你的文件)
┌────┴────┐
│ │
电脑A 电脑B
(GUI) (GUI)
└── 打洞成功后 A ↔ B 直接通信 ──┘
一句话记住方案:服务器只负责介绍,不负责传话。
三、从 0 到 1 的完整步骤
第 0 步:准备材料
- 一台有公网 IP 的 Linux 服务器(我的系统是 CentOS 7.2。注意:CentOS 7 已停止维护,本教程只做演示,生产环境建议用仍受支持的系统);
- 两台 Windows 电脑(电脑 A 和电脑 B);
- 软件:服务器用 EasyTier 命令行版,电脑用 EasyTier GUI 版。
第 1 步:登录服务器
- 打开 FinalShell,新建一个 SSH 连接;
- 填服务器的公网 IP、用户名(一般是 root)和密码;
- 连接成功后,你会看到一个类似“远程黑窗口”的命令行界面,后面所有命令都输在这里。
第 2 步:把 EasyTier 放到服务器上
- 打开 EasyTier 官方 GitHub Releases 页面,下载 Linux 对应版本(x86_64);
- 用 FinalShell 把压缩包直接拖上去,或者用它的上传功能;
- 解压后得到一个
easytier-linux-x86_64/文件夹,整个放到/opt/easytier/下; - 给程序加执行权限:
chmod +x /opt/easytier/easytier-linux-x86_64/easytier-core /opt/easytier/easytier-linux-x86_64/easytier-cli
第 3 步:写服务器的配置文件
配置文件是给程序看的“说明书”,告诉它:网络叫什么、密码是什么、监听哪个端口、要不要转发数据。下面是脱敏后的配置文件,真实信息都换成了 <占位符>:
# 服务器端:custom-shard-center.toml(脱敏示例)
hostname = "我的服务器" # 可自定义
# 服务器不加入虚拟网、不分配虚拟 IP,只做中转管理
ipv4 = ""
dhcp = true
# TCP 和 UDP 监听同一个端口,提高穿透成功率
listeners = [
"tcp://0.0.0.0:<端口>",
"udp://0.0.0.0:<端口>",
]
# 管理控制台只监听本机,不要暴露到公网
rpc_portal = "127.0.0.1:<本地管理端口>"
[network_identity]
network_name = "<网络名>"
network_secret = "<网络密钥>"
[file_logger]
level = "warn"
file = "easytier"
dir = "/opt/easytier/logs/"
[flags]
default_protocol = "tcp"
enable_encryption = true
multi_thread = true
enable_ipv6 = true
# 允许 UDP 打洞,P2P 直连的关键
disable-udp-hole-punching = false
# 开启 KCP/QUIC 输入,增强穿透和弱网表现
disable_kcp_input = false
disable_quic_input = false
# 白名单留空:服务器只帮忙建立 P2P 连接,不转发业务数据
relay_network_whitelist = ""
# 允许转发 RPC,节点之间才能互相发现
relay_all_peer_rpc = true
disable_p2p = false
几个关键项:
| 配置项 | 大白话解释 |
|---|---|
ipv4 = "" |
服务器不进虚拟网、不占虚拟 IP,只当“介绍人” |
listeners |
同时开 TCP 和 UDP 两个“门”,提高连上的概率 |
rpc_portal |
本地管理口,只给本机用,别对外开放 |
network_name / network_secret |
虚拟网的“网名和密码”,所有设备必须一模一样 |
relay_network_whitelist = "" |
不为别人转发数据,只帮忙建立 P2P 连接 |
relay_all_peer_rpc = true |
允许转发“打招呼”消息,电脑之间才能互相发现 |
disable-udp-hole-punching = false |
允许 UDP 打洞,这是 P2P 直连的关键 |
enable_encryption = true |
通信加密,别忘了用足够强的密码 |
第 4 步:先手动运行一次,确认配置没问题
cd /opt/easytier/easytier-linux-x86_64
./easytier-core -c custom-shard-center.toml
- 程序不报错、一直运行,说明配置没问题;
- 可以另开一个 SSH 会话,用
ss -lntup | grep <端口>确认端口正在监听; - 确认没问题后按 Ctrl+C 停掉,下一步交给系统来管理。
第 5 步:注册成 systemd 服务(重点!)
大白话解释:手动启动的程序,SSH 一关可能就没了;systemd 服务就是把程序交给系统托管,关掉 SSH 它还在跑,重启服务器它也会自动启动。
在服务器上创建服务文件(也可以在电脑上写好再传上去):
vi /etc/systemd/system/easytier-share-center.service
文件内容如下(这就是我服务器上实际用的服务文件):
[Unit]
Description=EasyTier Service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
ExecStart=/opt/easytier/easytier-linux-x86_64/easytier-core -c /opt/easytier/easytier-linux-x86_64/custom-shard-center.toml
[Install]
WantedBy=multi-user.target
看不懂没关系,逐行解释:
| 内容 | 大白话解释 |
|---|---|
[Unit] |
“基本信息”段落开始 |
Description=EasyTier Service |
给服务起的名字,方便自己辨认 |
After=network.target syslog.target |
等网络和日志系统准备好再启动 |
Wants=network.target |
希望网络可用 |
[Service] |
“怎么运行”段落开始 |
Type=simple |
程序直接运行,交给系统托管 |
ExecStart=... |
真正执行的启动命令,路径要和你的实际情况一致 |
[Install] |
“开机启动”段落开始 |
WantedBy=multi-user.target |
正常开机进入系统后启动它 |
保存后执行三条命令:
systemctl daemon-reload
systemctl enable --now easytier-share-center
systemctl status easytier-share-center
看到 active (running) 就成功了。enable 表示开机自启,--now 表示现在立刻启动。
小进阶:我上面的服务文件里没有写“崩溃自动重启”。想更省心,可以在
[Service]段落里加两行:Restart=on-failure RestartSec=5意思是:程序意外退出时,5 秒后自动拉起来。
再验证一下服务真的在跑:
# 1. 看进程和启动参数
ps -ef | grep easytier
# 2. 搜服务名(即使忘了名字也能找到)
systemctl list-unit-files | grep -i easy
# 3. 看端口是否在监听(TCP 和 UDP 都应能看到)
ss -lntup | grep <端口>
ps输出里,进程的父进程 PID 是 1,说明它挂在系统下面,SSH 断开也不受影响;systemctl list-unit-files里看到easytier-share-center.service enabled,enabled表示开机自启。
一个小经验:如果 systemctl status easytier 提示找不到服务,不代表没有服务,很可能只是名字不叫 easytier,用上面第 2 条命令搜一下就能找到。
第 6 步:放行防火墙和安全组
服务器上有两个“门卫”,都要放行同一个端口:
- 系统防火墙(CentOS 默认是 firewalld):
firewall-cmd --permanent --add-port=<端口>/tcp
firewall-cmd --permanent --add-port=<端口>/udp
firewall-cmd --reload
- 云厂商的安全组:登录云控制台,找到这台服务器,在安全组里放行同样的 TCP 和 UDP 端口。
注意:管理端口(rpc_portal)不要对外开放。
第 7 步:两台电脑用 GUI 加入
- 两台电脑都安装并打开 EasyTier GUI;
- 新建或加入同一个网络:网络名、网络密钥必须和服务器配置完全一致;
- 在对端(Peer)设置里添加服务器地址,格式为
tcp://<服务器公网域名或 IP>:<端口>; - 建议在 GUI 里给电脑 A、B 各固定一个虚拟 IP(例如
<虚拟IP_A>、<虚拟IP_B>),方便长期使用; - 两台电脑都显示在线后,从电脑 A 执行:
ping <虚拟IP_B>
能通就说明组网成功。之后就可以像在局域网里一样:
- 远程桌面:
mstsc连接对方的虚拟 IP; - 文件共享:访问
\\<虚拟IP>\共享目录; - SSH:直接连对方的虚拟 IP。
第 8 步:日常管理
systemctl status easytier-share-center # 看状态
systemctl restart easytier-share-center # 重启(改配置后常用)
systemctl stop easytier-share-center # 停止
systemctl start easytier-share-center # 启动
journalctl -u easytier-share-center -f # 看实时日志
四、常见问题
| 问题 | 排查方法 |
|---|---|
| GUI 里服务器离线 | 在服务器上执行 systemctl status easytier-share-center 或 ps -ef | grep easytier |
| 忘了服务叫什么 | 执行 systemctl list-unit-files | grep -i easy |
| 电脑连不上服务器 | 检查防火墙和安全组有没有放行 TCP/UDP <端口>;网络名、密钥是否一致 |
| 两台电脑 ping 不通 | 确认虚拟 IP 是否固定;如果打洞失败且服务器不转发数据,可能会连不上,可以把网络名加进白名单让服务器兜底中继 |
五、叠甲
- 这套方案只用于连接自己拥有或获得授权的设备,不要开放给陌生人;
- 不要用它访问法律禁止的内容,也不要把组网能力包装成面向公众的“代理/转发”服务出售或提供;所有使用场景都要符合所在地法律法规和云服务商条款;
- EasyTier 是 LGPL-3.0 开源项目,个人和内部使用没有问题;如果要做二次分发或商业化,先阅读并遵守许可证条款;
- CentOS 7 已经停止维护,直接暴露在公网有安全风险,建议迁移到仍受支持的系统,或至少限制来源 IP、只开放必要端口。
参考资料
- EasyTier 官方文档:https://easytier.rs/guide/network/host-public-server.html
- EasyTier 官方仓库:https://github.com/EasyTier/EasyTier
本文是个人技术实践记录,不构成任何商业建议或服务承诺。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)