不使用域名搭建自己的tailscale derp服务

tailscale的derp主要有两个用途:

  • 协商设备,帮助设备建立直接连接
  • 当设备无法建立直接连接的时候,充当中继服务器

本文介绍如何不使用域名,直接使用IP搭建自己的derp服务。

详细视频:

安装derp

此处使用docker和docker-compose来安装,docker-compose.yml文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
services:
derper:
image: ghcr.io/yangchuansheng/ip_derper
container_name: derper
restart: unless-stopped
ports:
- 13477:13477
- 13478:3478/udp
environment:
- DERP_ADDR=:13477
- DERP_VERIFY_CLIENTS=true
volumes:
- /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock
  • 对外暴露了13477和13478两个端口
  • DERP_VERIFY_CLIENTS 用于客户端验证,也可以选择关闭,但是如果别人知道你的服务器IP和端口,就可以白嫖,所以最好还是加上。

然后启动容器,命令如下:

1
2
3
4
docker-compose up -d

# 检查服务是否启动成功
docker logs derper

安装tailscale

这一步也是在vps主机上进行。

先执行命令安装tailscale: `curl -fsSL https://tailscale.com/install.sh | sh

然后再执行命令登录tailscale:tailscale login

将上一个命令输出的链接粘贴到浏览器并使用自己的tailscale账号登录,并连接设备。

开启防火墙

对于VPS,需要开启防火墙端口,具体开启规则如下,端口要和前面docker-compose.yml文件里面的一一对应起来。

来源 协议 端口 策略
全部IPv4地址 TCP 13477 允许
全部IPv4地址 UDP 13478 允许

设置acl

登录tailscale的网页端, 然后进入 Access controls, 再点击 JSON Editor,切换为json编辑模式,在json文件中加入derpMap这一项,最后保存。加入的内容如下(只需要加入derpMap):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{


"derpMap": {
"OmitDefaultRegions": false,
"Regions": {
"900": {
"RegionID": 900,
"RegionCode": "tyxy",
"RegionName": "China",
"Nodes": [
{
"Name": "myderper",
"RegionID": 900,
"HostName": "XX.XX.XX.XX",
"DERPPort": 13477,
"STUNPort": 13478,
"CanPort80": false,
"InsecureForTests": true,
},
],
},
},
},



}

对其中几项进行说明:

  • 900: 这个是ID, 只要数字大于等于900即可
  • RegionCode和RegionName:地区代码和地区名称,可以随便填,表示你这个节点的名称。节点列表中显示的就是这儿的名称
  • HostName:你的VPS服务器的IP
  • DERPPort和STUNPort:需要和docker-compose里面暴露的主机端口一一对应

最后一步

设置成功之后将之前已经连接的所有客户端断开再重新连接一下,以便收到新的配置下发,从而使用新的derp节点。


不使用域名搭建自己的tailscale derp服务
https://tianyaoxiayu.top/posts/28671.html
作者
John Doe
发布于
2025年9月10日
许可协议