一、准备工作
(一)所需材料
-
阿里云 ECS 服务器
- 建议选择公网 IP 稳定、配置中等的实例,推荐使用Debian 12系统
-
TailScale 账号
-
客户端设备
(二)防火墙放行
需放行以下端口:
UDP/3478
(用于 STUN 协议)
TCP/<PORT>
(自定义服务端口,需替换为实际端口号)
二、安装 Tailscale 客户端
1
| curl -fsSL https://tailscale.com/install.sh | sh
|
三、安装 Golang
(一)卸载旧版本(如有);
1
| sudo apt remove --autoremove -y golang
|
(二)下载并解压最新版本;
1 2 3 4 5 6 7 8 9 10 11 12
| # 替换为官网最新版本号(示例:go1.24.3)
wget https://dl.google.com/go/go1.24.3.linux-amd64.tar.gz #或者 wget https://go.dev/dl/go1.24.3.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.24.3.linux-amd64.tar.gz
rm go1.24.3.linux-amd64.tar.gz
|
(三)配置环境变量;
- 编辑系统配置文件:
在文件末尾添加:
1 2 3 4 5 6 7
| export GOROOT=/usr/local/go
export GOPATH=/usr/local/gopath
export GOBIN=\$GOPATH/bin
export PATH=\$PATH:\$GOROOT/bin:\$GOBIN
|
- 刷新环境变量并验证:
1 2 3
| source /etc/profile;
go version # 应输出类似 go version go1.24.3 linux/amd64
|
四、安装 Derper
1 2 3 4
| mkdir -p /opt/derper /usr/local/gopath/bin #如果你的服务器在境内,可以为Go配置代理加速 #go env -w GOPROXY=https://goproxy.cn,direct go install tailscale.com/cmd/derper@main
|
五、生成证书
1
| openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout <自定义路径>/<DOMAIN>.key -out <自定义路径>/<DOMAIN>.crt -subj "/CN=<DOMAIN>" -addext "subjectAltName=IP:<DOMAIN>"
|
说明:
- 首先生成证书,证书是必须的,因为tailscale走的SSL加密
<自定义路径>
证书保存路径在配置脚本的时候需要使用,例如/opt/certs/x.x.x.x.crt
六、配置脚本
(一)、创建脚本
路径:/opt/derper/runderper
1 2 3 4
| #!/bin/sh cd /usr/local/gopath/bin nohup ./derper --hostname="<DOMAIN>" -verify-clients -certmode manual -http-port -1 -a :<PORT> -certdir <自定义路径> > console.log 2>&1 & echo $! > app.pid
|
说明:
- 公共服务需移除
-verify-clients
参数
<DOMAIN>
替换为公网 IP 或域名
<PORT>
替换为防火墙放行的端口号
<自定义路径>
生成证书时候自定义的路径
(二)、创建停止脚本
路径:/opt/derper/stopderper
1 2 3
| #!/bin/sh kill `cat app.pid` rm -rf app.pid
|
(三)、赋予执行权限
说明:
(四)、创建服务
路径 /etc/systemd/system/derper.service
1 2 3 4 5 6 7 8 9 10 11
| [Unit] Description=Derper服务 After=network.target
[Service] Type=forking ExecStart=/opt/derper/runderper ExecStop=/opt/derper/stopderper
[Install] WantedBy=multi-user.target
|
(五)、设置开机自启并立即启动
1 2
| systemctl enable --now derper.service systemctl status derper.service # 检查运行状态
|
正常输出示例:
1 2 3 4 5 6 7 8 9 10 11 12 13
| ● derper.service - Derper服务 Loaded: loaded (/etc/systemd/system/derper.service; enabled; preset: enabled) Active: active (running) since Tue 2025-06-03 14:38:06 CST; 33min ago Process: 600 ExecStart=/opt/derper/runderper (code=exited, status=0/SUCCESS) Main PID: 614 (derper) Tasks: 7 (limit: 1965) Memory: 22.9M CPU: 91ms CGroup: /system.slice/derper.service └─614 ./derper --hostname=<DOMAIN> -certmode manual -http-port -1 -a :<PORT> -certdir <自定义路径>
Jun 03 14:38:06 iZ7xvheogbmlay0lurom7aZ systemd[1]: Starting derper.service - Derper服务... Jun 03 14:38:06 iZ7xvheogbmlay0lurom7aZ systemd[1]: Started derper.service - Derper服务.
|
七、添加到 Tailscale
(一)配置 DERP 节点映射
- 登录 Tailscale 管理界面找到
Access Controls
,点击直达
- 在 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 29 30 31 32
| { "acls": [ // ... ], "ssh": [ // ... ], // ... "derpMap": { "OmitDefaultRegions": true, // OmitDefaultRegions 用来忽略官方的中继节点 "Regions": { "901": { "RegionID": 901, // 900以上 "RegionCode": "china", // 随便填 "RegionName": "CN Cloud", // 随便填 "Nodes": [ { "Name": "1", // 随便填 "RegionID": 901, // 对应上方ID "HostName": "CN", / /这个随便填 "IPv4": "x.x.x.x", // 改成自己的IP "DERPPort": xxxx, // 自定义服务端口 "InsecureForTests": true, // 因为是自签名证书,所以客户端不做校验 }, ], }, // 更多DERP节点 }, }, // ... }
|
(二)自定义 IP 地址池(可选)
在 nodeAttrs
字段中添加 IP 池规则:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| { "acls": [ // ... ], "ssh": [ // ... ], // ... "derpMap": { // ... }, "nodeAttrs": [ { "target": ["autogroup:admin"], "ipPool": ["100.88.0.0/16"], }, { "target": ["group:dev"], "ipPool": ["100.85.0.0/16"], }, ], }
|
注意:禁止使用 Tailscale 保留 IP 段:
100.100.0.0/24
100.100.100.0/24
100.115.92.0/23
八、验证与调试
- 检查客户端连接状态:
1 2 3
| tailscale status tailscale netcheck # 查看是否识别到自定义 DERP 节点 tailscale ping xxxx # ping客户端是否连接,xxxx为客户端名
|