告别高延迟!用腾讯云轻量服务器自建Tailscale DERP中继(Go 1.23.3 + 无域名)保姆级教程
国内云服务器搭建Tailscale DERP中继全指南无域名极简方案为什么需要自建DERP中继Tailscale作为一款优秀的组网工具其核心优势在于能够自动建立点对点P2P连接。但在实际使用中由于国内复杂的网络环境NAT穿透失败的情况时有发生。此时系统会自动回退到DERPDetoured Encrypted Routing through Peers中继模式而官方服务器均位于海外导致延迟飙升到300ms以上。我曾为团队部署远程开发环境时发现通过官方DERP节点传输代码的延迟高达400ms而改用上海区域的云服务器自建节点后延迟直接降至30ms以内。这种差异在实时协作、游戏联机等场景下尤为明显。自建DERP中继不仅能解决延迟问题还能避免万人骑服务器的安全风险。1. 服务器准备与环境配置1.1 国内云服务器选购建议腾讯云轻量应用服务器2核4G配置是性价比极高的选择其优势在于带宽充足内地机房默认提供5Mbps峰值带宽足够10人团队稳定使用价格亲民年费约500元折合每月不到50元网络优化BGP多线接入电信/联通/移动延迟均控制在50ms以内关键配置步骤# 登录后首先更新系统 sudo apt update sudo apt upgrade -y # 安装基础工具链 sudo apt install -y wget git openssl curl net-tools注意购买时务必选择内地机房推荐上海或广州区域香港等境外区域仍存在跨境延迟1.2 Go环境配置国内镜像加速Tailscale DERP服务基于Go开发推荐使用1.23.x版本。为规避官方源下载慢的问题可采用国内镜像# 使用清华镜像下载Go wget https://mirrors.tuna.tsinghua.edu.cn/golang/go1.23.3.linux-amd64.tar.gz # 解压到系统目录 sudo rm -rf /usr/local/go sudo tar -C /usr/local -xzf go1.23.3.linux-amd64.tar.gz # 配置环境变量 echo export PATH$PATH:/usr/local/go/bin ~/.bashrc source ~/.bashrc # 验证安装 go version设置模块代理加速依赖下载go env -w GOPROXYhttps://goproxy.cn,direct2. DERP服务部署实战2.1 编译安装derper组件# 安装最新版derper go install tailscale.com/cmd/derpermain # 编译生成可执行文件 go build -o /usr/local/bin/derper $(go env GOPATH)/pkg/mod/tailscale.com*/cmd/derper2.2 无域名证书解决方案由于国内云服务器多数未绑定域名可采用自签名证书# 创建证书目录 sudo mkdir -p /etc/derp/certs # 生成自签名证书有效期10年 sudo openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \ -keyout /etc/derp/certs/derp.key \ -out /etc/derp/certs/derp.crt \ -subj /CNderp.local \ -addext subjectAltNameIP:$(curl -s ifconfig.me)2.3 服务化配置创建systemd服务单元确保稳定性cat EOF | sudo tee /etc/systemd/system/derper.service [Unit] DescriptionTailscale DERP Server Afternetwork.target [Service] Userroot ExecStart/usr/local/bin/derper \ -a :33445 \ -http-port 33446 \ -certdir /etc/derp/certs \ -certmode manual \ -stun-port 3478 \ -verify-clients Restartalways [Install] WantedBymulti-user.target EOF启动并设置开机自启sudo systemctl enable derper sudo systemctl start derper3. 网络与安全配置3.1 防火墙规则设置必须开放以下端口TCP 33445DERP主服务端口UDP 3478STUN协议端口TCP 33446状态监控端口腾讯云控制台操作路径进入「安全组」配置页面添加入站规则协议类型TCP端口范围33445-33446源0.0.0.0/0重复添加UDP 3478规则3.2 防滥用配置通过-verify-clients参数开启客户端验证后需在Tailscale ACL中添加// tailscale ACL示例 derpMap: { Regions: { 901: { RegionID: 901, RegionCode: cn, Nodes: [{ Name: 901a, DERPPort: 33445, IPv4: 你的服务器IP, InsecureForTests: true }] } } }4. 性能调优与测试4.1 基准测试对比使用tailscale netcheck命令测试不同DERP节点的延迟节点类型平均延迟抖动下载速度官方美西节点320ms±50ms1.2Mbps自建上海节点28ms±5ms4.8Mbps4.2 TCP参数优化调整内核参数提升吞吐量# 编辑sysctl.conf echo net.core.rmem_max4194304 /etc/sysctl.conf echo net.core.wmem_max4194304 /etc/sysctl.conf echo net.ipv4.tcp_keepalive_time60 /etc/sysctl.conf # 生效配置 sysctl -p4.3 监控方案通过Prometheus监控DERP服务状态# derper服务暴露的metrics端点 scrape_configs: - job_name: derper static_configs: - targets: [localhost:33446]关键监控指标derp_connects_total连接数统计derp_bytes_sent出站流量derp_packets_dropped丢包计数5. 高级应用场景5.1 多节点负载均衡在华东、华南分别部署DERP节点后ACL配置示例derpMap: { Regions: { 901: { RegionCode: cn-east, Nodes: [{...}] // 上海节点 }, 902: { RegionCode: cn-south, Nodes: [{...}] // 广州节点 } } }5.2 与Headscale集成自建控制服务器时需在config.yaml中添加derp: server: enabled: true region_id: 901 region_code: cn nodes: - name: 901a region_id: 901 hostname: 服务器IP stun_port: 3478 derp_port: 334455.3 移动端优化技巧在Android/iOS客户端添加路由策略# 强制移动网络使用自建DERP tailscale up --advertise-exit-node --accept-routes --derpcn