SSD Nodes Learn 🎉 VPS $5.50/月起
指南 Matt Connor作者: Matt Connor · 更新于 2026-08-21

Tailscale安全吗?理解其信任模型与风险

Tailscale 不持有加密流量的私钥,协调服务器无法读取数据包;但遭入侵的控制平面或被盗身份账号,可能注册恶意设备并改变访问权限。

Tailscale 安全吗?简短回答

Tailscale 安全吗?对于大多数人最担心的问题,答案是肯定的:运行 tailnet 的协调服务器不会持有用于加密流量的私钥,因此无法读取设备之间发送的内容。Tailscale 的安全页面明确说明:“私钥永远不会离开设备。所有流量始终经过端到端加密。”但更有用的问题是另一件事。即使协调服务器遭到入侵,或被法律命令强制控制,也不需要读取您的数据包。它会决定设备信任哪些公钥,因此可能注册一个您从未批准的设备。

这就是一句话概括的信任模型:加密保护数据,控制平面决定成员资格。以下每个部分都会说明您必须信任的一方、该方实际能够执行的操作,以及限制其权限的控制措施。如果您还不熟悉该产品,请先阅读Tailscale 是什么以及其网状网络如何工作

控制平面与数据平面彼此分离

Tailscale 是基于 WireGuard 构建的网状 VPN(虚拟专用网络),使用的协议与您手动配置 自托管 WireGuard VPS 时相同。每台设备都会在本地生成自己的 WireGuard 密钥对。Tailscale 的工作原理文章将协调服务器称为“用于存放公钥的共享投递箱”,并指出“私钥永远不会离开其节点”。

数据平面是设备之间传输的加密流量。只要网络条件允许,流量就会直接在设备之间传输。控制平面负责其他所有事项:哪些设备属于 tailnet、哪个公钥对应哪台设备、访问策略、DNS 设置以及中继列表。Tailscale 以托管服务的形式运行控制平面。数据平面则运行在您自己的设备上。

明确区分这两者后,这里的每个安全问题都可以得到解释。加密是数据平面的属性。成员资格由控制平面决定。无论加密强度多高,都无法说明哪些设备有权成为对等节点。

遭入侵的协调服务器能做什么?

它无法解密您的流量。 执行加密的密钥在您的设备上生成,从未上传,因此不存在可被窃取或泄露、进而打开隧道的密钥。这同样适用于中继流量,后文会进一步说明。

它可以注册节点。 Tailscale 宣布 tailnet lock 时,公司用自己的话描述了这一风险:恶意服务器可以“利用秘密添加的节点向现有节点发送或接收流量”;此时,“即使流量已加密也无关紧要,因为对端本身可能是恶意的”。您的设备之所以信任某个对端,是因为控制平面告知它,该密钥属于 tailnet。

它可以更改您的设备能够访问的目标。 访问策略位于控制平面中,并分发到各个节点。Tailscale 的 tailnet lock 白皮书指出,tailnet lock“无法阻止遭入侵的控制平面破坏网络中的连接,例如不分发新节点密钥,或分发一条拒绝所有节点访问的访问控制策略”。

无论如何,它都能看到连接元数据。 Tailscale 的网络流日志会记录每次机器到机器连接的建立和关闭事件。文档说明,这些日志“严格不包含任何客户端操作或网络流量内容的信息”。因此,控制平面可以知道您的哪些设备彼此通信,以及通信时间。它不知道通信内容。

列表中只有一项与加密有关。其他各项涉及成员身份和策略内容。因此,您应重点关注控制节点注册的控制措施。

身份提供商是 tailnet 的信任根

Tailscale 不维护自己的密码数据库。其文档明确说明,Tailscale 不存在密码,登录由身份提供商(IdP)负责:Apple、Google、GitHub、Microsoft、Okta、OneLogin 或自定义的 OpenID Connect 提供商。

