使用Docker部署Tailscale DERP

夏沫花火zzz🌙 (Muska_Ami) Lv4

准备工作

  • 一台能够跑Docker的服务器
  • 服务器能开放stun的端口 UDP/3478
  • 一个域名
  • (可选)SSL证书

本文假设服务器发行版为普通 Debian 12

Docker 近期国内访问困难,以下是截止本文发布时可用的镜像:

  • docker.1panel.live
  • dockerhub.icu

关于 Docker 及 Docker Compose 安装本文不再赘述,请自行查阅其他文档。

防火墙放行端口

iptables/nftables和服务器安全组都要放行以下端口:

  • UDP/3478
  • TCP/<PORT>

<PORT> 请改为一个你需要的端口

(可选)安装 Tailscale

此步骤用于鉴权,若你搭建的是公开 DERP 服务,那么可以跳过。

1
curl -fsSL https://tailscale.com/install.sh | sh

写入 Docker Compose

创建 Derper 文件夹:

1
2
mkdir -p /opt/derper
mkdir -p /opt/derper/cert # 证书目录

请将 <PORT> 替换为你希望的 DERP 端口,<HOST> 替换为你希望的 DERP 连接域名。
本文假设你需要 SSL,故写入证书相关。关于证书请继续往下。若不需要 SSL,请自行移除 -certdir=/cert/ -certmode=manual 部分。
如果需要搭建的为公共 DERP,请移除 -verify-clients 部分。

1
2
3
4
5
6
7
8
9
10
11
12
services:
derper:
image: qctt/derper
container_name: derper
restart: unless-stopped
ports:
- "<PORT>:443"
- "3478:3478/udp"
volumes:
- /opt/derper/cert/:/cert/ # 证书目录
- /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock # 用于给私有DERP鉴权
command: /derper -stun -a 0.0.0.0:443 -hostname <HOST> -certdir=/cert/ -certmode=manual -verify-clients

关于证书

证书及私钥文件名为:

  • <HOST>.crt
  • <PORT>.key

如果你和我一样使用 1Panel 申请和管理证书,那么你可以在证书申请的配置中勾选 推送证书到本地目录申请证书之后执行脚本,并填入:

推送证书到本地目录:

1
/opt/derper/cert

申请证书之后执行脚本:

1
2
mv /opt/derper/cert/fullchain.pem /opt/derper/cert/<HOST>.crt
mv /opt/derper/cert/privkey.pem /opt/derper/cert/<PORT>.key

启动 Derper 服务

1
2
cd /opt/derper
docker-compose up -d

添加到Tailscale

在你的Tailscale管理界面找到 Access Controls (点我直达 )
在其中插入片段,示例如下

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
29
{
"acls": [
// ...
],
"ssh": [
// ...
],
// ...
"derpMap": {
"Regions": {
"900": {
"RegionID": 900, // 900以上
"RegionCode": "cni-zj-nb", // 区域代码,会在 `tailscale netcheck` 显示
"RegionName": "中国-湖北", // 区域名称,会在 `tailscale netcheck` 显示
"Nodes": [
{
"Name": "zj-nb-1", // 随意填写
"RegionID": 900, // 对应上方ID
"HostName": "xxxxx.xxx", // 填写你的DERP服务域名
"DERPPort": 12345, // 你的DERP服务端口
},
],
},
// 更多DERP节点
},
},
// ...
}

使用 tailscale netcheck 检查,发现多出自建DERP,成功

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
29
30
31
32
33
34
35
36
37
38
Report:
* UDP: true
* IPv4: yes, xxx.xxx.xxx.xxx:xxxxx
* IPv6: no, but OS has support
* MappingVariesByDestIP: true
* PortMapping:
* CaptivePortal: false
* Nearest DERP: 中国-湖北-崇阳
* DERP latency:
- cni-hb-cy: 41.4ms (中国-湖北-崇阳)
- cni-zj-nb: 59.6ms (中国-浙江-宁波)
- lax: 239.7ms (Los Angeles)
- sfo: 245.8ms (San Francisco)
- sea: 251.3ms (Seattle)
- den: 255.6ms (Denver)
- tor: 267ms (Toronto)
- dfw: 269ms (Dallas)
- ord: 269.5ms (Chicago)
- hnl: 271.7ms (Honolulu)
- nyc: 278.9ms (New York City)
- mia: 286.8ms (Miami)
- tok: 336.3ms (Tokyo)
- lhr: 343.1ms (London)
- cnh: 361ms (中国香港)
- par: 361.5ms (Paris)
- fra: 364ms (Frankfurt)
- mad: 366.2ms (Madrid)
- syd: 370.7ms (Sydney)
- ams: 377.1ms (Amsterdam)
- waw: 380.1ms (Warsaw)
- hkg: 386.6ms (Hong Kong)
- sin: 400ms (Singapore)
- sao: 404ms (São Paulo)
- blr: 463.2ms (Bangalore)
- dbi: 466.5ms (Dubai)
- nai: 509.7ms (Nairobi)
- jnb: 518.5ms (Johannesburg)
- usa: (美国)
  • 标题: 使用Docker部署Tailscale DERP
  • 作者: 夏沫花火zzz🌙 (Muska_Ami)
  • 创建于 : 2024-07-25 19:07:33
  • 更新于 : 2024-10-03 16:39:27
  • 链接: https://blog.1l1.icu/2024/07/25/shi-yong-docker-bu-shu-tailscale-derp/
  • 版权声明: 本文章采用 CC BY-SA 4.0 进行许可。
 评论