自搭建 Tailscale DERP 服务器并使用客户端验证(verify-clients) 免域名版 国内可丝滑使用

2026-04-11 12:231阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述:

Tailscale DERP(Distributed, Encrypted, and Resilient Packet Relay)服务器是 Tailscale 网络中用于中继流量的组件,尤其适用于网络环境复杂或直连困难的场景,但是国内网络连接官方提供的derp服务器时普遍存在延迟高,速度慢,甚至几乎无法使用的情况。所以产生了自建私有derp流量中转服务器的需求,以便在p2p无法直连打洞成功的场景下能够实现和使用低延迟,高速度的tailscale流量中继服务。以下是使用 Docker 搭建 Tailscale DERP 服务器的详细步骤:

环境准备

  • 操作系统:推荐使用 Linux 系统,如 Ubuntu、Debian 等,因为 Docker 在 Linux 上的性能和兼容性更佳。
  • Docker 环境:确保已安装 Docker。可以通过运行 docker --version 命令来检查 Docker 是否已安装。
  • Tailscale 客户端:在宿主机上安装并启动 Tailscale 客户端,以便 DERP服务器能够与 Tailscale 网络通信。
  • 网络配置:确保服务器的网络配置正确,能够正常访问外网,且对应的端口没有被防火墙阻止。

搭建步骤

1. 安装并启动 Tailscale 客户端

在宿主机上安装 Tailscale 客户端,并启动它。安装方法因操作系统而异,具体可以参考 Tailscale 官方文档。

启动 Tailscale 客户端后,它会在 /var/run/tailscale 目录下创建一个名为 tailscaled.sock 的套接字文件。

2. 拉取 Docker 镜像

从 Docker Hub 拉取 deepfal/tailscale-derp 镜像。该镜像已经包含了搭建 DERP服务器所需的全部依赖和配置。

docker pull deepfal/tailscale-derp:latest

3. 运行 DERP服务器容器

此处使用的derp镜像是

【自动跟踪更新】Tailscale Derp docker容器镜像 去除域名验证补丁版 开发调优
最近看到tailscale一直在保持更新(尤其是提高网络吞吐量相关的特性),我就去问了问ai,如果derp服务器一直保持在旧版是不是在中转模式下吃不到新版本的特性?AI说确实。。 所以自己搓了个github actions 自动检查新版本derp 拉过来打补丁 然后发布到dockerhub 直观效果就是 去除域名验证,国内免备案(ip+端口可以直接用),安全性由客户端验证保证 所以宿主机尽量…

使用以下命令启动 DERP服务器容器。该命令会将 DERP服务器映射到宿主机的指定端口,并挂载必要的文件和目录。

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 /run/tailscale:/var/run/tailscale:ro \ deepfal/tailscale-derp:latest \ ./derper \ -hostname derp.deepfal.cn \ -a :36666 \ -certmode manual \ -certdir /ssl \ --verify-clients

参数解释

  • -d:后台运行容器。
  • --name tailscale-derp:指定容器名称为 tailscale-derp
  • -p 0.0.0.0:59443:36666:将容器的 36666 端口映射到宿主机的 59443 端口,允许外部访问。
  • -p 0.0.0.0:3478:3478/udp:将容器的 3478 端口映射到宿主机的 3478 端口,用于 UDP 通信。
  • -v /run/tailscale:/var/run/tailscale:ro:将宿主机的 Tailscale 套接字文件挂载到容器中,以便 DERP服务器与 Tailscale 守护进程通信,挂载目录是为了防止客户端重启导致socks突然获取不到了导致derp工作异常,挂目录比较稳。
  • deepfal/tailscale-derp:latest:指定使用的 Docker 镜像。
  • ./derper:指定容器启动时运行的命令。
  • -hostname "derp.deepfal.cn":设置 DERP服务器的主机名。
  • -a ":36666":指定 DERP服务器监听的端口。
  • -certmode "manual":指定证书模式为手动。
  • -certdir "/ssl":指定证书目录。
  • --verify-clients:启用客户端验证。

4. 验证 DERP服务器状态

启动容器后,可以通过以下命令查看 DERP服务器的运行状态:

docker logs tailscale-derp

如果看到类似 DERP server started 的日志信息,表示 DERP服务器已成功启动。

5. 配置 Tailscale 客户端

在 Tailscale 后台配置中,添加自建 DERP服务器的信息。具体配置方法如下:
690×329 25.5 KB

{ "derpMap": { "OmitDefaultRegions": false, "Regions": { "910": { "RegionID": 910, "RegionCode": "自建节点(名称)", "Nodes": [ { "Name": "910", "RegionID": 910, "HostName": "宿主机IP", "InsecureForTests": true, "DERPPort": 59443 } ], "RegionName": "自建节点(名称)" } } } }

宿主机IP 替换为 DERP服务器的实际 IP 地址。

添加derp节点之后就可以立即使用tailscale netcheck检查derp服务器是否在线了