请将这段内容视为安全声明,因为它确实是。任何能够登录您的 Google 或 Microsoft 帐户的人,都能登录您的 tailnet。您的多因素身份验证(MFA)取决于 IdP 强制执行的策略。您的离职账号处理取决于人员离开组织时 IdP 执行的操作。被钓鱼窃取的 IdP 帐户就等同于一个 tailnet 帐户,攻击者无需攻击 WireGuard,只需添加设备,即可继承策略授予该用户的所有权限。

被窃取的身份帐户与 tailnet 内可用的设备之间有两项控制措施:设备审批和密钥过期。Tailnet lock 是第三项控制措施,其目标是控制平面,而不是帐户。

设备审批:未经人工确认,任何设备都无法加入

Tailscale 文档将设备审批描述为一项功能:允许 Tailscale 网络管理员在新设备加入 Tailscale 网络前进行审核和批准。Owner、Admin 或 IT admin 均可执行批准操作。新设备会在 Machines 页面显示“Needs approval”标记,直到有人处理。

启用此功能后,被盗账号的风险表现会改变。攻击者登录后,设备会完成注册,但随后会等待,无法访问任何资源。此时,管理控制台中的标记会提示有一台你不认识的机器正在请求加入网络。自动化流程仍可正常运行,因为生成 auth key 时可以将其标记为预批准,也可以通过 API 批准设备。

Auth key 是另一种进入网络的方式,因此应将其视为凭据。Tailscale 文档明确警告了高风险类型:“请非常谨慎地使用可重复使用的密钥!如果此类密钥被盗,可能造成严重风险。最好将其保存在专门设计的密钥保管库产品中。”截至 August 2026,文档规定的密钥有效期范围为 1 到 90 天;未指定有效期时,默认使用最长的 90 天。优先使用一次性密钥;对于经常加入和离开网络的机器,将密钥标记为 ephemeral;任何可重复使用的密钥都应 使用 Ansible Vault 加密,或存放在 secrets manager 中,而不是写入 shell 脚本。

密钥过期:限制其他错误影响范围的计时器

节点密钥会过期。这会将被盗或遗忘设备带来的风险限制为临时问题。Tailscale 文档说明:“默认情况下,新域设置的过期时间为 180 天”,并且“如果未重新进行身份验证,密钥就会过期,与该端点之间的连接将停止工作”。您可以手动重新验证设备:

tailscale up --force-reauth

文档警告,这项操作“可能会中断 tailnet 连接,因此如果没有其他登录方式,不应通过 SSH 或 RDP 远程执行”。执行前应保持控制台访问处于打开状态,或确保可以通过另一条路径访问计算机,因为该操作将中断您当前使用的网络连接。

服务器通常需要特殊处理。必须每 180 天重新进行身份验证的计算机,可能会在凌晨 3 点、无人值守时从 tailnet 断开,因此管理员会为其禁用密钥过期。这样就移除了最终切断被盗密钥的计时器。对于服务器,使用带标签的设备是更好的方案,因为标签归属于计算机而不是个人。这样,即使该人员离开公司,计算机仍可继续使用。无论采用哪种方案,都应记录哪些计算机禁用了密钥过期:删除设备前,这些密钥会一直有效。

Tailnet lock:将协调服务器移出信任链

Tailnet lock 直接解决节点加入问题。Tailscale 的 Tailnet lock 文档 说明了其机制:“新节点加入 tailnet 时,其公钥必须经过 Tailnet Lock 密钥签名。协调服务器将签名后的节点公钥分发给对等节点。”现有设备会在接受对等节点前验证该签名,因此会拒绝由控制平面自行生成的节点密钥。

tailscale lock status
tailscale lock sign nodekey:1abddef1 tlpub:abcdef12

tailscale lock init启用此功能,并在初始化时指定签名节点。Tailscale 要求初始化时至少有 2 个签名节点,一个 tailnet 最多允许 20 个签名节点。之后,每台新设备都需要其中一个签名节点提供签名。这会增加实际运维成本:添加一部手机意味着要在笔记本电脑上运行命令。

