资讯详情

ZeroTierOne Windows 服务:从注册到入网的完整实战指南

📅 2026/9/10 15:14:55 | 华诺云谱 👁 阅读
ZeroTierOne Windows 服务:从注册到入网的完整实战指南
ZeroTierOne Windows 服务从注册到入网的完整实战指南【免费下载链接】ZeroTierOneA Smart Ethernet Switch for Earth项目地址: https://gitcode.com/GitHub_Trending/ze/ZeroTierOneZeroTierOne 是一个把不同网络的机器组成同一个二层局域网的开源虚拟网络项目它在 Windows 上以 ZeroTierOneService 后台服务的形式运行。装完服务却发现状态是未启动先确认你有没有用管理员权限跑安装join 网络失败先查 TAP 虚拟网卡驱动有没有装上。整条链路其实就三层服务向系统注册、虚拟网卡出现在系统里、节点真正 join 进网络。三步把服务跑通第一步让服务注册进系统。用官方安装包时这一步是自动完成的底层逻辑可以看仓库里的 ServiceInstaller.cpp自己从源码构建的话需要向 SCMWindows 统一管理所有后台服务的总控台手动注册。第二步让 TAP 虚拟网卡出现。Windows 网卡驱动在 windows/TapDriver6/ 目录关键文件是 zttap300.inf。装完后在网络连接列表里应能看到 ZeroTier One 网卡没有的话后面 join 一定失败。第三步join 网络。以管理员身份打开命令行sc query ZeroTierOneService zerotier-cli list zerotier-cli join 16位网络ID先查服务状态再列节点信息最后入网。list 没有任何返回说明服务没起来报权限错说明你没以管理员身份执行别跳这一步直接重试。服务注册时系统里发生了什么服务的核心参数全部集中在 ZeroTierOneService.h 顶部的一组宏里六行值得看一遍#define ZT_SERVICE_NAME ZeroTierOneService #define ZT_SERVICE_DISPLAY_NAME ZeroTier One #define ZT_SERVICE_START_TYPE SERVICE_AUTO_START #define ZT_SERVICE_DEPENDENCIES #define ZT_SERVICE_ACCOUNT NULL // 以 LocalSystem 运行 #define ZT_SERVICE_PASSWORD NULL第一行是命令行用的服务名第二行是 services.msc 里显示的标题第三行决定开机后自动拉起依赖为空说明它不依赖其他服务账户为 NULL 表示以系统 LocalSystem 身份跑权限足够做网卡操作。真正的注册动作在 InstallService 里先用 GetModuleFileName 取当前 exe 的绝对路径外加一对引号防路径带空格再创建独立进程型服务并写入描述。核心调用链如下schSCManager OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT | SC_MANAGER_CREATE_SERVICE); schService CreateService(schSCManager, pszServiceName, pszDisplayName, SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS, dwStartType, /* ... */); // ... 省略完整逻辑见下方文件如果 OpenSCManager 返回 NULL你会看到 OpenSCManager failed 这个报错90% 的情况就是没给管理员权限换权限重跑即可。服务崩溃后它怎么自己爬起来很多人以为服务装完就一劳永逸实际上 ZeroTierOne 服务内嵌了一个自愈循环。在 ZeroTierOneService.cpp 的 threadMain 里有个 restart_node 标签节点返回不可恢复错误时写一条 Application 事件日志、睡 5 秒然后回到标签处重建 OneService 实例。有个特殊情况值得记住身份冲突IDENTITY_COLLISION即两台机器用了同一身份时服务不会卡死而是把旧的 identity.secret 改名存为 identity.secret.saved_after_collision删掉旧身份重新生成。所以你如果某天发现节点 ID 变了先去主目录找这个备份文件里面存着原来的身份。主目录默认是 C:\ProgramData\ZeroTier\One\OnStart 支持用第一个参数覆盖它。这个口子对调试很有用多个实例各开一个目录就能互不干扰。驱动装不上或网卡消失的排查顺序TAP 驱动有问题时按这个顺序查不用乱翻确认安装过程全程以管理员身份运行驱动签名校验失败大多栽在这设备管理器里找带黄色感叹号的网卡有就手动指定 zttap300.inf 重新装还不行就翻 Application 事件日志服务侧的错误都通过 WriteEventLogEntry 写在这里卸载方向同理UninstallService 会先停服务、轮询等 STOP_PENDING 状态结束、再调用 DeleteService 删注册信息。如果报 DeleteService failed (is service running?)说明停止没走完手动 sc stop 一次再卸载。不想装服务时前台调试跑法如果你只是想把 ZeroTierOne 跑起来验证功能有个更轻的路子跳过服务注册直接前台跑 exe。windows/README.md 里的例子可以直接抄MSBuild ZeroTierOne.sln /property:ConfigurationRelease /property:Platformx64 .\zerotier-one_x64.exe -p9994 -C C:\zt_home\再起一个窗口让 CLI 指向同一端口和同一主目录zerotier-cli.bat -p9994 -DC:\zt_home join 网络ID注意 -p 和 -D 两个参数必须与前台进程完全一致端口或目录错一个CLI 就会去敲一个不存在的实例表现为无响应。进阶控制器配置和网络策略的文档入口服务跑通只是入口。想继续深入控制器controller负责网络成员和权限仲裁的服务端、网络策略和 CLI 全量参数仓库里的 doc/zerotier-one.8.md 是最完整的参考遇到具体兼容性问题建议直接去项目的 Issue 区搜一下Windows 驱动类问题那里沉淀得最多。【免费下载链接】ZeroTierOneA Smart Ethernet Switch for Earth项目地址: https://gitcode.com/GitHub_Trending/ze/ZeroTierOne创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。