news 2026/9/10 7:32:23

ZeroTier 虚拟组网指南:三步让异地设备 P2P 直连,不再需要公网 IP

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ZeroTier 虚拟组网指南:三步让异地设备 P2P 直连,不再需要公网 IP

ZeroTier 虚拟组网指南:三步让异地设备 P2P 直连,不再需要公网 IP

【免费下载链接】ZeroTierOneA Smart Ethernet Switch for Earth项目地址: https://gitcode.com/GitHub_Trending/ze/ZeroTierOne

公司内网要连家里的 NAS,两台机器都在 NAT 后面,都没有公网 IP——按传统做法,这事基本走到头。ZeroTier One 是一个开源的虚拟组网客户端,它用 P2P 直连技术把不同地点的设备叠到同一个虚拟以太网交换机上,接进来就能互相 ping 通,就像插在同一个局域网的交换机里。

它替你干了什么:NAT 自动打洞、zt0 虚拟网卡与端到端加密

它替你做了四件事,你只需要提供一个 16 位网络 ID:

  • 身份:首次启动替你生成唯一的 10 位节点地址和 ECC-256 密钥对
  • 连通:自动做 NAT 穿透,P2P 直连成功就走直连,直连不成才降级走中继
  • 网卡:把网络呈现为系统里的本地 zt0 接口,现有软件不用改一行配置
  • 加密:所有流量端到端加密,密钥只在你手里

整条链路用白话讲:节点启动时读取本地身份,向网络控制器报到;控制器把成员名单和访问控制规则下发给每个节点;节点之间再用 UDP 互相试探、建加密通道;之后以太网帧加密后经这条通道直发,虚拟网卡把它注入你的系统。核心逻辑在仓库的 node/ 目录。

🚀 三步跑起来:启动 zerotier-one 加入第一个网络的完整步骤

从零到有可用 zt0 接口,五条命令:

  1. sudo apt install zerotier-one—— 装好服务包(其他系统装官方包),同时配好守护进程单元
  2. sudo systemctl start zerotier-one—— 启动守护进程;首次启动会生成节点身份,弱机器因抗 DDoS 工作量证明要等十几秒,属正常现象
  3. sudo zerotier-cli listnetworks—— 确认服务活着,列表为空很正常,你还没加入任何网络
  4. sudo zerotier-cli join 9xxxxxxx…—— 用 16 位网络 ID 加入,本地 zt0 接口随之拉起并自动拿到 IP
  5. ip addr show zt0—— 看到分配的地址,再 ping 同网成员通,说明直连已建立

不经 systemd、手动拉起守护进程时用sudo zerotier-one -d,自定义端口和工作目录写成sudo zerotier-one -d -p12345 /custom/dir。最常用参数速查:

参数作用
-dfork 到后台,以守护进程方式运行
-p<port>改绑主服务端口,默认 9993,本地 JSON API 就开在这个端口
-U允许非特权用户运行,专为只跑网络控制器的场景
<工作目录>结尾参数,默认 Linux 上是 /var/lib/zerotier-one
-i/-q以 zerotier-idtool / zerotier-cli 身份运行同一二进制

工作目录文件清单:identity.secret 备份与节点迁移指南

工作目录里的文件平时不用翻,只在四个时机才需要碰,细节可对照 doc/zerotier-one.8.md:

首次启动时生成

  • identity.secret—— 完整身份,含 10 位地址和私钥;丢了,这台机器的 ZeroTier 地址就换了,各网络的成员白名单都得重配
  • identity.public—— 地址加公钥,给别人验证你用的;丢了无妨
  • authtoken.secret—— 本地 JSON API 的访问令牌;丢了 API 调不动,重启会自动生成新的
  • zerotier-one.port—— 记录当前端口;重启重建

日常运维会看

  • networks.d/—— 已加入网络的配置缓存;touch一个空的<网络ID>.conf就能预配置开机自动加入
  • iddb.d/—— 60 天内见过的对端公钥缓存,可删,重建后重连会变慢

