Tailscale DERP(Distributed, Encrypted, and Resilient Packet Relay)服务器是 Tailscale 网络中用于中继流量的组件,尤其适用于网络环境复杂或直连困难的场景,但是国内网络连接官方提供的 derp 服务器时普遍存在延迟高,速度慢,甚至几乎无法使用的情况。所以产生了自建私有 derp 流量中转服务器的需求,以便在 p2p 无法直连打洞成功的场景下能够实现和使用低延迟,高速度的 tailscale 流量中继服务。以下是使用 Docker 搭建 Tailscale DERP 服务器的详细步骤:

环境准备

  • 操作系统:推荐使用 Linux 系统,如 Ubuntu、Debian 等,因为 Docker 在 Linux 上的性能和兼容性更佳。
  • Docker 环境:确保已安装 Docker。可以通过运行 docker --version 命令来检查 Docker 是否已安装。
  • Tailscale 客户端:在宿主机上安装并启动 Tailscale 客户端,以便 DERP 服务器能够与 Tailscale 网络通信。
  • 网络配置:确保服务器的网络配置正确,能够正常访问外网,且对应的端口没有被防火墙阻止。

搭建步骤

1. 安装并启动 Tailscale 客户端

在宿主机上安装 Tailscale 客户端,并启动它。安装方法因操作系统而异,具体可以参考 Tailscale 官方文档。

启动 Tailscale 客户端后,它会在 /var/run/tailscale 目录下创建一个名为 tailscaled.sock 的套接字文件。

2. 拉取 Docker 镜像

从 Docker Hub 拉取 deepfal/tailscale-derp 镜像。该镜像已经包含了搭建 DERP 服务器所需的全部依赖和配置。

 docker pull deepfal/tailscale-derp:latest

3. 运行 DERP 服务器容器

使用以下命令启动 DERP 服务器容器。该命令会将 DERP 服务器映射到宿主机的指定端口,并挂载必要的文件和目录。

 docker run -d \
     --name tailscale-derp \
     --restart unless-stopped \
     -p 0.0.0.0:59443:36666 \
     -p 0.0.0.0:3478:3478/udp \
     -v /run/tailscale:/var/run/tailscale:ro \
     deepfal/tailscale-derp:latest \
     ./derper \
     -hostname derp.deepfal.cn \
     -a :36666 \
     -certmode manual \
     -certdir /ssl \
     --verify-clients

参数解释

  • -d:后台运行容器。
  • --name tailscale-derp:指定容器名称为 tailscale-derp
  • -p 0.0.0.0:59443:36666:将容器的 36666 端口映射到宿主机的 59443 端口,允许外部访问。
  • -p 0.0.0.0:3478:3478/udp:将容器的 3478 端口映射到宿主机的 3478 端口,用于 UDP 通信。
  • -v /run/tailscale:/var/run/tailscale:ro:将宿主机的 Tailscale 套接字文件挂载到容器中,以便 DERP 服务器与 Tailscale 守护进程通信,挂载目录是为了防止客户端重启导致 socks 突然获取不到了导致 derp 工作异常,挂目录比较稳。
  • deepfal/tailscale-derp:latest:指定使用的 Docker 镜像。
  • ./derper:指定容器启动时运行的命令。
  • -hostname "derp.deepfal.cn":设置 DERP 服务器的主机名。
  • -a ":36666":指定 DERP 服务器监听的端口。
  • -certmode "manual":指定证书模式为手动。
  • -certdir "/ssl":指定证书目录。
  • --verify-clients:启用客户端验证。

4. 验证 DERP 服务器状态

启动容器后,可以通过以下命令查看 DERP 服务器的运行状态:

 docker logs tailscale-derp

如果看到类似 DERP server started 的日志信息,表示 DERP 服务器已成功启动。

5. 配置 Tailscale 客户端

在 Tailscale 后台配置中,添加自建 DERP 服务器的信息。具体配置方法如下:

 {
   "derpMap": {
     "OmitDefaultRegions": false,
     "Regions": {
       "910": {
         "RegionID": 910,
         "RegionCode": "自建节点(名称)",
         "Nodes": [
           {
             "Name": "910",
             "RegionID": 910,
             "HostName": "宿主机IP",
             "InsecureForTests": true,
             "DERPPort": 59443
           }
         ],
         "RegionName": "自建节点(名称)"
       }
     }
   }
 }

宿主机IP 替换为 DERP 服务器的实际 IP 地址。

添加 derp 节点之后就可以立即使用 tailscale netcheck 检查 derp 服务器是否在线了

注意事项

  • 端口映射:确保宿主机的 59443 (tcp) 和 3478 (udp) 端口没有被其他服务占用,并且防火墙允许外部访问这些端口。
最后修改:2026 年 02 月 26 日
如果觉得我的文章对你有用,请随意赞赏~