EasyTier + Cloudflare Tunnel 实现无服务器组网
前言
在没有公网 IP 的情况下,如何实现异地设备组网一直是困扰很多人的问题。传统的解决方案通常需要:
- 购买云服务器作为中转
- 申请公网 IP(越来越困难)
- 使用第三方商业 VPN 服务
本文将介绍一种完全免费、无需服务器、无需公网 IP的组网方案:EasyTier + Cloudflare Tunnel。
方案原理
EasyTier 简介
EasyTier 是一个简单、安全、去中心化的异地组网方案,由 Rust 语言和 Tokio 框架实现。主要特点包括:
- 去中心化:节点平等独立,无需中心化服务
- 安全:支持 WireGuard 加密通信,AES-GCM 加密中转流量
- 高性能:全链路零拷贝,性能优异
- 跨平台:支持 Windows、Linux、macOS、Android、iOS
- NAT 穿透:高效 UDP、IPv6 穿透,可打通 NAT4-NAT4 网络
Cloudflare Tunnel 简介
Cloudflare Tunnel 是 Cloudflare 提供的免费内网穿透服务,通过 cloudflared 客户端建立安全连接到 Cloudflare 边缘网络。
组合优势
| 方案 | 需要服务器 | 需要公网 IP | 费用 | 复杂度 |
|---|---|---|---|---|
| 传统 VPN | ✅ | ✅ | 高 | 高 |
| 商业组网工具 | ❌ | ❌ | 高 | 低 |
| EasyTier 公共服务器 | ❌ | ❌ | 免费 | 低 |
| EasyTier + Cloudflare Tunnel | ❌ | ❌ | 免费 | 中 |
准备工作
1. 注册 Cloudflare 账号
访问 Cloudflare 官网 注册账号。
2. 下载 EasyTier
根据你的操作系统下载对应版本:
- Windows: easytier-gui.exe
- Linux:
easytier-core二进制文件 - macOS: 支持 Intel 和 Apple Silicon
3. 下载 cloudflared
访问 cloudflared releases 下载对应系统的客户端。
配置步骤
第一步:创建 Cloudflare Tunnel
- 登录 Cloudflare One Dashboard
- 依次点击 Network → Tunnels → Create a tunnel
- 选择 Cloudflared 作为连接器
- 输入隧道名称(如
easytier-relay) - 根据你的系统选择安装方式,复制安装命令
1 | # Windows PowerShell 示例(以管理员身份运行) |
- 认证完成后,创建隧道:
1 | # 创建隧道 |
第二步:配置 Tunnel 路由
方式一:使用 Cloudflare Dashboard 配置(推荐)
- 在 Tunnel 详情页,点击 Public Hostname 标签
- 点击 Add a public hostname
- 配置 WebSocket 转发:
- Subdomain:
easytier-ws(自定义) - Domain: 选择你的域名
- Path: 留空
- Type:
HTTP - URL:
localhost:11011(EasyTier 的 WS 端口)
- Subdomain:
- 点击 Save hostname

