2026-02-06

什么是DERP?
DERP 即 Detoured Encrypted Routing Protocol,这是 Tailscale 自研的一个协议,它是一个通用目的包中继协议,运行在 HTTP 之上,而大部分网络都是允许 HTTP 通信的。
它根据目的公钥(destination’s public key)来中继加密的流量(encrypted payloads)。
Tailscale 会自动选择离目标节点最近的 DERP server 来中继流量。
Headscale-server 是取代官方server的开源服务器,更加灵活无现在。此文没有涉及到。
**Tailscale **使用的算法很有趣: 所有客户端之间的连接都是先选择 DERP 模式(中继模式),这意味着连接立即就能建立(优先级最低但 100% 能成功的模式),用户不用任何等待。然后开始并行地进行路径发现,通常几秒钟之后,我们就能发现一条更优路径,然后将现有连接透明升级(upgrade)过去,变成点对点连接(直连)。因此, DERP 既是 Tailscale 在 NAT 穿透失败时的保底通信方式(此时的角色与 TURN 类似),也是在其他一些场景下帮助我们完成 NAT 穿透的旁路信道。换句话说,它既是我们的保底方式,也是有更好的穿透链路时,帮助我们进行连接升级(upgrade to a peer-to-peer connection)的基础设施。
https://blog.csdn.net/u010470258/article/details/147090057?spm=1001.2014.3001.5506
https://www.ghostchu.com/tailscale-安利指南-快速向你的好友推销-tailscale/
安装go环境
在控制台进入服务器控制界面,依次运行以下命令。
- 安装go
1 | apt install -y wget git openssl curl |
- 将go的路径添加到环境变量
1 | export PATH=$PATH:/usr/local/go/bin |
- 检查go是否安装成功
1 | go version |
- 将添加环境变量输出到profile文件内,这样每次开机可以自动添加环境变量
1 | echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile |
- 以下命令都要在管理员账户下运行,先进入管理员账户
1 | su - |
- 增加go安装的国内镜像,加快go install的安装速度(国内必要)
1 | go env -w GO111MODULE=on |
安装derp
- 下载
1 | go install tailscale.com/cmd/derper@main |
- 进入~/go/pkg/mod/[tailscale]/cmd/derper文件夹内,执行go编译
1 | go build -o /etc/derp/derper |
- 编译完成后要修改cert.go文件,注释以下三行代码。
cert.go文件位于~/go/pkg/mod/[tailscale]/cmd/derper

- 然后再次进入derper文件夹内编译一次
1 | go build -o /etc/derp/derper |
- 检查derper是否安装成功,成功的话会有derper文件夹
1 | ls /etc/derp |
配置derp服务器
自签名方式:~~~~生成ssl证书,其中CN=derp.izheteng.online中的网址可以任意填写
1 | openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout /etc/derp/derp.izheteng.online.key -out /etc/derp/derp.izheteng.online.crt -subj "/CN=derp.izheteng.online" -addext "subjectAltName=DNS:derp.izheteng.online" |
自签名方式,实际用下来。一直有dns解析问题。换位真实域名证书后,正常使用。
- 安装并配置 Certbot 获取证书
1 | # 1. 安装 Certbot |
- 绕过云厂商防护:使用 DNS 验证(推荐,彻底解决 403 问题)
HTTP 验证容易被云厂商的 WAF / 安全策略拦截,而 DNS 验证只需要在域名解析里加一条 TXT 记录,无需开放 80 端口,是国内服务器申请证书的最优解。
1 | # 1. 执行 DNS 验证命令 |
执行后会出现以下提示(关键步骤):
1 | Please deploy a DNS TXT record under the name: |

添加 DNS TXT 记录(核心操作)
登录你的域名服务商后台(比如阿里云域名、腾讯云域名、Cloudflare 等);
找到域名
izheteng.online的 DNS 解析设置;添加一条 TXT 记录:
保存后等待 1-2 分钟(DNS 生效),再按回车继续 Certbot 流程。

- 验证 DNS 记录是否生效(可选)
1 | # 检查 TXT 记录是否生效(替换成你的真实值) |
如果输出里能看到你添加的字符串,说明记录生效了。

证书生成后会保存在 /etc/letsencrypt/live/derp.izheteng.online/ 目录下:
fullchain.pem:包含服务器证书和中间证书privkey.pem:服务器私钥
- 创建证书软链接(方便 Derper 读取)
1 | ln -s /etc/letsencrypt/live/derp.izheteng.online/fullchain.pem /etc/derp/derp.izheteng.online.crt |
- 自动续期配置(DNS 验证需要手动处理,建议记录)2026-05-08T09:00:00.000+08:00
DNS 验证的证书无法自动续期(因为需要手动加 TXT 记录),你可以:
1 | # 提前测试续期流程(证书快过期时执行) |
- 成derp的配置文件
1 | sudo vim /etc/systemd/system/derp.service |
1 | [Unit] |
- 将以下内容写入到derp.service文件中
• 启动derper
1 | systemctl enable derp |
- 检验是否设置成功
在启动derp后可以在浏览器中进入https://IP:PORT (https://116.198.225.163:24330/),如果看到以下网页则说明成功。其中IP是第一步中记录的服务器公网IP,PORT是derp.service中设置的。

在服务器上安装taiscale
- 运行自动安装脚本
1 | curl -fsSL https://tailscale.com/install.sh | sh |
- 启动tailscale并登陆
1 | tailscale up |
进入登陆网页登陆tailscale账号
- 重启derp服务
1 | systemctl daemon-reload |
在Tailscale中增加derp服务器
- 打开tailscale的网页console,

- 在access control中JSON editor里的’ssh’之前

- 粘贴以下内容:
1 | "derpMap": { |
检测是否配置成功
- 在自己的电脑上输入以下命令:
1 | tailscale netcheck |
如果在DERP latency中出现自己刚才设置的服务器Suqian,即为安装成功。

自建前后ping测对比:
原生ACL配置