Tailscale · 技术分享

DERP 与中继:从公网回退到自建

一页读懂 Tailscale 如何在打洞失败时仍能保持连通,以及如何把中继跑在你自己的基础设施上。

什么是 DERP

DERPDesignated Encrypted Relay for Packets)是 Tailscale 数据平面里的加密中继层。两台设备在多数情况下会优先尝试直连(经过协调的打洞、局域网路径等);当 UDP 直连暂时或长期不可行时,流量会透明地经 DERP 转发,而端到端仍由 WireGuard 密钥保护——中继服务器看到的是加密后的载荷,而不是你的明文业务数据。

可以把它理解成:「打洞失败时的 Plan B」,保证你在酒店 Wi‑Fi、对称 NAT、或防火墙很严的环境里,仍能连上家里的 NAS 或内网服务,只是路径可能多一跳、延迟略高。

典型工作路径

自定义 DERP(自建中继)

在合规、延迟、可用性或「流量尽量不出境」等场景下,你可能希望自己运行 DERP,让回退路径走你的机房或云主机,而不是默认的公共中继。

能做什么

实现要点(概念层)

和「自建 Headscale」的区别:Headscale 等替代的是控制平面;DERP 解决的是打洞失败时的数据中继。二者可以组合:自建协调 + 自建或混用 DERP,按你的拓扑拆分责任。

技术分享

NAT 与打洞为什么总会失败

对称 NAT、运营商级 NAT(CGNAT)、严格防火墙会让我们「看到的」公网端口对每一对远端都不一致,UDP 打洞成功率下降。此时不是协议「坏了」,而是网络路径客观上不允许直连,中继是务实的工程折中。

延迟与路径选择

Tailscale 会持续探测并优选路径;走 DERP 时多一跳通常带来额外 RTT。自建 DERP 若放在与业务端同一区域、同一运营商,往往比跨洲默认节点更稳、更省延迟。

威胁模型(简化)

中继节点若被入侵,攻击者仍难以解密 WireGuard 内层业务流量,但需意识到流量模式、时序、源目关系等侧信道层面的信息仍存在。高敏感场景应结合 ACL、出口策略与整体零信任设计。

排查思路

参考与延伸阅读