景山小窝

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

2025/08/09
10
0



tailscale的derp主要有两个用途:

  • 协商设备,帮助设备建立直接连接

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

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

安装derp

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

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 和端口,就可以白嫖,所以最好还是加上。

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

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):

{


"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 节点。