方式二:使用配置文件
创建配置文件 config.yml:
1 | # cloudflared 配置文件 |
注意:
- 需要在 Cloudflare DNS 中添加对应的 CNAME 记录,指向
<Tunnel ID>.cfargotunnel.com - 虽然 Type 选择 HTTP,但 Cloudflare 会自动处理 HTTPS 加密(WSS)
第三步:启动 EasyTier 服务端
在作为服务端的设备上(可以是家中任意一台电脑或服务器):
1 | # 启动 EasyTier 服务端(以 Windows 为例) |
参数说明:
| 参数 | 说明 |
|---|---|
--relay-network-whitelist |
启用网络白名单中继 |
--relay-all-peer-rpc |
允许所有对等节点 RPC |
-m server |
以服务器模式运行 |
--file-log-level info |
日志级别为 info |
第四步:启动 Cloudflared
1 | # 运行隧道 |
或使用配置文件:
1 | cloudflared tunnel --config config.yml run |
第五步:客户端连接
其他设备通过 Cloudflare Tunnel 提供的域名连接到 EasyTier 网络:
TCP 连接方式
1 | # 使用 TCP 协议连接 |
WebSocket 连接方式(推荐)
1 | # 使用 WebSocket 协议连接(穿透性更好) |
参数说明:
| 参数 | 说明 |
|---|---|
-d |
后台运行(守护进程模式) |
--network-name |
网络名称,所有设备需保持一致 |
-p |
对端地址,使用 Cloudflare Tunnel 提供的域名 |
--no-listener |
不监听端口,仅作为客户端 |
第六步:配置网络密码(可选但推荐)
为了安全起见,建议设置网络密码:
1 | # 服务端 |
使用 GUI 客户端(Windows 推荐)
对于 Windows 用户,可以使用 EasyTier GUI 客户端,操作更简便:
- 下载并运行
easytier-gui.exe - 点击 创建网络 或 加入网络
- 填写以下信息:
- 网络名称:自定义(如
mynetwork) - 网络密码:自定义(可选但推荐)
- 虚拟 IP:自动分配或手动指定
- 对等节点:
ws://easytier-ws.yourdomain.com:443(Cloudflare 会自动升级为 WSS)
- 网络名称:自定义(如
- 点击 运行网络

常见问题与解决方案
1. 连接超时或握手失败
现象:
1 | connection error. err: wait resp error: wait handshake timeout |
解决方案:
- 检查 Cloudflare Tunnel 是否正常运行
- 确认 DNS 记录已正确配置并生效
- 尝试切换 TCP 和 WebSocket 协议
- 检查防火墙是否放行相关端口
2. 客户端无法发现服务端
排查步骤:
- 确认服务端 EasyTier 已启动并监听端口
- 检查 cloudflared 日志是否有连接记录
- 使用
cloudflared tunnel info <tunnel-name>查看隧道状态 - 确认客户端使用的域名和端口正确
3. NAT 穿透失败
优化建议:
- 启用
--relay-all-peer-rpc参数 - 确保服务端有公网出口或使用 Cloudflare Tunnel 中转
- 检查路由器 UPnP 设置
4. 性能优化
如果网络延迟较高,可以尝试:
1 | # 启用 KCP 协议优化弱网性能 |
高级配置
多节点组网
当有超过 2 台设备时,EasyTier 会自动建立 P2P 连接:
1 | 设备 A (服务端) <--Cloudflare Tunnel--> 设备 B |
子网路由宣告
如果需要访问设备所在局域网的其他设备:
1 | # 在设备上宣告子网路由 |
使用 Docker 部署
服务端 Docker 部署示例:
1 | version: '3' |
安全建议
- 设置强密码:使用
--network-secret参数 - 限制网络白名单:使用
--relay-network-whitelist仅允许指定网络 - 定期更新:保持 EasyTier 和 cloudflared 为最新版本
- 监控日志:启用
--file-log-level info记录连接日志 - 使用 HTTPS/WSS:优先使用加密协议
总结
通过 EasyTier + Cloudflare Tunnel 的组合,我们可以:
✅ 零成本:完全免费,无需购买服务器
✅ 无公网 IP:利用 Cloudflare 边缘网络
✅ 去中心化:节点平等,不依赖单一服务
✅ 跨平台:支持各种操作系统
✅ 易扩展:随时添加新设备到网络
这种方案特别适合:
- 家庭 NAS 远程访问
- 异地办公组网
- 开发测试环境共享
- 游戏联机
参考链接
- Title: EasyTier + Cloudflare Tunnel 实现无服务器组网
- Author: 清夏晚风
- Created at : 2026-04-15 20:11:14
- Updated at : 2026-05-29 14:43:35
- Link: https://blog.yuil.cn/2026/04/15/组网相关工具/虚拟软件/EasyTier/EasyTier+Cloudflare Tunnel实现无服务器组网/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments