DERP 架构与机制
DERP(Designated Encrypted Relay for Packets,指定加密数据包中继)是 Tailscale 的核心中继基础设施,用于处理 tailnet(Tailscale 网络)内设备间的连接协商与加密数据转发。DERP 服务器主要承担两类职责:
- 连接协商与 NAT 穿越辅助:通过 DISCO(Discovery)协议转发低带宽的发现消息,帮助设备交换直接连接细节。设备首先会连接到其“Home DERP”(基于延迟测算选定的最近服务器),随后尝试基于 UDP 的直接点对点(P2P)连接。在此过程中的 DISCO 数据包被用于 NAT 打洞(包含 STUN 探测)。
- 数据中继回退(Fallback):当端到端直连失败(如遇到硬 NAT、对称 NAT、或防火墙严格阻挡 UDP 流量)时,DERP 将作为回退路径,负责转发已加密的 WireGuard 数据包。所有的流量路径为:源设备 → DERP → 目标设备。数据保持端到端的 WireGuard 加密,DERP 节点本身无任何解密能力,仅执行盲转(Blind Forwarding)。
架构上,DERP 支持 IPv4/IPv6 双栈,并通过协调服务器(Control Plane)向客户端分发 DERP 地图(包含 RegionID、节点 IP/主机名、端口等信息的 JSON)。客户端在本地缓存该地图,即使协调服务器短暂宕机,也支持本地回退选路。
部署自定义 DERP 的原因与时机
Tailscale 全球部署的公共 DERP 节点已覆盖 28 个以上的区域,多数场景下无需自建。部署自定义 DERP(运行 二进制文件)通常是应对极端场景的最后手段,优先建议优化本地网络配置或使用内网的 Peer Relay(子网中继)。其典型适用时机包括:
- 极端的 NAT 穿越失败:遭遇 Endpoint-Dependent Mapping(对称 NAT)、CGNAT(运营商级 NAT)多层嵌套、或 UDP 协议被完全阻挡。虽然公共 DERP 依然可用,但会受到共享带宽的 QoS 限速影响。
- 特定链路的延迟优化:当跨大洲或跨区域流量被迫绕行远程公共 DERP 导致过高延迟时,在用户级专线或低延迟 IDC 内部署自定义 DERP 可以改善体验。
- 绕过限制性防火墙:部分企业或云网络默认丢弃未知 UDP 流量,但普遍放行 TCP 443(HTTPS)。自定义 DERP 可提供基于 TCP 443 端口的 TLS 隧道以及 UDP 3478 的 STUN 服务作为稳定入口。
- 合规与隔离需求:因合规政策明确禁止流量流经任何公共中继节点(即便流量已端到端加密),企业必须实现全链路的私有化路由控制。
部署前提与架构
前提条件说明:
- 需使用最新版 Go 环境编译:。
- 需具备静态公网 IPv4/IPv6 地址(避免因 DNS 解析波动导致隧道中断)。
- 需具备有效域名以支撑 TLS SNI,建议配合 Let’s Encrypt 自动轮换证书;若使用自定义证书则更新时需重启 进程。
- 节点需直接接入互联网,前端不能有 NAT 或应用层负载均衡设备(会破坏源 IP 地址检查以及 HTTP/2 协议的升级协商)。
- 为了保证 等安全特性生效,运行的 需与当前网络内的 版本修订保持对齐。
端口要求矩阵:
| 服务 | 协议与端口 | 核心用途 |
|---|---|---|
| HTTP | TCP 80 | 提供初始连接、Let’s Encrypt 验证以及备用重定向 |
| HTTPS | TCP 443 | 提供 TLS 隧道,承载 DERP 协议(将 HTTP 请求升级至双向二进制加密流) |
| STUN | UDP 3478 | 用于 NAT 映射状态探测与打洞辅助 |
注意:防火墙可对入站流量进行速率限制,但切勿限制核心的 UDP STUN 探测与出站的 TCP 流量。
配置注入与启动:
- 服务端启动命令示例:。
- 客户端在 Tailnet 的 ACL JSON 策略文件中注入 设置,例如自定义 RegionID 规范分配为 及以上:
安全与访问控制
由于公开的 TCP 443 端口容易沦为全网任意 Tailscale 用户的免费中继节点(“蹭网”),因此必须配置访问控制:
- 基于 Tailscaled 的本地验证 ():通过在 DERP 服务器本地运行 并加入企业的 Tailnet,开启此参数后,DERP 仅允许属于同一 Tailnet 的节点建立中继连接,强制拒绝外部陌生节点的请求。
- 自定义授权检查 ():支持配置一个 Admission Controller HTTP 端点(如内网的 OIDC 验证接口)。当设备尝试连接时,验证 URL 会收到包含客户端身份的请求 ,实现更细粒度的设备准入。
- 强制 TLS 与 SNI:禁止使用纯 IP 连接,强制客户端验证域名的 TLS 证书合法性,防止中间人拦截或伪造节点。
官方限制与实施注意事项
- 功能差异:自定义 DERP 不支持跨 Tailnet 的设备共享功能;缺少官方公共控制平面的高级优化能力(例如基于全球 IP 库的精准 Geo-steering)。
- 维护成本:目前自定义 DERP 被官方标记为 Alpha 状态,不提供包管理器格式(APT/YUM),需管理员手动编译和同步更新跟进上游特性。
- 协议兼容性:DERP 依赖将 HTTPS 请求升级为二进制流,不能部署在任何不支持协议升级的 7 层反向代理或 WAF 后方。
- 性能预期:内网环境中的 Peer Relay(节点复用)往往比外部自定义 DERP 具备更低延迟和更优性能,且无需承担云服务商的出站流量开销。
- 排错建议:可使用 、 和 检查链路是否成功实现 Direct 直连,还是发生了 Relay 降级。
结论:始终应优先解决网络层的防火墙配置(如开启 UPnP/NAT-PMP、放行 UDP 41641 端口)以实现直连;部署自定义 DERP 应当且仅应当作为复杂企业网络限制下的兜底方案。