Tailscale搭建derp中继节点

Tailscale无域名搭建derp中继节点

系统信息

阿里云 Debian 12 (64-bit)

安装tailscale

  • 如果不需要开启 --verify-clients防止被蹭就无需安装tailscale

Install Tailscale on Linux

启动

  • 因为tailscale和阿里云有dns冲突问题所以不能直接sudo tailscale up
1
sudo tailscale down && sudo tailscale up --netfilter-mode=nodivert --accept-dns=false

安装golang

1
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.25.3.linux-amd64.tar.gz

给当前用户添加golang环境变量

1
vim .profile

末尾添加

1
export PATH=$PATH:/usr/local/go/bin

当即生效

1
source $HOME/.profile

能显示go version go1.25.3 linux/amd64表示环境变量添加正常

1
go version

配置golang代理

1
go env -w GOPROXY=https://goproxy.cn,direct

安装derper

1
go install tailscale.com/cmd/derper@main

拷贝derper到任意目录

1
sudo cp ~/go/bin/derper /usr/local/go/bin/

创建目录

1
mkdir cert

生成ip证书 DERP_IP为自己ip

1
2
3
4
5
DERP_IP="1.1.1.1"
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
-keyout cert/${DERP_IP}.key \
-out cert/${DERP_IP}.crt \
-subj "/CN=${DERP_IP}" -addext "subjectAltName=IP:${DERP_IP}"

使用Systemd运行derper

创建 Systemd 服务文件

1
sudo vim /etc/systemd/system/derper.service

填入配置

 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
[Unit]
Description=Tailscale Derper Relay Server
After=network.target

[Service]
# Type=simple 是最常用的类型,适用于大多数服务
Type=simple

# **** 替换为您的 derper 绝对路径和参数 ****
# ExecStart 必须使用绝对路径
# 注意:我们这里不需要 sudo,因为 systemd 默认会以 root 权限运行服务
ExecStart=/usr/local/go/bin/derper --hostname="1.1.1.1" -certmode manual -certdir /home/ecs-user/cert -c /home/ecs-user/cert/derper.key

# 工作目录,确保相对路径(如果使用)能找到文件
WorkingDirectory=/home/ecs-user

# 可选:如果服务失败,自动重启
Restart=always
RestartSec=5

# 可选:降低权限运行(如果不需要 root 权限)
# User=derperuser
# Group=derpergroup

[Install]
WantedBy=multi-user.target

重新加载 systemd 配置

1
sudo systemctl daemon-reload

启动服务

1
sudo systemctl start derper.service

检查服务状态 (查看日志):

1
2
sudo systemctl status derper.service
sudo journalctl -u derper.service -f

设置开机自启 (持久化):

1
sudo systemctl enable derper.service
  • 需要打开服务器TCP的80、443端口,UDP的3478端口
  • 访问浏览器可以看到derp页面就代表部署成功了

在tailscale控制台添加配置

1
https://login.tailscale.com/admin/acls/file
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
	"derpMap": {
		//"OmitDefaultRegions": true,  //加入这个会只用自己的节点
		"Regions": {
			"901": {
				"RegionID":   901,
				"RegionCode": "hz",
				"RegionName": "阿里云",
				"Nodes": [
					{
						"Name":             "901a",
						"RegionID":         901,
						"HostName":         "aaa", //这个随便写
						"IPv4":             "1.1.1.1", //改成自己的IP
						"InsecureForTests": true,
					},
				],
			},
		},
	},

现在在节点终端运行tailscale netcheck可以看到自己部署的derp服务器

References