Tailscale 搭建自己的私有网络 第二期,5分钟搞定!国内VPS自建DERP中继:无需域名,无需证书的部署方案
一句话结论
在国内VPS上使用Docker部署Tailscale DERP中继服务器,无需域名和SSL证书,只需5分钟即可显著提升国内设备间的连接速度。
内容摘要
- 问题:Tailscale官方DERP服务器在国内无节点,导致设备间连接慢或不稳定。
- 方案:在国内VPS上自建DERP中继,无需域名和证书。
- 步骤:1. VPS安装Tailscale客户端;2. 用Docker运行DERP容器;3. 配置防火墙;4. 在Tailscale ACL中添加自定义节点。
- 优势:成本低(月费10-20元)、完全可控、速度更快、部署简单。
结构拆解
目标-步骤-注意事项
对我有用的部分
- 技术方案:使用
deepfal/tailscale-derpDocker镜像,配合--verify-clients和-certmode manual参数,实现无需域名和SSL证书的DERP服务器部署。 - 配置要点:Tailscale ACL中
derpMap的配置结构,特别是InsecureForTests: true和OmitDefaultRegions: false的设置逻辑与安全性解释。 - 故障排查与优化:包括防火墙端口(TCP 59443, UDP 3478)的开放、Docker镜像拉取失败的备用方案、挂载目录的优化方法以及多节点负载均衡的配置示例。