注意事项

  • 端口映射:确保宿主机的 59443(tcp) 和 3478(udp) 端口没有被其他服务占用,并且防火墙允许外部访问这些端口。
网友解答:
--【壹】--:

收藏了,感谢佬友


--【贰】--:

锐驰这种机子流量走中转也是很爽的


--【叁】--:

哇,感谢大佬


--【肆】--: DeepFal:

--verify-clients

–verify-clients 参数是客户端认证 可以防蹭 只有你自己tailnet的客户端设备能用


--【伍】--:

没啥别的步骤 服务器上开俩端口 然后在 admin.tailscale.com 后台配好就直接生效了


--【陆】--:

可以 国内的话延迟低 可以帮助打洞 就算打不通万不得已走3M小水管也能保证最起码能用


--【柒】--:

我查查这个链接的后台配置又怎么配,我一直用的官方的derp确实卡,但是又不想域名备案,所以一直没找到好办法。谢谢


--【捌】--:

佬,只做上面这些就可以了吗?还有其他步骤不,我买个阿里云小鸡搞个


--【玖】--:

image1912×914 71.6 KB
填在这里


--【拾】--:

这个新出的我没用过 我了解了一下是不是客户端加的中继模式功能 那客户端应该也不能要求开3478呀 是不是不能像derp服务器那样提供stun协助打洞功能


--【拾壹】--:

2h2g的3m小鸡能装吗


--【拾贰】--:

啊?刚要下单阿里云呢,peer-relay机器买在哪呢


--【拾叁】--:

客户端上啥也不用干 后台改了会立即自动将包含derp的新配置下发给客户端使用 我写的不明确我去修改一下


--【拾肆】--:

加身份认证吧


--【拾伍】--:

以前参考部署的Blog,也是google搜出来的,去年还用了,供大家参考
刚看了一眼 佬的镜像还是更新一些啊 推荐!!!


--【拾陆】--: DeepFal:

DERP

如果不能直连打洞,走derp也不爽,还是换ipv6吧


--【拾柒】--:

不如用 peer-ralay 简单,
部署参考
https://linux.do/t/topic/1330145

另外阿里云昨天开始墙 vercel 了
https://linux.do/t/topic/1609290


--【拾捌】--:

这样啊,感谢感谢,我看上面帖子,写的 client客户端配置中,我以为是个人pc里面要找配置文件放这个呢


--【拾玖】--:

我也不确定 不知道国内哪家的网络没墙
国内机子也不给你换地区或者 ip 只能自己掏钱试
最保险的就是找个港机了

问题描述:

Tailscale DERP(Distributed, Encrypted, and Resilient Packet Relay)服务器是 Tailscale 网络中用于中继流量的组件,尤其适用于网络环境复杂或直连困难的场景,但是国内网络连接官方提供的derp服务器时普遍存在延迟高,速度慢,甚至几乎无法使用的情况。所以产生了自建私有derp流量中转服务器的需求,以便在p2p无法直连打洞成功的场景下能够实现和使用低延迟,高速度的tailscale流量中继服务。以下是使用 Docker 搭建 Tailscale DERP 服务器的详细步骤:

环境准备

  • 操作系统:推荐使用 Linux 系统,如 Ubuntu、Debian 等,因为 Docker 在 Linux 上的性能和兼容性更佳。
  • Docker 环境:确保已安装 Docker。可以通过运行 docker --version 命令来检查 Docker 是否已安装。
  • Tailscale 客户端:在宿主机上安装并启动 Tailscale 客户端,以便 DERP服务器能够与 Tailscale 网络通信。
  • 网络配置:确保服务器的网络配置正确,能够正常访问外网,且对应的端口没有被防火墙阻止。

搭建步骤

1. 安装并启动 Tailscale 客户端

在宿主机上安装 Tailscale 客户端,并启动它。安装方法因操作系统而异,具体可以参考 Tailscale 官方文档。

启动 Tailscale 客户端后,它会在 /var/run/tailscale 目录下创建一个名为 tailscaled.sock 的套接字文件。

2. 拉取 Docker 镜像

从 Docker Hub 拉取 deepfal/tailscale-derp 镜像。该镜像已经包含了搭建 DERP服务器所需的全部依赖和配置。

docker pull deepfal/tailscale-derp:latest

3. 运行 DERP服务器容器

此处使用的derp镜像是

【自动跟踪更新】Tailscale Derp docker容器镜像 去除域名验证补丁版 开发调优
最近看到tailscale一直在保持更新(尤其是提高网络吞吐量相关的特性),我就去问了问ai,如果derp服务器一直保持在旧版是不是在中转模式下吃不到新版本的特性?AI说确实。。 所以自己搓了个github actions 自动检查新版本derp 拉过来打补丁 然后发布到dockerhub 直观效果就是 去除域名验证,国内免备案(ip+端口可以直接用),安全性由客户端验证保证 所以宿主机尽量…