迁移节点才动

  • identity.secret拷到新机器即完成节点搬家;devicemap记住 ztN 接口号与网络的映射,保证重启后名字不飘

开了控制器才有

  • controller.db是 SQLite3 数据库,controller.db.backup每 5 分钟滚动备份;备份就拷后者,它才是可安全拷贝的那份

authtoken.secret 权限管理:ZeroTier 安全三原则

如果只记三件事:

  1. identity.secret 当密码对待—— 它含私钥,拿到的人能在任何网络里冒充你的设备。反例:图省事把它传到群聊或网盘同步。
  2. 工作目录放持久化存储并定期备份—— 别指向会被清理的临时目录。反例:拿 /tmp 当工作目录,重启后地址全丢、网络里出现"新设备"。
  3. API 和控制器不暴露—— JSON API 只监听 127.0.0.1,控制器单独实例部署。反例:生产控制器和普通节点混跑,9993 端口对公网开放。

其余细节(收紧 authtoken.secret 读权限、同一份 identity 别同时拷给多台机器)都归同一原则:泄露密钥的文件一旦外流,网络等于裸奔。

🔁 多实例与预配置网络:进阶玩法和踩坑提示

  • 场景:同机多实例:做法:-p换端口加独立工作目录;但单个实例本就能加入任意多个网络,一般用不上
  • 场景:批量部署节点:做法:在 networks.d/ 预置空<网络ID>.conf实现开机自动加入;成员很多时按业务分区拆网,别全塞进一个大网
  • 场景:首次启动卡在"生成身份":做法:弱性能设备上抗 DDoS 证明要十秒以上,只会发生一次,别反复重启
  • 场景:退出不用的网络:做法:zerotier-cli leave <网络ID>,同时清掉 networks.d/ 里的对应缓存
  • 场景:跑专用控制器:做法:-U降权运行,独立 controller.db 定期备份 backup 文件,别和节点混部署

回到开头那个痛点:NAT 后面没公网 IP,以前只能打洞失败、转发端口二选一,现在多装一个守护进程就够了。下一步建议:挑一台最常要连的机器加入同一个网络,用zerotier-cli peers确认链路状态后再把它纳入日常使用。

【免费下载链接】ZeroTierOneA Smart Ethernet Switch for Earth项目地址: https://gitcode.com/GitHub_Trending/ze/ZeroTierOne

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 7:31:01

RPCS3 自动更新完全指南:为什么它不自动更新、卡住了怎么办

RPCS3 自动更新完全指南&#xff1a;为什么它不自动更新、卡住了怎么办 【免费下载链接】rpcs3 PlayStation 3 emulator and debugger 项目地址: https://gitcode.com/GitHub_Trending/rp/rpcs3 在 Linux 上打开 RPCS3&#xff0c;你会发现它长时间运行也不弹任何更新提…

作者头像 李华
网站建设 2026/9/10 7:30:56

AI文本如何改出人味?一份实战向的Humanizer改写指南

1. 为什么“一眼认出机器写的字”正在变成一门手艺 前阵子团队内部做了一次盲测&#xff0c;让几位编辑从十篇匿名文章里挑出“真人写的”&#xff0c;结果很有意思&#xff1a;大家公认最像真人的两篇&#xff0c;恰好是所有人花时间最少的&#xff1b;而被一致判定为“AI写的…

作者头像 李华
网站建设 2026/9/10 7:30:55

Humanizer是什么:AI文字去机器味的人文化改写核心技巧与实践

1. Humanizer是什么&#xff1a;AI文字"去机器味"的核心逻辑这两年AI写作工具铺天盖地&#xff0c;ChatGPT、Claude、Gemini&#xff0c;随便一个都能在几秒内吐出一篇结构工整、观点齐全的文章。但只要你读得稍微多一点&#xff0c;就会发现这些文字有一个共同特点&…

作者头像 李华
网站建设 2026/9/10 7:28:35

DIY空调省电助手:基于规则引擎与热舒适模型的智能温控实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华