ZeroTier 自建教程都停在“ping 通了”:这 4 个公网口子最容易忘关,附 10 分钟自查清单

源自80位全网作者

07:24

ZeroTier 的自建教程,几乎全都停在"ping 通了"那一步。搭 moon 的、搭 planet 的、用 Docker 部署控制器面板的,最后基本都是:测试连通、速度起飞、交作业。

但我翻了一遍今年知乎、B站上的 ZeroTier 自建帖,还有几个新开源项目的文档,发现很少有人讲建好之后的事:你的服务器跑起来的那一刻,它比之前多开了几个对公网的口子。这些口子该不该开、哪些能关,教程里不说,很多人用了大半年也没意识到。

ZeroTier 自建教程都停在“ping 通了”:这 4 个公网口子最容易忘关,附 10 分钟自查清单

先说不用慌的部分:流量本身不用太担心

不少人第一反应是"我的数据会不会被偷看"。这点其实可以放下:ZeroTier 主打的就是让全球设备组成一个加密虚拟局域网,数据传输全程加密。知乎不管流量走官方中继还是别人的 moon,中间节点看到的都是密文。而且别人要加入你的网络,得拿到网络 ID、再经过管理员授权,"配置文件一泄露就被人钻进来"这种事基本不会发生。

真正要检查的是另一半:管理面,和你这台服务器本身。你搭的那台 VPS,既是网络数据的中转站,也是一台跑着 SSH、管理 API 和网页面板的 Linux,教程教你打开的,恰恰是后面这部分的门。打开 Central 控制台看一眼就明白了:你名下有几个网络、多少台设备已授权、还有几台在排队等入网,全在这一块面板里。

门口一:9993 端口,TCP 和 UDP 是两回事

这是最容易踩的一个坑,因为 9993 其实是"两个端口":

  • 9993/UDP:数据端口。自建教程和 moon 配置几乎都固定用它,这个确实要放行。

  • 9993/TCP:ZeroTier 的本地管理 API 端口,控制器和 ztncui 这类面板靠它通信,有 authtoken 保护,默认只听本机。

不少教程一句"协议选 TCP/UDP"就把两个全开了。UDP 是必要的,TCP 开到公网,等于把网络的管理入口挂到街上,就算有 token 保护也没必要冒这个险。尤其如果你的 token 文件权限很松,或者配置曾经贴进过公开帖子,风险就不是零。今年 2 月还有用户吐槽,zerotier 莫名被微软防火墙暗中拦截,可能单纯开 9993 端口也不行。微博端口出问题时,先分清 TCP 和 UDP 各管什么,能少走很多弯路。

门口二:Web 管理面板直接对着公网

ztncui 的 3000、集成镜像的 4000,很多教程一条 docker 端口映射就完事,密码更是建完再没动过。问题是,面板这个东西管的是"谁能进你的网":设备列表里点一下能授权入网,点一下也能踢出去,权限大得吓人。

ZeroTier 自建教程都停在“ping 通了”:这 4 个公网口子最容易忘关,附 10 分钟自查清单

搭面板的教程一搜一大把,但几乎没人提醒你后半句:换成强密码、限制来源 IP,或者干脆只通过 ZeroTier 内网去访问它。用自己组的网管搭网的服务器,正好闭环。

门口三:Docker 的 host 网络模式

今年 5 月发布的新开源管理面板 Tairitsu,作者在部署文档里专门提醒过这一点:不要使用 host 网络,会大幅增加被攻击的风险,只映射需要的端口就够了。知乎host 模式意味着容器共享宿主机全部端口,容器里跑什么,什么就直接对着公网。很多"一键镜像"诞生在 ztncui 还是唯一选择的年代,为了省事,端口都是全开的。

门口四:planet 文件别当传单发

自建 planet 要给每台客户端替换 planet 文件,不少人顺手也发给朋友。这个文件写的是你私有"网络世界"的根定义,拿到它的人能找到你这套基础设施的入口。再说一遍:有 planet 不等于能进你的网,入网还要网络 ID 和授权,但没必要发给不相干的人,更别把它跟部署脚本一起传进公开代码仓库。

今年生态的两个变化,自建党也该知道

一个是老面板的问题。多数自建教程用的 ztncui,这个项目自从 2023 年之后再也没有任何动静,而且长时间运行还存在内存泄漏问题。知乎今年出现的新前端 Tairitsu(Go 后端加 TS 前端)支持从 ztncui 一键迁移,如果你打算换,顺手把安全配置也一起查一遍,正好是时机。

另一个是许可证。ZeroTier 1.16 更改了控制器部分的许可证,此许可证不符合自由软件要求。知乎这对个人使用没有影响,但意味着以后"控制器和管理前端分开装"的镜像会越来越多,老教程里的部署命令别照抄,先看版本号。

10 分钟自查清单

在你搭好的那台服务器上,按顺序过一遍:

  1. 看对外监听了什么:`ss -tunlp` 或 `netstat -tunlp`,重点看每个端口的绑定地址是不是 0.0.0.0。

  2. 云安全组/防火墙里,确认没有把 9993/TCP 放给公网,只留 9993/UDP 和你实际用的数据端口。

  3. Web 面板换强密码,能限制来源 IP 就限制,或者改成只走 ZeroTier 内网访问。

  4. 检查 docker-compose 里有没有 `network: host`,只映射需要的端口。

  5. 看一眼 `/var/lib/zerotier-one/authtoken.secret` 的权限,建议 600。

  6. 服务器 SSH 改成只允许密钥登录,关掉密码登录。

  7. 打开 Central(或你的控制器面板),把成员列表翻一遍,最近在线时间和物理 IP 这两列重点看,不认识的设备直接取消授权。

  8. 确认网络是 Private(私有)模式:如果设为 Public,任何人都能加入你的网络,极其危险。知乎

  9. 回想一下 planet 文件都发给了谁,发给不再联系的人的,考虑重新生成一份。

ZeroTier 自建教程都停在“ping 通了”:这 4 个公网口子最容易忘关,附 10 分钟自查清单

查完之后,两条路

如果自查结果不太妙,你又懒得加固,也没关系,自建本来就是图省心。两条路:

一是继续用 ZeroTier 官方服务:接受中继在境外、免费版有设备数上限,速度问题单独靠 moon 优化,至少不用背一台公网服务器的安全责任。

二是换少自管的方案:比如 EasyTier 的公共节点,完全免费,没有组网设备的数量限制,社区教程里普遍认为它的双通道打洞对国内网络环境更友好。知乎社区已经把两家方案的差别整理成了对比表,做决定前可以看一眼。

ZeroTier 自建教程都停在“ping 通了”:这 4 个公网口子最容易忘关,附 10 分钟自查清单

但如果你就是需要自建,比如要玩依赖二层广播联机的老游戏,或者想要对网络的完全掌控,那就把上面这份清单存好,用之前查一遍。自建的乐趣是"我的网络我做主",前提是你真的管住了自己的门。

内容由AI生成
0
扫一下,分享更方便,购买更轻松
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

最新文章 热门文章