什么是 DERP?
DERP 是 Tailscale 的专用服务,它主要用来给 tailscale 客户端提供流量中继以及 P2P 打洞。在中继这一点上,与 FRP 几乎一样(虽然我从未使用 FRP 成功实现过 P2P 互联)。
它先进的地方是?
为了打洞,目前的常规做法是通过 STUN 服务器去做试探,尝试利用防火墙的 NAT 规则建立链接。但是总是会有意外发生,如果两端的任意一台设备无法通过打洞成功,那么 STUN 服务器也无能为力,它只能起到一个初期的辅助的作用。
为了解决这一问题,tailscale 设计了 DERP 服务(代码是开源的,可以在这里查看),tailscale 的客户端在连接到另外一台客户端时,总是会先通过 DERP 服务去连接对方,由于 DERP 服务具备公网 IP,因此连接总是能成功。然后,在成功将双方联系起来后,客户端会尝试通过 DERP 服务来完成 NAT 打洞,建立直接的 P2P 连接。如果双方网络有任何一方无法完成打洞,那么则继续维持通过 DERP 中继流量以保持网络互通。
这样, tailscale 建立的网络,可用性非常不错。
既然如此,为什么需要额外的 DERP 服务?
是的没错, tailscale 官方提供了一组遍布世界各地的 DERP 服务器用来提供最基本的支持。但是因为这是所有用户共享的服务器,因此无论是带宽还是稳定性方面,都会有一些问题。特别是在无法完成 NAT 网络打洞时,必须通过 DERP 服务器中继流量,这种情况体验就会很差了。
tailscale 官方也很清楚他们无法服务于所有有特定需求的用户,因此提供了开源的 DERP 服务器搭建的指南,允许用户搭建自己的 DERP 服务器来解决特定的网络问题。
关于超导中枢的 DERP 服务
由于近期有企业向我们委托了相关的业务,在进行了短暂的需求调研后,我们发现这个需求并不仅限于企业,个人用户也同样存在这样的需求,因此我们开始着手通过工业化方案解决该需求。
首先,我们已经在超导中枢中实现了 DERP 服务。
在超导中枢中,您只需要为 DERP 服务分配端口号,服务就会自动启动,并生成配置代码以供使用。
在未来,我们将会单独针对这项服务进行开发,实现个人版的 DERP 服务,您可以在这个未来的版本中一键组建自己的 DERP 网络(包括利用自己的服务器资源去实现)。