如果你是一个 Tailscale 重度用户,你一定经历过官方海外 DERP 节点那让人抓狂的高延迟和高丢包率。为了实现设备间的极速直连(P2P),在国内云服务器上自建一个专属于自己的 DERP 中继节点,几乎是唯一的出路。
但在国内云服务商(如阿里云、腾讯云)上搭建 DERP 节点,并非一条坦途。由于国内特殊的网络环境(未备案域名拦截 80/443 端口),传统的一键部署教程往往会让你陷入死胡同。
经过长达数小时的排错与折腾,我终于摸索出了一套“真实域名 + 手动证书 + 非标准端口 + 防火墙全通”的最强完美形态。今天,就把这套可以直接抄作业的避坑指南分享给大家。
💡 核心架构思路(为什么标准教程行不通?)
通常的教程会让你直接用 Docker 映射 443 端口,并让程序自动申请 Let's Encrypt 证书。但在国内服务器上,这会导致三个致命问题:
- 80 端口被封死: 自动申请证书依赖 80 端口验证,导致申请失败,程序只能生成自签名证书。而 Tailscale 极其严格,绝对拒收自签名证书。
- 443 端口 SNI 阻断: 即便你搞到了真实证书,只要你的域名没有在工信部备案,当你通过 443 端口访问时,阿里云防火墙会立刻识别出未备案域名的 SNI 并强制阻断(
ERR_CONNECTION_CLOSED)。 - UDP 测速包有去无回: 配置好一切后,网页能打开,但
tailscale netcheck死活测不出延迟,因为服务器内部防火墙(ufw)拦截了 3478 UDP 端口。
我们的终极破局方案:
抛弃 443 端口!使用申请好的真实 SSL 证书,配合非标准 TCP 端口(例如 42465)绕过域名备案检测,并彻底打通系统与云盘的双层防火墙。
🛠️ 终极部署教程(四步通车)
第一步:准备真实 SSL 证书
既然服务器自己申请不到,我们就手动“喂”给它。
- 去你的域名注册商(如阿里云、腾讯云、Cloudflare)申请一张免费的 SSL 证书(通过 DNS 验证即可,无需备案)。
- 下载 Nginx 格式的证书,你会得到公钥(
.crt或.pem)、证书链(chain.crt)和私钥(.key)。 - 将公钥和证书链合并为一个完整的
.crt文件。 - 将合并后的
你的域名.crt和你的域名.key上传到服务器的/root/certs/目录下。
第二步:双重防火墙放行(极其关键!)
这是无数人栽倒在终点线前的一步。 你不仅要在阿里云网页控制台的安全组中放行端口,还要在 Ubuntu 系统内部放行!
在服务器终端执行:
# 放行自定义的 TCP 端口(用于 HTTPS 通讯)
sudo ufw allow 42465/tcp
# 放行原生的 STUN 端口(用于 UDP 打洞测速,极其重要!)
sudo ufw allow 3478/udp
注:同时确保在阿里云网页后台的“安全组”中也放行了这两个端口。
第三步:Docker 终极启动命令
清理掉环境里占用端口的其他服务(如宝塔面板残留),然后使用以下命令启动 DERP 容器。
这里我们使用了 yangchuansheng/derper 镜像,并关闭了客户端验证(因为使用了非标准端口,属于天然的伪装,不用担心被轻易白嫖,同时也免去了复杂的 Socket 权限挂载)。
docker run -d \
--name derper \
--restart always \
--network host \
-v /root/certs:/app/certs \
-e DERP_DOMAIN=derp.你的域名.com \
-e DERP_CERT_MODE=manual \
-e DERP_VERIFY_CLIENTS=false \
-e DERP_ADDR=:42465 \
ghcr.io/yangchuansheng/derper:latest
参数解析:
-v /root/certs:/app/certs:挂载我们刚刚上传的真实证书。-e DERP_CERT_MODE=manual:强制程序使用本地手动证书,不再向外部申请。-e DERP_ADDR=:42465:将原本的 443 端口替换为 42465,完美绕过备案 SNI 阻断!
第四步:配置 Tailscale ACL
进入 Tailscale 网页端控制台(Access Controls),在 JSON 配置文件中添加你的专属节点:
"derpMap": {
"OmitDefaultRegions": false,
"Regions": {
"901": {
"RegionID": 901,
"RegionCode": "Aliyun",
"RegionName": "My Aliyun DERP",
"Nodes": [
{
"Name": "901a",
"RegionID": 901,
"HostName": "derp.你的域名.com",
"IPv4": "你的服务器真实公网IP",
"DERPPort": 42465,
"STUNPort": 3478
}
]
}
}
}
🎉 见证奇迹的时刻
保存配置后,请务必重启你本地电脑/手机上的 Tailscale 客户端(强制刷新缓存)。
打开你的本地终端,敲下神圣的测速命令:
tailscale netcheck
不出意外,你将会看到属于你的节点登顶榜首,享受几十毫秒的极致低延迟:
* Nearest DERP: My Aliyun DERP
* DERP latency:
- Aliyun: 35.2ms (My Aliyun DERP)
- tok: 82.9ms (Tokyo)
- sin: 109.2ms (Singapore)
...

📝 排错自查清单 (Troubleshooting)
如果你依然遇到问题,请对照以下症状“对号入座”:
- 浏览器访问
https://域名:端口提示ERR_CONNECTION_CLOSED: 100% 是由于域名未备案被云服务商阻断了。解决:换一个冷门端口。 - Mac/Windows 报错
remote error: tls: unknown certificate: Tailscale 拒收了伪造证书。解决:检查容器是否正确读取了挂载的真实证书。 - 网页访问显示 "This is a Tailscale DERP server." 但
netcheck列表里死活没有延迟: UDP 测速包被拦截了。解决:立刻去检查系统ufw防火墙的3478/udp是否放行!
折腾虽苦,但看着 35.2ms 延迟出现的那一刻,一切都值了。祝大家都能早日打通属于自己的网络高速公路!
版权属于:soarli
本文链接:https://blog.soarli.top/archives/824.html
转载时须注明出处及本声明。