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 流量。

配置注入与启动

  1. 服务端启动命令示例:。
  2. 客户端在 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 应当且仅应当作为复杂企业网络限制下的兜底方案。