了解协调的内容
控制平面管理节点注册并分发网络信息。数据流量可能根据连接情况使用直接对等连接或中继。运行协调器并不意味着每个数据包都经过它。
让注册成为有意的选择
保护管理 API,并使用短期或适当限定范围的注册方法。移除丢失或已退役的设备。能够加入网格并不意味着可以访问所有服务。
检查 ACL 与路由
在用户和节点之间应用最小权限规则。通告的子网路由和出口节点会扩大可访问网络,需要明确批准。像测试允许的流量一样仔细测试被拒绝的流量。
妥善保管恢复材料
按照受支持版本的流程备份配置、状态和密钥。保留一种在网格故障时管理 VPS 的方式。在更改控制平面之前验证客户端兼容性和升级说明。
注册、路由和策略是独立的检查
Headscale 协调兼容的 Tailscale 客户端;直接连接和 DERP 中继路径具有不同的网络行为。子网路由器通告一个范围,控制服务器批准它,客户端必须接受该路由。在路由节点上启用转发并保持通告范围狭窄。已批准的路由仍需要访问策略,限制谁可以使用哪个目标和端口。
- 检查控制服务器的路由列表
- 从允许的设备进行测试
- 从应被拒绝的设备重复相同测试
headscale nodes list-routes官方文档:Headscale 路由
不要将唯一的恢复路径放在网格内
保留第二种访问服务器控制台的方式,或一条严格受限的管理员路径。测试协调器、中继或客户端不可用时会发生什么。根据已安装版本保留控制平面状态和密钥。私有网格可以简化访问,但它不应成为阻碍自身修复的未记录依赖。
修复控制平面身份和恢复路径
选择一个稳定的 HTTPS 名称、一个受支持的 Headscale 版本以及兼容的 Tailscale 客户端。阅读该确切版本随附的配置示例;从不同版本复制的配置可能无法通过验证,或会静默地描述不同的策略。持久化控制平面数据库和所需的密钥。将管理用 API 保持私有,并保留一个独立的控制台或受限的 SSH 路由,这样即使网格丢失,其协调器也不会无法修复。
- 使用对公共控制平面名称有效的证书。
- 保持注册密钥短时效并限定适当范围。
- 将中继设计和 DNS 命名空间视为明确的选择。
官方文档:Headscale 容器部署
在宣传网络之前先注册一台设备
按照上游说明启动服务器,并通过文档记录的注册方法注册一个测试用户/设备。确认设备到达预期的控制 URL 并以预期身份出现。在添加出口节点或子网路由前,检查客户端状态并测试一个私有服务。在直连路径不可用时,DERP 路径可保持连接;这并不表示协调器正在转发每个数据包。
- 从可以安全移除的设备和服务开始。
- 检查对等流量是直连还是中继。
- 根据所选部署保护中继和控制端点。
官方文档:Headscale 部署参考
独立审批路由和授权
对于子网访问,在路由节点上启用转发,通告一个狭窄范围,在控制服务器上批准它,并确保目标客户端接受它。避免重叠网络导致返回路由不明确。已批准的路由不是访问策略:定义谁可以连接到哪个目标和端口,包括访客设备。在扩展网格之前,测试一个允许的连接和一个完全相同的被拒绝连接。
# Run on the control server; syntax follows the installed release:
headscale nodes list-routes
# Client-side inspection:
tailscale status官方文档:Headscale 子网与出口路由
在更改策略前先找出故障层
如果注册失败,请检查 DNS、HTTPS 和服务器 URL。如果设备加入但子网不可达,请检查通告、批准、客户端路由接受、转发和返回路径。如果只有一个服务失败,请检查其绑定地址、主机防火墙和网格策略。保留一致的数据库/配置备份,并在更改唯一控制平面之前,使用一次性客户端测试版本升级。