DERP是一个中继系统,用于在无法建立直连的情况下中继流量。

Headscale内置DERP

Headscale部署参考:Tailscale开源控制器部署

如果使用Headscale替代Tailscale官方的控制器,可以在Headscale中开启内置的DERP。
Headscale需要一个DERP服务器列表提供给客户端,如果开启了内置的DERP服务,Headscale会将内置DERP节点合并到DERP节点列表剩余部分。

https://tailscale.com/blog/how-tailscale-works/#encrypted-tcp-relays-derp

配置文件如下,一般位于/etc/headscale/config.yaml。配置DERP需要Headscale开启TLS。

derp:
  server:
    # 如果启用,运行内置的DERP服务并合并到DERP配置的剩余部分。
    # Headscale上面的server_url必须使用https,并且配置好TLS证书。
    enabled: true

    # 内置DERP服务的区域ID
    # 如果本地的DERP区域ID和DERP配置列表中的其他区域ID冲突,则优先使用本地的。
    region_id: 999

    # 区域代码和名称显示在Tailscale UI中,用于识别DERP区域。
    region_code: "headscale"
        region_name: "Headscale Embedded DERP"

    # 配置UDP监听端口用于STUN连接,实现NAT穿透。
    # 当内置的DERP服务启用的时候,必须配置stun_listen_addr。
    #
    # 关于这如何工作的更多细节,可以查看这个文章:https://tailscale.com/blog/how-tailscale-works/
    stun_listen_addr: "0.0.0.0:3478"

  # 外部可用的DERP映射列表,JSON格式。
  urls: []
  # - https://controlplane.tailscale.com/derpmap/default

  # 本地可用的DERP映射列表,YAML格式。这个选项对于托管自己的DERP服务的人来说比较有用。
  # https://tailscale.com/kb/1118/custom-derp-servers/
  # paths:
  #   - /etc/headscale/derp-example.yaml
  paths: []

  # If enabled, a worker will be set up to periodically
  # refresh the given sources and update the derpmap
  # will be set up.
  # 如果启用,将给指定的源设置一个刷新周期并且更新DERP映射列表。
  auto_update_enabled: true

  # DERP列表的刷新周期
  update_frequency: 24h

独立DERP

https://github.com/tailscale/tailscale/tree/main/derp

最后修改:2023 年 12 月 01 日
如果觉得我的文章对你有用,请随意赞赏