平时用tailscale 远程连接存在偶尔打洞失败情况,由于 tailscale 在中国没有服务节点,打洞失败时会用海外中继,导致延迟很高,体验较差。可以自建 DERP 节点解决延迟问题,直接国内的服务器上 docker 部署 DERP 节点

docker-compose配置文件

version: '3.8'  

services:
  derper:
    container_name: derper  # 指定容器名称
    image: fredliang/derper  
    restart: always  # 容器意外退出时自动重启
    ports:
      - 13478:13478/udp  # STUN/UDP 端口映射,用于 NAT 穿透辅助
      - 13477:13477  # DERP 主服务端口映射 (TCP)
    environment:
      
      - DERP_DOMAIN=derp.test.com  # 替换为你的域名(需解析到服务器IP)
      
      # 证书模式说明:
      # - letsencrypt: 自动申请证书
      # - manual: 手动提供证书
      - DERP_CERT_MODE=manual  # 手动模式
      
      # 服务监听端口(需与上方端口映射对应)
      - DERP_ADDR=:13477  # 使用非标准端口避免冲突
      
      # 客户端验证(增强安全性)
      - DERP_VERIFY_CLIENTS=true  # 只允许已认证的Tailscale节点连接
    volumes:
      # 挂载Tailscale的Unix socket文件(用于客户端验证)
      - /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock
      
      # 证书存储目录
      - ./derper_certs:/app/certs  # 证书文件需命名为:derp.test.com.crt 和 derp.test.com.key

再配置下ssl 证书,推荐开源的 SSL 证书管理工具certimate

tailscale 后台Access controls添加以下内容

{
  "derpMap": {
    // 是否忽略Tailscale默认的全球DERP服务器(设为true表示只使用自定义节点)
    "OmitDefaultRegions": true,
    
    // 自定义DERP区域配置
    "Regions": {
      // 区域ID(必须唯一,建议900+以避免与官方DERP冲突)
      "900": {
        "RegionID": 900,           // 区域唯一标识符
        "RegionCode": "myderp",    // 区域简码(英文标识)
        "RegionName": "HZ",   // 区域显示名称
        
        // 该区域下的DERP节点列表
        "Nodes": [
          {
            "Name": "1",                  // 节点名称(同一区域内唯一)
            "RegionID": 900,              // 必须与父RegionID一致
            "HostName": "derper.test.com", // 节点域名
            
            // 关键端口配置
            "DERPPort": 13477,            // DERP服务端口(TCP)
            "STUNPort": 13478,             // STUN服务端口(UDP)
            
            // 安全设置(生产环境必须为false)
            "InsecureForTests": false     // 是否禁用TLS验证(true=禁用,仅测试用)
          }
          // 可在此添加更多节点实现高可用
        ],
      },
      // 可在此添加更多区域(如北京、上海等)
    },
  },
}

客户端检查节点命令

tailscale netcheck

wechat_2025-05-11_180903_226

发表评论