EasyTier 异地组网方案
立项时间:2026-06-21 | 部署时间:2026-06-22
状态:🟢 已部署(可通过 Dashboard 一键开关)
一句话:三台机器不再依赖物理网络,虚拟 IP 永远不变。
出门也能连回来,在家自动 P2P 直连零流量。
目录
- 网络拓扑
- 一键开关
- 组件清单
- 部署位置
- 运维手册
- 已知问题
- IP 替换清单(待完成)
一、网络拓扑
连线状态
| 路径 |
在家时 |
出门后 |
| 246 ↔ Windows |
P2P 直连(~2ms) |
经中继转发 |
| 246 ↔ Mac |
经中继 |
经中继 |
| Mac ↔ Windows |
经中继(3ms500ms) |
经中继 |
虚拟 IP 规划
| 机器 |
物理 IP |
虚拟 IP |
角色 |
| Ubuntu 246 |
192.168.1.246 |
10.144.144.1 |
通信中枢 + 中继节点 |
| MacBook 122 |
192.168.1.122 |
10.144.144.2 |
本地算力中心 |
| Windows 16 |
192.168.1.16 |
10.144.144.3 |
编排中枢 |
网络密码
保存在:
- 中继:阿里云 ECS
/usr/local/bin/easytier-core 启动命令
- 客户端 246:
/usr/local/bin/easytier-manager 脚本
- 客户端 Windows:
xmpp_agent_core.py 中 _EASYTIER_NET 常量
- 客户端 Mac:通过 SSH 从 246 传递
二、一键开关
Dashboard 按钮(推荐)
位置:http://192.168.1.246:5803 → Agents 页 → Infrastructure → EasyTier VPN
| 按钮 |
操作 |
效果 |
| Turn On |
POST /api/easytier/toggle |
246/Mac/Windows 全部启动 EasyTier |
| Turn Off |
POST /api/easytier/toggle |
全部停止 |
| 状态灯 |
GET /api/easytier |
三台机器运行状态 |
一键开关实际执行的命令
管理脚本(SSH 直连)
Windows 单独控制
三、组件清单
3.1 中继(阿里云 ECS)
| 项目 |
值 |
| 机器 |
piano-server (47.115.32.206) |
| 端口 |
11010(TCP,安全组已开放) |
| 进程 |
easytier-core --network-name mynet --network-secret ce75d0a5 -l tcp://0.0.0.0:11010 --disable-encryption |
| 启动方式 |
nohup 后台(非 systemd,Dashboard 不管理它) |
| 二进制 |
/usr/local/bin/easytier-linux-x86_64/easytier-core |
| 日志 |
/tmp/easytier.log |
| 注意 |
永不停止,始终在线为外出机器提供中继 |
3.2 客户端 246(Ubuntu)
| 项目 |
值 |
| 安装位置 |
/usr/local/bin/easytier-core |
| 管理脚本 |
/usr/local/bin/easytier-manager |
| 能力 |
cap_net_admin=ep(TUN 设备所需) |
| 启动命令 |
sudo easytier-core --network-name mynet --network-secret ce75d0a5 --peers tcp://47.115.32.206:11010 --ipv4 10.144.144.1 --disable-encryption --no-listener |
| 日志 |
/tmp/easytier-246.log |
3.3 客户端 Mac(122)
| 项目 |
值 |
| 安装位置 |
/usr/local/bin/easytier-core |
| 控制方式 |
246 通过 SSH hmo@192.168.1.122 启停 |
| 启动命令 |
sudo easytier-core --network-name mynet --network-secret ce75d0a5 --peers tcp://47.115.32.206:11010 --ipv4 10.144.144.2 --disable-encryption --no-listener |
| 日志 |
/tmp/easytier-mac.log |
| SSH 免密 |
已配置(246→122) |
3.4 客户端 Windows(16)
| 项目 |
值 |
| 安装位置 |
daily-workspace/tools/easytier/easytier-core.exe |
| 控制方式 |
HTTP POST 到 xxm bot :5802/easytier |
| 启动命令 |
start /b easytier-core.exe --network-name mynet --network-secret ce75d0a5 --peers tcp://47.115.32.206:11010 --ipv4 10.144.144.3 --disable-encryption --no-listener |
| 控制端点 |
实现在 xmpp_agent_core.py → _BridgeHandler.do_POST() |
| xxm bot |
自动管理 EasyTier 启停 |
3.5 Dashboard API
| 端点 |
方法 |
功能 |
/api/easytier |
GET |
返回三台机器运行状态 |
/api/easytier/toggle |
POST |
{"action":"start|stop"} 一键启停 |
| 实现位置 |
dashboard.py → api_easytier_status() / api_easytier_toggle() |
|
四、部署位置
涉及的代码文件
| 文件 |
作用 |
projects/EasyTier组网方案/README.md |
本文档 |
projects/AgentsMeeting/gateway/scripts/dashboard.py |
EasyTier API + HTML 按钮 |
projects/AgentsMeeting/gateway/scripts/templates/dashboard.html |
UI 按钮 |
projects/AgentsMeeting/xmpp_agent_core.py |
Windows /easytier 端点 + _start_easytier()/_stop_easytier() |
/usr/local/bin/easytier-manager (246) |
管理脚本 |
密码存储位置
网络密码 ce75d0a5 保存在:
| 位置 |
文件 |
形式 |
| 阿里云 ECS |
/usr/local/bin/easytier-core 启动命令 |
--network-secret ce75d0a5 |
| 246 |
/usr/local/bin/easytier-manager |
Shell 变量 |
| Windows |
xmpp_agent_core.py |
_EASYTIER_NET 常量 |
| Mac |
通过 SSH 从 246 传递 |
命令参数 |
五、运维手册
日常使用
出门场景
- 出门前点 Turn On
- MacBook 带走,在外地自动通过阿里云中继连接到家里
- 回家后点 Turn Off(或保持 On,在家会 P2P 直连不耗流量)
故障恢复
安全提示
--disable-encryption 是因为 EasyTier 默认加密方案在局域网场景下增加延迟
- 实际通信在物理层以下(同一交换机),公网流量经过 WireGuard 加密
- 如果对安全有更高要求,去掉
--disable-encryption 即可
六、已知问题
| 问题 |
状态 |
说明 |
| Mac ↔ 246 虚拟 IP 不通 |
🟡 |
Mac TUN 设备可能需要系统扩展授权,或防火墙拦截 ICMP。服务端口能通就行,不影响使用 |
| 进程重复启动 |
🟡 |
easytier-manager stop 有时杀不尽旧进程,start 前建议手动 sudo pkill -f easytier-core |
| Windows 启动带窗口 |
🟢 |
start /b 已隐藏窗口,但任务管理器能看到 |
| 中继是手动 nohup |
🟡 |
阿里云 ECS 重启后需手动启动中继。建议后续配 systemd 服务 |
七、IP 替换清单(待完成)
⚠️ 当前 EasyTier 只提供 VPN 通道,配置文件的 IP 还未替换。
以下清单待虚拟 IP 稳定运行后再执行。
为什么还没做
现在的策略是 主机名替换 而非直接改 IP:
以后所有配置写 node246:8642 而不是 192.168.1.246:8642。
开关 EasyTier 只需要改 9 行 hosts,不需要搜几十个文件。
待虚拟 IP 稳定运行一段时间后,再来做主机名替换。