使用以下命令启动 DERP服务器容器。该命令会将 DERP服务器映射到宿主机的指定端口,并挂载必要的文件和目录。

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 /run/tailscale:/var/run/tailscale:ro \ deepfal/tailscale-derp:latest \ ./derper \ -hostname derp.deepfal.cn \ -a :36666 \ -certmode manual \ -certdir /ssl \ --verify-clients

参数解释

  • -d:后台运行容器。
  • --name tailscale-derp:指定容器名称为 tailscale-derp
  • -p 0.0.0.0:59443:36666:将容器的 36666 端口映射到宿主机的 59443 端口,允许外部访问。
  • -p 0.0.0.0:3478:3478/udp:将容器的 3478 端口映射到宿主机的 3478 端口,用于 UDP 通信。
  • -v /run/tailscale:/var/run/tailscale:ro:将宿主机的 Tailscale 套接字文件挂载到容器中,以便 DERP服务器与 Tailscale 守护进程通信,挂载目录是为了防止客户端重启导致socks突然获取不到了导致derp工作异常,挂目录比较稳。
  • deepfal/tailscale-derp:latest:指定使用的 Docker 镜像。
  • ./derper:指定容器启动时运行的命令。
  • -hostname "derp.deepfal.cn":设置 DERP服务器的主机名。
  • -a ":36666":指定 DERP服务器监听的端口。
  • -certmode "manual":指定证书模式为手动。
  • -certdir "/ssl":指定证书目录。
  • --verify-clients:启用客户端验证。

4. 验证 DERP服务器状态

启动容器后,可以通过以下命令查看 DERP服务器的运行状态:

docker logs tailscale-derp

如果看到类似 DERP server started 的日志信息,表示 DERP服务器已成功启动。

5. 配置 Tailscale 客户端

在 Tailscale 后台配置中,添加自建 DERP服务器的信息。具体配置方法如下:
690×329 25.5 KB

{ "derpMap": { "OmitDefaultRegions": false, "Regions": { "910": { "RegionID": 910, "RegionCode": "自建节点(名称)", "Nodes": [ { "Name": "910", "RegionID": 910, "HostName": "宿主机IP", "InsecureForTests": true, "DERPPort": 59443 } ], "RegionName": "自建节点(名称)" } } } }

宿主机IP 替换为 DERP服务器的实际 IP 地址。

添加derp节点之后就可以立即使用tailscale netcheck检查derp服务器是否在线了

注意事项

  • 端口映射:确保宿主机的 59443(tcp) 和 3478(udp) 端口没有被其他服务占用,并且防火墙允许外部访问这些端口。
网友解答:
--【壹】--:

收藏了,感谢佬友


--【贰】--:

锐驰这种机子流量走中转也是很爽的


--【叁】--:

哇,感谢大佬


--【肆】--: DeepFal:

--verify-clients

–verify-clients 参数是客户端认证 可以防蹭 只有你自己tailnet的客户端设备能用


--【伍】--:

没啥别的步骤 服务器上开俩端口 然后在 admin.tailscale.com 后台配好就直接生效了


--【陆】--:

可以 国内的话延迟低 可以帮助打洞 就算打不通万不得已走3M小水管也能保证最起码能用


--【柒】--:

我查查这个链接的后台配置又怎么配,我一直用的官方的derp确实卡,但是又不想域名备案,所以一直没找到好办法。谢谢


--【捌】--:

佬,只做上面这些就可以了吗?还有其他步骤不,我买个阿里云小鸡搞个


--【玖】--:

image1912×914 71.6 KB
填在这里


--【拾】--:

这个新出的我没用过 我了解了一下是不是客户端加的中继模式功能 那客户端应该也不能要求开3478呀 是不是不能像derp服务器那样提供stun协助打洞功能


--【拾壹】--:

2h2g的3m小鸡能装吗


--【拾贰】--:

啊?刚要下单阿里云呢,peer-relay机器买在哪呢


--【拾叁】--:

客户端上啥也不用干 后台改了会立即自动将包含derp的新配置下发给客户端使用 我写的不明确我去修改一下


--【拾肆】--:

加身份认证吧


--【拾伍】--:

以前参考部署的Blog,也是google搜出来的,去年还用了,供大家参考
刚看了一眼 佬的镜像还是更新一些啊 推荐!!!


--【拾陆】--: DeepFal:

DERP

如果不能直连打洞,走derp也不爽,还是换ipv6吧


--【拾柒】--:

不如用 peer-ralay 简单,
部署参考
https://linux.do/t/topic/1330145

另外阿里云昨天开始墙 vercel 了
https://linux.do/t/topic/1609290


--【拾捌】--:

这样啊,感谢感谢,我看上面帖子,写的 client客户端配置中,我以为是个人pc里面要找配置文件放这个呢


--【拾玖】--:

我也不确定 不知道国内哪家的网络没墙
国内机子也不给你换地区或者 ip 只能自己掏钱试
最保险的就是找个港机了