文档明确说明了这些限制,而这些限制比功能描述更重要:

  • 丢失禁用密钥后无法恢复。文档指出:“如果您丢失了禁用密钥,且没有向 Tailscale 支持团队提供其中一个密钥,则无法恢复该 tailnet。”
  • 签名密钥存储在您拥有的设备上,因此会继承该设备的安全风险。文档明确说明:“如果设备遭到入侵,密钥可能被获取。”
  • 不能同时使用两种控制机制。Tailscale 说明 tailnet lock 与设备审批互斥,因此启用其中一个就必须放弃另一个。
  • 这是首次使用时信任(TOFU)机制。初始设置仍会经过控制平面,只有完成第一步后,信任锚才会转移到您自己的网络中。

Tailnet lock 保护成员关系,但不保护可用性。白皮书也明确说明了这一点。

中继连接会暴露我的流量吗?

不会。当两台设备无法直接互相访问时,流量会回退到 DERP 服务器(Designated Encrypted Relay for Packets)。Tailscale 文档明确说明了这一点:“由于 Tailscale 私钥不会离开生成它的本地设备,因此 DERP 服务器不可能解密您的流量。DERP 服务器只会将已加密的流量从一台设备盲目转发到另一台设备。”

中继仍会降低传输速度,并且会观察元数据:两个已加密的端点,以及两者之间传输内容的时间和数据量。请查看您实际使用的连接类型:

tailscale status
tailscale netcheck

tailscale status会将每个对等端标记为直接连接(显示为 direct 203.0.113.10:41641)或中继连接(显示为 relay,后面跟中继名称和字节计数器)。如果某个对等端始终使用中继,说明两端无法建立直接路径,通常是因为某处阻止了 UDP,或者两端都位于严格 NAT(网络地址转换)之后。tailscale netcheck会报告该计算机是否能够使用 UDP、NAT 如何映射端口,以及到最近中继的延迟。这些信息可以帮助您判断具体是上述哪种原因。

出口节点会改变出站位置,但不会消除出站流量

出口节点会使用默认路由 0.0.0.0/0::/0,将设备的所有公网 Internet 流量通过 tailnet 上的另一台设备转发。在 Linux 上,提供该服务的计算机会发布出口节点;每个客户端都必须主动选择使用它:

sudo tailscale set --advertise-exit-node
sudo tailscale set --exit-node=100.101.102.103
sudo tailscale set --exit-node=100.101.102.103 --exit-node-allow-lan-access=true
sudo tailscale set --exit-node=

出口节点必须由管理控制台中的 Owner、Admin 或 Network admin 批准,并且您的策略必须授予 autogroup:internet,客户端才能使用它。这两个步骤都是有意设置的:未经批准的计算机无法悄悄成为整个 tailnet 的出口。

接下来是信任问题。从您的笔记本电脑到出口节点的流量经过加密。流量随后会以普通 Internet 流量的形式离开该计算机,并携带该计算机的 IP 地址。因此,出口节点的运营者可以看到您的目标地址,该计算机的托管服务商及其上游网络也可以看到。您只是移动了观测点,并没有消除观测点。当您控制远端时,这是合理的取舍,这也是在 VPS 上运行自己的出口节点的理由;当您不控制远端时,这种取舍通常并不理想。

默认策略是扁平网络

新 tailnet 默认采用宽松策略。Tailscale 的访问控制文档指出,默认策略文件“允许 tailnet 中的所有设备相互通信”。每台设备都可以通过任意端口访问其他设备。这就是扁平网络。将网络放入隧道可以防御外部访问,但无法防御已感染的笔记本电脑。

在 tailnet 策略文件中收紧策略。该文件支持访问控制列表(ACL)或较新的 grants,二者都使用允许注释的 JSON 方言编写:

{
  "acls": [
    {"action": "accept", "src": ["group:eng"], "dst": ["tag:prod:22"]},
    {"action": "accept", "src": ["autogroup:member"], "dst": ["autogroup:internet:*"]}
  ]
}

