EasyTier Windows 开机自启实现
EasyTier 是一个开源的轻量级组网工具,支持 UDP/TCP 穿透,可以轻松组建虚拟局域网。
但在 Windows 上,易用的 easytier-gui 不支持开机自启,在需要重启远程电脑的场景下不太方便。
本文介绍如何用 WinSW(Windows Service Wrapper)将 EasyTier 包装为 Windows 系统服务,实现开机自启、崩溃重启、后台静默运行。
项目结构
D:\easytier-service\ |
注:
easytier\目录就是下载的 easytier-clieasytier-cli-service.exe就是 WinSW-x64.exe 改的名字
EasyTier 配置
easytier\config.yaml:
# dhcp = true |
关键点:
ipv4:指定本机在虚拟网络中的固定 IPlisteners:监听 TCP/UDP 端口,用于节点间通信network_identity:网络名称和密码,同一组网的节点必须一致peer:初始节点地址,用于加入网络enable_encryption:开启传输加密
WinSW 服务配置
WinSW(Windows Service Wrapper)是一个开源工具,可以将任何可执行程序包装为 Windows 服务。
easytier-cli-service.xml:
<service> |
各配置项说明:
| 配置项 | 作用 |
|---|---|
<id> |
服务唯一标识,net start/stop 时使用 |
<name> |
服务显示名称,在 services.msc 中看到 |
<executable> |
要运行的程序的完整路径 |
<arguments> |
启动参数 |
<workingdirectory> |
工作目录 |
<startmode> |
Automatic 表示开机自启 |
<onfailure> |
崩溃后的恢复策略:先等 10 秒重启,再等 20 秒重启,最后重启系统 |
<resetfailure> |
失败计数重置时间(1 天) |
<log> |
日志按大小滚动,每个文件 10MB,保留 8 个 |
安装与使用
所有操作需要管理员权限:
# 安装服务 |
安装完成后,服务会自动设为开机自启,也可以通过 services.msc 手动管理。
管理 EasyTier 网络
# 查看已连接的节点 |
常见问题
1. 安装时提示 “Failed to configure the failure actions. 拒绝访问。”
这是 WinSW 的一个已知问题。安装服务的流程是:
CreateService— 创建服务 → 成功ChangeServiceConfig2(SERVICE_FAILURE_ACTIONS) — 设置崩溃自动重启 → 被拒绝
ChangeServiceConfig2 这个 API 在某些 Windows 版本上需要较高的权限(接近 TrustedInstaller 级别),即使以管理员身份运行也会被拒绝。
影响:服务本身正常运行、开机自启、日志记录都正常,唯一缺失的是:如果 easytier-core.exe 崩溃,不会自动重启。
解决方法(任选其一):
- 忽略:如果 EasyTier 运行稳定,不需要自动恢复
- 使用
sc的failureflag参数:sc failure easytier-cli reset=86400 actions=restart/10000
sc failureflag easytier-cli 1
2. 服务启动失败
查看 logs\ 目录下的 .err.log 文件获取详细错误信息。常见原因:
wintun.dll缺失或未正确放置- 配置文件中路径使用了相对路径
- 端口被占用
3. 无法连接网络
检查确认以下配置与服务器端一致:
network_namenetwork_secretpeer的地址和端口可达
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Diraw的世界!
评论