Windows 下 EasyTier 组网脚本封装:启动、停止、状态查看与隐藏运行
前言
最近在使用 EasyTier 做内网穿透和多节点组网时,遇到了一些比较典型的问题:
- TUN 模式无法正常开启
- 虚拟网卡没有创建
- 节点之间已经 P2P 连接,但没有虚拟 IP
- 后台隐藏运行后,不知道 EasyTier 是否还在运行
- 想停止程序时不方便
- 希望启动、停止、状态查看都能脚本化
经过一轮排查和整理,最终封装了一套 Windows 下使用的 EasyTier 管理脚本。
本文记录一下完整过程和最终脚本设计思路。
当前目录结构
最终目录结构如下:
当前目录
├─ EasyTier
│ ├─ easytier-core.exe
│ └─ easytier-cli.exe
├─ config.ini
├─ Run.bat
├─ Start.bat
├─ Status.bat
└─ Stop.bat
其中:
| 文件 / 目录 | 说明 |
|---|---|
EasyTier/ |
EasyTier 程序目录,存放 easytier-core.exe 和 easytier-cli.exe |
config.ini |
配置文件,用于保存网络名、密钥、中间节点地址、本机虚拟 IP 等信息 |
Start.bat |
管理脚本,推荐从这里启动 |
Run.bat |
实际运行 EasyTier 的脚本,由 Start.bat 调用 |
Status.bat |
查看 EasyTier 运行状态和节点信息 |
Stop.bat |
停止正在运行的 EasyTier |
遇到的问题
一开始执行:
easytier-cli.exe peer
看到的节点信息类似这样:
| ipv4 | hostname | cost | lat(ms) | loss | tunnel | NAT |
|------|------------|-------|---------|------|---------|----------------|
| | Office-PC | Local | - | - | - | PortRestricted |
| | Home-PC | p2p | 12.35 | 0.0% | udp | PortRestricted |
| | Cloud-Node | p2p | 8.66 | 0.0% | tcp,udp | PortRestricted |
从结果可以看出:
- 节点之间已经连接成功
- P2P 通道正常
- 延迟和丢包也正常
- 但是
ipv4全部为空
这说明 EasyTier 网络连接本身没有问题,问题在于节点没有拿到虚拟 IP,所以 TUN 虚拟网卡也无法正常工作。
解决思路
EasyTier 的节点需要配置虚拟 IP。
可以使用 DHCP,也可以手动指定 IP。
为了便于排查和维护,我最终选择了手动指定虚拟 IP,例如:
Cloud-Node 10.100.10.1
Office-PC 10.100.10.2
Home-PC 10.100.10.3
每个节点的虚拟 IP 必须唯一,不能重复。
启动 EasyTier 时,需要加上:
--ipv4 10.100.10.2
这样本机节点就会拥有固定的 EasyTier 虚拟 IP。
配置文件 config.ini
为了避免每次都手动输入参数,我使用 config.ini 保存配置。
示例:
network_name=demo-easytier-network
network_secret=change-me-demo-secret
peer_host=203.0.113.10
peer_port=11010
local_ipv4=10.100.10.2
show_window=1
字段说明:
| 配置项 | 说明 |
|---|---|
network_name |
EasyTier 网络名称 |
network_secret |
EasyTier 网络密钥 |
peer_host |
中间节点 / 服务器的 IP 或域名 |
peer_port |
中间节点监听端口 |
local_ipv4 |
当前机器的 EasyTier 虚拟 IP |
show_window |
是否显示 EasyTier 运行窗口,1 显示,0 隐藏 |
脚本设计
我把功能拆成了 4 个脚本。
1. Start.bat
Start.bat 是管理脚本,也是平时主要运行的入口。
它负责:
- 检查管理员权限
- 读取
config.ini - 如果配置不存在,则提示用户输入
- 保存配置
- 调用
Run.bat启动 EasyTier - 输出当前节点信息和 Peer 列表
平时只需要双击:
Start.bat
2. Run.bat
Run.bat 是真正启动 EasyTier 的脚本。
它会被 Start.bat 调用,并接收参数:
Run.bat network_name network_secret peer_host peer_port local_ipv4 show_window from_start
正常情况下不建议直接双击 Run.bat。
如果用户直接运行 Run.bat,脚本会自动跳转到 Start.bat,避免误操作。
3. Status.bat
Status.bat 用于查看 EasyTier 是否正在运行,以及当前节点状态。
它会执行类似下面的命令:
tasklist /FI "IMAGENAME eq easytier-core.exe"
EasyTier\easytier-cli.exe node
EasyTier\easytier-cli.exe peer
常用来确认隐藏窗口模式下 EasyTier 是否还在后台运行。
4. Stop.bat
Stop.bat 用于停止 EasyTier。
核心命令是:
taskkill /IM easytier-core.exe /F
如果当前电脑上只运行一个 EasyTier 实例,这种方式比较简单直接。
启动参数说明
最终 EasyTier 的核心启动参数类似下面这样:
easytier-core.exe ^
--network-name demo-easytier-network ^
--network-secret change-me-demo-secret ^
--ipv4 10.100.10.2 ^
--peers tcp://203.0.113.10:11010 udp://203.0.113.10:11010 ^
--dev-name easytier0
其中:
| 参数 | 说明 |
|---|---|
--network-name |
网络名称 |
--network-secret |
网络密钥 |
--ipv4 |
当前节点的虚拟 IP |
--peers |
中间节点地址 |
--dev-name |
虚拟网卡名称 |
显示窗口和隐藏窗口
通过 show_window 控制是否显示 EasyTier 运行窗口。
显示窗口:
show_window=1
隐藏窗口:
show_window=0
如果隐藏窗口启动,平时可以通过:
Status.bat
查看状态,通过:
Stop.bat
停止 EasyTier。
日志处理
由于隐藏窗口运行时不方便看输出,所以可以把 EasyTier 的控制台日志重定向到日志文件中。
日志文件可以使用当前日期时间命名,例如:
log\20260425_184500.log
这样每次启动都会有一个独立日志文件,便于排查问题。
示例思路:
for /f %%i in ('powershell -NoProfile -Command "Get-Date -Format yyyyMMdd_HHmmss"') do set "LOG_TIME=%%i"
set "LOG_FILE=%LOG_DIR%\%LOG_TIME%.log"
然后启动时重定向输出:
> "%LOG_FILE%" 2>&1
这样标准输出和错误输出都会写入同一个日志文件。
启动成功后的效果
启动后执行:
EasyTier\easytier-cli.exe node
可以看到本机节点信息:
| Virtual IP | 10.100.10.2/24 |
|----------------|-----------------|
| Hostname | Office-PC |
| UDP Stun Type | PortRestricted |
执行:
EasyTier\easytier-cli.exe peer
可以看到所有节点信息:
| ipv4 | hostname | cost | lat(ms) | loss | tunnel | NAT |
|-----------------|------------|-------|---------|------|---------|----------------|
| 10.100.10.2/24 | Office-PC | Local | - | - | - | PortRestricted |
| 10.100.10.1/24 | Cloud-Node | p2p | 9.82 | 0.0% | udp,tcp | PortRestricted |
| 10.100.10.3/24 | Home-PC | p2p | 15.21 | 0.0% | udp | PortRestricted |
当每个节点都有虚拟 IP 后,就可以测试互通:
ping 10.100.10.1
ping 10.100.10.3
常见问题
1. 节点已经连接,但 ipv4 为空
说明该节点没有配置虚拟 IP。
需要在对应机器的配置中设置:
local_ipv4=10.100.10.x
或者启动参数中加:
--ipv4 10.100.10.x
每台机器的 IP 必须不同。
2. 本机有 IP,其他节点没有 IP
说明本机配置正常,其他节点还没有配置虚拟 IP。
例如:
Office-PC 10.100.10.2/24
Cloud-Node 10.100.10.1/24
Home-PC 空
需要到 Home-PC 上配置:
local_ipv4=10.100.10.3
然后重启 EasyTier。
3. easytier-cli status 无法使用
当前 EasyTier 版本可能没有 status 命令。
可以使用:
EasyTier\easytier-cli.exe stats
或者:
EasyTier\easytier-cli.exe stun
4. 无法创建虚拟网卡
需要检查以下几点:
- 是否以管理员权限运行脚本
- 是否配置了
--ipv4 - 是否误用了
--no-tun - EasyTier 是否正常启动
- 日志中是否有 TUN 或权限相关错误
5. 无法连接中间节点
检查配置:
peer_host=中间节点公网 IP 或域名
peer_port=11010
并确认中间节点防火墙放行:
TCP 11010
UDP 11010
推荐使用流程
我的使用流程如下:
- 准备好 EasyTier 程序目录
- 配置或首次运行
Start.bat - 设置当前机器的
local_ipv4 - 等待 EasyTier 启动
- 查看 Peer 列表
- 确认所有节点都有虚拟 IP
- 使用
ping测试互通 - 后续通过
Status.bat查看状态 - 需要停止时运行
Stop.bat
总结
这次主要解决了几个问题:
- EasyTier 节点无虚拟 IP
- TUN 模式无法正常创建虚拟网卡
- 后台运行不方便查看状态
- 隐藏窗口后不方便停止程序
- 日志不方便排查
最终通过几个批处理脚本,把 EasyTier 的启动、停止、状态查看和配置持久化都封装了起来。
整体使用体验变成:
启动:Start.bat
查看:Status.bat
停止:Stop.bat
配置:config.ini
对于 Windows 环境下长期运行 EasyTier 的场景,这种方式会方便很多。
AI总结生成

浙公网安备 33010602011771号