该策略允许一个组访问生产服务器上的 SSH,允许成员使用出口节点,并通过省略其他规则来拒绝所有其他访问。Tailscale 列出了各个计划支持的规则目标,因此在围绕 tags 或 autogroups 设计策略前,请先确认计划限制,并参阅免费计划实际包含的功能。对于完全不应接受传入连接的设备(例如个人手机),tailscale set --shields-up可在客户端阻止这些连接。

使用 Headscale 自托管控制平面后有哪些变化

Headscale 是“一个开源、自托管的 Tailscale 控制服务器实现”。其 README 明确说明了适用范围:“它只实现了有限功能,面向单个 Tailscale 网络(tailnet),适合个人使用或小型开源组织。”其功能列表包括 ACL 和 grants、子网路由器、出口节点、内置 DERP 服务器、Tailscale SSH 以及 Taildrop。如果这一有限范围无法满足需求,NetBird 是另一个提供可自托管控制平面的网络方案;在自己的 VPS 上运行 NetBird 服务器,可以将相同的注册决策转移到您拥有的硬件上。

变化在于,谁可能注册恶意节点。使用 Headscale 时,密钥目录和策略都存储在您的服务器上。任何第三方都不会持有您所有设备公钥的列表,也无法被强迫交出某个公钥或为其签名。

数据平面不会变化。它仍使用相同的 WireGuard 和端到端加密;无法建立直连时,也仍使用相同的中继回退机制。您还需要自行承担 Tailscale 原本负责的工作:保持服务在线、安装补丁、执行备份,以及确保服务器的物理安全。如果 Headscale 主机遭到入侵,攻击者获得的权限与入侵协调服务器时相同,即注册节点和分发策略的权限。Headscale 的功能列表中不包含 Tailnet lock,因此无法使用该功能来降低这一特定风险。如果设备和密钥的所有权问题决定了您的选择,使用 Headscale 自托管控制平面将介绍具体配置过程。

Tailscale 可防护的风险

  • 公网监听端口。 绑定到 tailnet 地址的服务无法从互联网访问,因此针对每台 VPS 的 22 端口进行扫描的工具不会发现它。例外情况需要由您主动启用,因为 Funnel 会有意将 tailnet 服务发布到开放互联网。因此,在运行任一命令前,建议先了解serve 和 funnel 的边界。仍应保留主机防火墙,因为已发布的 Docker 端口会写入自己的规则,并在公网接口上绕过 ufw
  • 针对暴露登录入口的密码猜测。 如果端口只在隧道内响应,攻击者就没有可用于批量尝试的入口。这比对开放端口实施速率限制更安全。不过,对于必须保持公网可访问的服务,仍建议在 Ubuntu 24.04 上运行fail2ban
  • 传输路径上的不可信网络。 您的机器之间的流量会通过咖啡馆网络或共享的服务商局域网进行端到端加密;即使通过中继转发,流量仍保持加密状态。
  • 手动管理密钥分发。 手动将每个对等节点添加到 WireGuard 配置时,可能重复使用地址或粘贴错误的密钥。该网状网络会为您管理这些信息,这正是WireGuard 与 Tailscale 的主要实际差异

Tailscale 无法防护的情况

  • 已被入侵的终端。 tailnet 信任设备。已获批准的笔记本电脑上如果存在恶意软件,该软件就能获得隧道、tailnet 地址以及策略授予该用户的所有权限。这是最大的安全缺口,任何 VPN 都无法消除。
  • 恶意或疏忽的管理员。 任何可以编辑策略文件的人,都可以授予自己对任意资源的访问权限;任何能够接管 Owner 身份账户的人也可以这样做。应像审查代码一样审查策略变更。
  • 流量分析。 您的 ISP(互联网服务提供商)可以看到发往某个端点的加密 UDP 流量,以及通信的时间和流量量。Tailscale 的流日志可以显示哪些对等节点在何时通信。两者都看不到内容,但连接这一事实并未隐藏。因此,在为此选择工具前,请阅读 Tor 与 VPN 的区别
  • 已经丢失的设备。 密钥过期只是缓慢生效的后备措施,默认期限为 180 天。在管理控制台中移除设备才是快速措施,因此应在需要前先确认该按钮的位置。

