Tailscale国内自建derp免备案中继实现P2P打洞直连
更新日期:2026.2.21 目前能找到的容器都比较老,重新打包了一个derp以实现中继,dockerhub地址: https://hub.docker.com/repository/docker/guyuan404643/tailscale-ipderp 使用中发现有bug可通过首页邮箱联系
2026.2.21 想起来这东西没做防偷可能会被扫,凌晨爬起来把返回特征改掉了,现在访问derp端口会返回随机内容以降低被扫到的概率。
自建derp功能展示
放三个视频,演示使用国内自建derp打洞速度【视频2】(手机5G+NAS家宽),derp只有v4地址,连上之后可以用tailscale的内网IP访问NAS非常方便。
自建derp流程
云应用里的derp节点,别用,因为部署完了之后我测了半天发现他分配的公网IP不一致,derp端口和stun端口他分配了两个不一致的公网IP,但acl的配置里只能写一个ipv4地址🥲,刷了两次也没同步到一块。
去年的时候写的是用rainyun的NAT服务器,目前宿迁地区的nat会有概率封堵udp无法使用derp服务,今年就用带公网IP的服务器做自建,如果有自己的服务器跟着走就行,不用买配置很高的机器,推荐是买2核2g的,后续跑点小服务也够用,至于带宽则不是很重要,只要打洞打通就是靠NAS的上传带宽,和derp节点的带宽没有关系,如果是晚高峰被qos的话可以考虑买三线BGP或者对应家里宽带服务商的高带宽机器,在ACL里控制所有节点默认走中继不走p2p来绕开qos
服务器选购
关于配置:1核1g内存的机器足够用了,但还是建议买2核2g的机器,都有公网IP了那就可以用来玩点好东西了。
关于网络:
香港和日本的机器都可以用,香港的三网延迟在30ms,日本在70ms,电信用日本机器比移动和联通延迟会高20ms,不怎么推荐电信的买日本机器,买的时候看这两个地区哪个有货买哪个就行。
如果是大带宽机器互联比如实验室的服务器连出来,推荐买国内宁波的大带宽,广东的那个是腾讯的峰值200,要备案,会比较麻烦一点。derp只需要做好中继与打洞,大部分时间是不会占用很高的带宽,有个带公网IP的机器用起来更舒服点,之后想玩点别的比如clawbot、claudecode、opencode、frp等等也用的上。
购买流程
正常注册,在控制台选择购买服务器。

以香港地区为例,先选地区-香港-三区

配置:2核2g,系统选择debian12,不要选lnmp带宝塔面板的那个版本,宝塔面板默认会装上防火墙会多一步开放端口,


如果手快装错了看最后面重装系统教程。
登录与基础环境配置
打开:服务器管理页面,点击进入刚刚购买好的服务器管理页面。

这里就能看到服务器的详细信息包含IP和登录密码与服务器状态,接下来开始登录服务器。 之前还要下载finalshell做终端连接,这次不用了,直接用雨云的web终端登录
在线登录
在服务器管理页面点击vnc连接,选择xtermjs模式。


如果这里右键出来的是浏览器的菜单,选择粘贴为纯文本或者按快捷键 ctrl+shift+v即可粘贴
更新镜像源
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)
国内机器需要做换源,如果买的是香港/日本机器就不用了,复制下方命令到终端执行,一路默认回车即可。
docker ce源选阿里云,访问方式选公网,register默认选毫秒镜像,ce软件源网络协议默认使用http,询问知否安装最新版本docker engine的时候选是。
depr容器创建
复制下方指令到终端中执行即可
sudo docker run -d --name tailscale-derp -p 12345:12345 -p 3478:3478/udp -e DERP_ADDR=:12345 -e DERP_STUN_PORT=3478 --restart=always guyuan404643/tailscale-ipderp
参数说明
| 参数 | 说明 |
|---|---|
-d | 后台运行容器 |
--name tailscale-derp | 容器名称,方便后续管理 |
-p 12345:12345 | DERP 端口(TCP),用于中继流量 |
-p 3478:3478/udp | STUN 端口(UDP),用于协助打洞 |
-e DERP_ADDR=:12345 | 环境变量:告诉程序内部监听的 TCP 端口 |
-e DERP_STUN_PORT=3478 | 环境变量:告诉程序内部监听的 UDP 端口 |
--restart=always | 确保服务器重启后容器能自动启动 |
修改指南
- 更换端口:如果你想使用其他端口(比如
443或3478),请务必同时修改-p映射和-e环境变量。例如,将 DERP 端口改为8888:-p 8888:8888 -e DERP_ADDR=:8888。 - 验证运行:执行完后可以用
docker ps查看容器状态,或者在浏览器访问https://你的服务器IP:12345,如果能看到一段随机内容(我做了混淆处理),说明启动成功。 - 其实复制那行丢终端里等他跑完就行
搭建成功验证
打开浏览器,访问https://你的服务器IP:12345,如果能看到一段随机内容(本来是写死的现在是随机返回内容),说明启动成功。

tailscale-acl 添加derp节点
点击进入tailscale配置页面:tailscale acl 控制配置
2026年了,教程也不能写的太死,如果按我后面写的配置直接复制进去发现在线编辑的格式报错,可以复制这段提示词给你能用到的AI让他们帮你改好再复制回去就行。
这是我的默认tailscaleacl配置,请帮我添加一个derp配置在里面,输出为json格式
[此处粘贴配置]

ok如果只是在默认的按前面写的derp容器搭建指令走,那么复制下面这段配置覆盖进去,修改ipv4、derpport、stunport为自己的即可。
{
"derpMap": {
"OmitDefaultRegions": false,//这里改成true就是只用自己的derp互联,建议不改,如果要跨网可以改成true
"Regions": {
"942": {
"RegionID": 942,
"RegionCode": "SHANGHAI",
"RegionName": "SHANGHAI",//这里可以改成derp命名,如果你有多个derp比如国内国外各有一个
"Nodes": [
{
"Name": "selfhostderp",
"RegionID": 942,
"DERPPort": 12345,
"STUNPort": 3478, //这里改成stun的端口
"ipv4": "服务器IP",
"InsecureForTests": true
}
]
}
}
},
"acls": [
{
"action": "accept",
"src": ["*"],
"dst": ["*:*"]
}
],
"ssh": [
{
"action": "check",
"src": ["autogroup:member"],
"dst": ["autogroup:self"],
"users": ["autogroup:nonroot", "root"]
}
]
}
derp节点测试
在登录了tailscale的机器上执行如下指令检查,tailscale 会使用的最近的derp节点进行中继和打洞。
tailscale netcheck

系统与软件重装
如果首次使用的时候选错系统版本/软件,在控制台里可以一键重装,重装前需要先将服务器关机,勾选响应的版本后过一个2FA身份验证即可。