Tailscale 第一期,从 0 开始搭建自己的私有网络
这一期,为什么要自建 DERP 节点?
你可能已经在使用 Tailscale 了,也知道它有多方便——把所有设备连成一个虚拟局域网,随时随地访问家里的电脑、NAS,简直是远程办公神器。
但是!你有没有遇到过这种情况:
- • 两台设备明明都在线,却连接巨慢,传个文件要等半天
- • 有时候干脆连不上,Tailscale 显示"relayed"状态
- • 看日志发现流量在绕地球——经过美国、欧洲的服务器中转
这是因为 Tailscale 的官方 DERP 中继服务器在国内没有节点!当你的设备无法直连(P2P 打洞失败)时,所有流量都要绕到国外服务器中转,速度自然慢得要命。
虽然网上有很多公开的 DERP 节点可以用,但说实话,把自己的流量交给陌生人的服务器,总感觉不太放心。而且这些公开节点质量参差不齐,今天能用明天可能就挂了。
最靠谱的解决方案,就是自己搭一个!
好消息是,自建 DERP 节点超级简单,而且成本极低:
- • ✅ 只需要一台国内 VPS(最便宜的配置就够了,一个月十几块钱)
- • ✅ 不需要域名(省了域名费和备案麻烦)
- • ✅ 不需要 SSL 证书(省了申请和续期的麻烦)
- • ✅ 5 分钟部署完成(真的就是复制粘贴几条命令)
准备工作
你需要:
- 1. 一台国内 VPS :阿里云、腾讯云、华为云都行,最低配置就够(1 核 1G 内存)。选择国内机房,比如北京、上海、广州。
- 2. SSH 工具:Windows 用户可以用 PuTTY 或者 Windows 自带的 PowerShell, Mac 和 Linux 用户直接用终端。
- 3. 5 分钟时间 :真的只需要 5 分钟!
第一步:登录 VPS 并安装 Tailscale 客户端
’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
用 SSH 连接到你的 VPS:
ssh root@你的VPS_IP
然后运行 Tailscale 官方安装脚本:
curl -fsSL https://tailscale.com/install.sh | sh
安装完成后,启动并登录 Tailscale:
sudo tailscale up
这时候会给你一个链接,复制到浏览器里打开,登录你的 Tailscale 账号授权这台 VPS 加入你的网络。
为什么要这么做?
因为我们要启用 --verify-clients 参数,让 DERP 服务器验证连接的客户端是不是你网络里的设备。这样可以防止别人白嫖你的中继服务器。
验证一下 Tailscale 是否正常运行:
ls /var/run/tailscale/tailscaled.sock
如果看到这个文件存在,说明安装成功了!
第二步:用 Docker 运行 DERP 服务器
’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
现在来启动 DERP 服务器容器。复制下面这条命令,把 derp.deepfal.cn 改成你的 VPS 公网 IP,然后运行:
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 /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock \
deepfal/tailscale-derp:latest \
./derper \
-hostname 你的VPS公网IP \
-a :36666 \
-certmode manual \
-certdir /ssl \
--verify-clients
参数解释 (不想看可以跳过):
- •
-p 0.0.0.0:59443:36666:把容器的 36666 端口映射到宿主机的 59443 端口,这是 DERP 服务的主端口 - •
-p 0.0.0.0:3478:3478/udp:UDP 端口,用于 STUN 协议帮助设备打洞 - •
-v /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock:挂载 Tailscale 的 socket 文件,让 DERP 能验证客户端身份 - •
-hostname 你的 VPS 公网 IP:指定 DERP 服务器的地址(用 IP 就行,不需要域名) - •
-certmode manual:手动证书模式(其实我们不用证书,因为 Tailscale 本身就是加密的) - •
--verify-clients:启用客户端验证,防止被白嫖
如果遇到 Docker 拉取失败怎么办?
国内有时候访问 Docker Hub 会很慢或者失败。如果你遇到 docker.io 连接超时,可以用这个办法:
在另一台能访问 Docker Hub 的机器上 (比如你的本地电脑):
# 拉取镜像
docker pull deepfal/tailscale-derp:latest
# 打包成文件
docker save deepfal/tailscale-derp:latest | gzip > tailscale-derp_latest.tar.gz
把文件传到 VPS 上 :
scp tailscale-derp_latest.tar.gz root@你的VPS_IP:/tmp/
在 VPS 上导入镜像 :
gunzip -c /tmp/tailscale-derp_latest.tar.gz | docker load
然后再运行上面的 docker run 命令就可以了。
第三步:配置防火墙和安全组
’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
这一步超级重要!如果不开放端口,外面根本连不进来。
云服务商控制台配置
登录你的云服务商控制台(阿里云、腾讯云等),找到"安全组"或"防火墙规则",添加以下规则:
| 协议 | 端口 | 来源 | 说明 |
|---|---|---|---|
| TCP | 59443 | 0.0.0.0/0 | DERP 主服务端口 |
| UDP | 3478 | 0.0.0.0/0 | STUN 端口 |
服务器防火墙配置(如果有的话)
如果你的 VPS 还开启了系统防火墙(比如 ufw 或 firewalld),也需要放行这两个端口:
Ubuntu/Debian (ufw) :
sudo ufw allow 59443/tcp
sudo ufw allow 3478/udp
CentOS/RHEL (firewalld) :
sudo firewall-cmd --permanent --add-port=59443/tcp
sudo firewall-cmd --permanent --add-port=3478/udp
sudo firewall-cmd --reload
第四步:验证 DERP 服务器运行状态
检查容器是否正常运行:
docker logs tailscale-derp
如果看到类似 derp server started 或者 listening on :36666 这样的日志,说明服务已经启动成功了!
你也可以用这个命令查看容器状态:
docker ps | grep tailscale-derp
如果状态是 Up ,说明一切正常。
第五步:配置 Tailscale 使用你的 DERP 节点
现在是最激动人心的时刻!打开 Tailscale 的 ACL 配置页面:
👉 https://login.tailscale.com/admin/acls/file
在配置文件中找到或添加 derpMap 字段(如果已经有了就直接修改 Regions 部分):
{
"derpMap": {
"OmitDefaultRegions":false,
"Regions": {
"900": {
"RegionID": 900,
"RegionCode": "mycustom",
"RegionName": "My Custom DERP",
"Nodes": [
{
"Name": "mycustom-1",
"RegionID": 900,
"HostName": "你的 VPS 公网 IP",
"DERPPort": 59443,
"InsecureForTests":true
}
]
}
}
}
}
重要说明 :
- • 把
你的 VPS 公网 IP替换成你实际的 VPS IP 地址 - •
DERPPort填59443(我们映射的端口) - •
InsecureForTests: true表示不验证 SSL 证书(因为我们用的是 IP,没有证书) - •
OmitDefaultRegions: false表示保留官方节点作为备份,建议这样设置
点击 Save 保存配置。你的所有 Tailscale 设备会在几秒钟内自动刷新配置!
第六步:测试验证
’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
在任意一台已经安装 Tailscale 的设备上运行:
tailscale netcheck
你会看到类似这样的输出:
Report:
* UDP: true
* IPv4: yes, 你的IP地址
* IPv6: no
* MappingVariesByDestIP: false
* HairPinning: false
* PortMapping:
* Nearest DERP: My Custom DERP (mycustom)
* DERP latency:
- mycustom: 15ms ← 看这里!延迟很低说明成功了
- tok: 85ms
- sin: 92ms
如果你看到你的自定义 DERP 节点出现在列表里,而且延迟很低(通常 10-30ms),恭喜你,部署成功了!
你也可以在 Tailscale 管理后台查看设备连接状态:
👉 https://login.tailscale.com/admin/machines
点击任意设备,查看"Connection type",如果显示"DERP (mycustom)",说明流量正在通过你的自建节点中转。
进阶技巧
优化挂载目录,防止重启失效
有时候 Tailscale 客户端重启会导致 socket 文件路径变化,容器就找不到了。更稳定的做法是挂载整个目录:
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 /var/run/tailscale:/var/run/tailscale:ro \
deepfal/tailscale-derp:latest \
./derper \
-hostname 你的VPS公网IP \
-a :36666 \
-certmode manual \
-certdir /ssl \
--verify-clients
注意这里改成了 -v /var/run/tailscale:/var/run/tailscale:ro (挂载整个目录,只读模式)。
添加多个 DERP 节点实现负载均衡
如果你有多台 VPS,可以在不同地区各部署一个 DERP 节点,然后在 Tailscale 配置中添加多个 Region:
{
"derpMap": {
"OmitDefaultRegions":false,
"Regions": {
"900": {
"RegionID": 900,
"RegionCode": "cn-north",
"RegionName": "China North",
"Nodes": [
{
"Name": "beijing-1",
"RegionID": 900,
"HostName": "北京 VPS 的 IP",
"DERPPort": 59443,
"InsecureForTests":true
}
]
},
"901": {
"RegionID": 901,
"RegionCode": "cn-south",
"RegionName": "China South",
"Nodes": [
{
"Name": "guangzhou-1",
"RegionID": 901,
"HostName": "广州 VPS 的 IP",
"DERPPort": 59443,
"InsecureForTests":true
}
]
}
}
}
}
Tailscale 会自动选择延迟最低的节点使用。
监控 DERP 服务器状态
你可以定期检查容器日志,看看有没有异常:
docker logs --tail 50 tailscale-derp
或者设置一个简单的监控脚本,每小时检查一次容器是否在运行:
#!/bin/bash
if ! docker ps | grep -q tailscale-derp; then
echo "DERP container is down! Restarting..."
docker start tailscale-derp
fi
把这个脚本加到 crontab 里定时执行就行了。
常见问题
Q: 为什么我的设备还是连不上自建的 DERP 节点?
A: 检查以下几点:
- 1. 防火墙和安全组是否正确配置(TCP 59443 和 UDP 3478)
- 2. VPS 的 Tailscale 客户端是否正常运行(
tailscale status检查) - 3. Docker 容器是否正常运行(
docker ps检查) - 4. Tailscale ACL 配置是否保存成功(刷新页面确认)
Q: InsecureForTests 设为 true 安全吗?
A: 完全安全!这个参数只是告诉 Tailscale 客户端"不要验证这个 DERP 服务器的 SSL 证书"。但 Tailscale 本身的端到端加密是独立的,流量依然是加密的。DERP 服务器只是中转加密数据包,看不到内容。
Q: 我可以只用自建节点,完全不用官方节点吗?
A: 可以,把 OmitDefaultRegions 设为 true 就行。但不建议这么做,因为如果你的 VPS 挂了,设备之间就完全连不上了。保留官方节点作为备份更稳妥。
Q: 这个方案的成本是多少?
A: 国内最便宜的 VPS 一个月 10-20 元就够了(1 核 1G 内存),流量一般也够用。相比购买商业 VPN 服务或者专业的远程访问方案,这个成本几乎可以忽略不计。
Q: 如果我换了 VPS IP 怎么办?
A: 只需要重新运行 docker run 命令(修改 hostname 参数),然后更新 Tailscale ACL 配置中的 IP 地址就可以了。
Q: 为什么要用 Docker 而不是直接在宿主机上运行 derper?
A: Docker 更方便管理,而且隔离性更好。如果出问题了,直接删除容器重新运行就行,不会影响宿主机。当然你也可以直接在宿主机上编译运行 derper,效果是一样的。
总结
通过这个方案,你只需要:
- 1. 一台国内 VPS (十几块钱一个月)
- 2. 5 分钟时间 (安装 Tailscale + 运行 Docker 容器)
- 3. 几行配置 (修改 Tailscale ACL)
就能拥有一个专属的、高速的、安全的 DERP 中继节点!
相比使用公开节点,自建节点的优势是:
- • ✅ 完全可控 :你知道流量经过哪里,不用担心隐私问题
- • ✅ 稳定可靠 :不会突然挂掉或者被墙
- • ✅ 速度更快 :选择离你最近的机房,延迟更低
- • ✅ 独享带宽 :不会被别人抢占资源
而且这个方案最大的优点是 简单 ——不需要域名,不需要证书,不需要复杂的配置,真的就是复制粘贴几条命令就搞定了。
如果你已经在使用 Tailscale,强烈建议试试这个方案。如果你还没用过 Tailscale,可以先看看我之前写的《完全免费!从零开始搭建你的私人网络:Tailscale + 国内 DERP 免费中继完全指南》,了解 Tailscale 的基础用法。
现在就去试试吧!5 分钟后,你就能享受飞一般的连接速度了🚀
相关链接
🔗 Tailscale 官网:https://tailscale.com
🔗 Tailscale Linux 安装文档:https://tailscale.com/docs/install/linux
🔗 Tailscale ACL 配置页面:https://login.tailscale.com/admin/acls/file
🔗 Tailscale 设备管理页面:https://login.tailscale.com/admin/machines
🔗 deepfal/tailscale-derp Docker 镜像:https://hub.docker.com/r/deepfal/tailscale-derp
评论区