检查您自己的 tailnet

  1. 在设备上运行 tailscale status 并读取对等节点列表。无法确认名称的机器,正是设备审批机制要防止的情况。
  2. 运行 tailscale lock status,确认是否已启用 tailnet lock,然后判断为 tailnet 中每台新设备签名是否值得付出相应成本。
  3. 打开管理控制台,记录所有已禁用密钥过期的机器,以及所有仍然存在的可重复使用身份验证密钥。这两者都是没有计时限制的凭据。
  4. 阅读策略文件。如果仍使用默认策略,每台设备都可以通过所有端口访问其他所有设备;一台受感染的笔记本电脑就能访问全部设备。

Tailscale 的声誉主要来自数据平面,因为其设计使运维人员无法读取您的流量。请按厂商文档所述理解这一点,然后审计由您负责的部分:身份账户、审批设置、过期列表和策略文件。Tailscale 的安全页面报告其已获得 SOC 2 Type II 认证,并持续与 Latacora 开展安全工作;这些信息说明的是其流程,而不是您的配置。

FAQ

Tailscale 能读取我的网络流量吗?

不能。流量使用在您的设备上生成的 WireGuard 密钥加密。Tailscale 的安全页面说明:“私钥不会离开设备。所有流量始终进行端到端加密。”这同样适用于回退到 DERP 中继的连接,因为中继“只是盲目转发设备之间已经加密的流量”,并且不持有任何可用于解密的密钥。Tailscale 基础设施能够看到的是元数据:有哪些设备,以及哪些设备在何时相互建立了连接。

如果 Tailscale 协调服务器遭到入侵,攻击者实际能做什么?

攻击者可以注册一个节点。Tailscale 关于 tailnet lock 的公告说明了秘密添加节点的风险:该节点可以“向您现有的节点发送或接收流量”,而加密对此无能为力,“因为对端本身可能是恶意的”。遭入侵的控制平面还可以下发策略,改变您的设备能够访问的对象。tailnet lock 白皮书还指出,如果控制平面不分发新节点密钥,就可能破坏连接。但攻击者无法解密现有设备之间的流量,因为 Tailscale 从未持有这些设备的私钥。

出口节点能隐藏我的浏览活动,使 ISP 无法查看吗?

它可以对您所在网络中的其他方隐藏访问目标,包括家庭或咖啡馆的 ISP。原因是所有流量都会以加密形式从您的设备发送到出口节点。但它不会让您匿名。出口节点可以看到这些访问目标,其托管服务商和上游网络也可以看到;您访问的网站则会看到出口节点的 IP 地址。您只是更换了观察者,因此应选择您确实信任的观察者。

Headscale 比 Tailscale 的协调服务器更安全吗?

这不是绝对更安全,而是不同的信任选择。使用 Headscale 时,您掌管密钥目录和策略,因此外部实体无法强制在您的 tailnet 中注册设备。与此同时,您需要负责运行该服务器,包括修补程序、可用性、备份以及主机自身的安全性。遭入侵的 Headscale 主机可以为攻击者提供与遭入侵的协调服务器相同的设备注册权限,而且 Headscale 的功能列表中没有 tailnet lock,因此应按相应要求保护该主机。

已加入 tailnet 的 VPS 仍需要防火墙吗?

需要。公网网络接口仍然存在。绑定到 0.0.0.0 的任何服务,无论 Tailscale 是否运行,仍可从互联网访问。将服务绑定到 tailnet 地址,在公网接口上保留默认拒绝策略,并检查已发布的容器端口,因为 Docker 会插入自己的规则,可能暴露您以为已关闭的端口。