侧边栏壁纸
  • 累计撰写 35 篇文章
  • 累计创建 16 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

部署私有 Tailscale DERP 中继服务器

xlove
2025-01-25 / 0 评论 / 0 点赞 / 235 阅读 / 1,124 字

准备工作

tailscale 账号,并在你的设备上安装客户端并登录(windows,MacOS,Linux,openwrt,Android,iOS等均支持)
一台有公网IP的云服务器,最好是境内的。如果没有,可以去买一个服务器,推荐买个云厂商的99元轻量服务器即可。(阿里云,腾讯云等
将公网服务器的防火墙打开如下端口及对应协议:33445(TCP),33446(TCP), 3478(UDP)

开始操作

注意,我的主机是系统版本是 Ubuntu22.04,如果不对可以参考思路,但方式都是类似的。

公网服务器

通过SSH连接到你的公网服务器上(或者你可以去云厂商在控制面板提供的一键登录之类的功能)

(方法1)用tailscale 的软件

按照这个shell 的操作命令一行一行运行即可

# 更新软件包列表 & 升级系统
sudo apt update && sudo apt upgrade -y

# 安装基本依赖
sudo apt install -y wget git openssl curl

# 下载Golang,我使用的是x86_64版本,您也可以根据需要选择合适的版本 [All releases - The Go Programming Language](https://go.dev/dl/) 
wget https://go.dev/dl/go1.22.3.linux-amd64.tar.gz

# 删除旧的Golang并解压新的内容
sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.22.3.linux-amd64.tar.gz 

# 配置环境变量
export PATH=$PATH:/usr/local/go/bin

# 检查Golang是否安装成功
go version

# 配置Golang环境(国外服务器可跳过)
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

# 安装Tailscale Derper
go install tailscale.com/cmd/derper@main

# 创建 /etc/derp 文件夹并赋予权限,以便后续修改文件重新编译到这里
sudo mkdir -p /etc/derp/
sudo chmod 777 /etc/derp/

# 编译文件到指定文件夹
cd ~/go/pkg/mod/tailscale.com@v1.67.0-pre.0.20240527202236-f1d10c12acf6/cmd/derper

sudo chmod 777 ./cert.go

sudo vi cert.go

image-1737775585345

我这里是使用的 sudo vi cert.go 找到对应行之后输入 i 进入 insert 模式,然后双斜线注释后再按 esc 键输入:wq (保存并退出编辑)

修改完成后,继续执行命令

# 编译文件到之前创建的文件夹
go build -o /etc/derp/derper

# 生成SSL证书
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes -keyout /etc/derp/derp.myself.com.key -out /etc/derp/derp.myself.com.crt -subj "/CN=derp.myself.com" -addext "subjectAltName=DNS:derp.myself.com"

# 创建derp.service
sudo sh -c "cat > /etc/systemd/system/derp.service <<EOF
[Unit]
Description=TS Derper
After=network.target
Wants=network.target
[Service]
User=root
Restart=always
ExecStart=/etc/derp/derper -verify-clients -hostname derp.myself.com -a :33445 -http-port 33446 -certmode manual -certdir /etc/derp
RestartPreventExitStatus=1
[Install]
WantedBy=multi-user.target
EOF
"

# 启动服务
sudo systemctl enable derp
sudo systemctl start derp

(方法2)Docker 安装

docker run -d \
-p 3478:3478/udp \
-p 33445:33445 \
--name derper \
--restart=always \
-v /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock \
-e DERP_ADDR=":33445" \
-e DERP_VERIFY_CLIENTS=true \
ghcr.io/yangchuansheng/ip_derper

Tailscale ACL修改

前往Tailscale管理端的访问控制页面,进行修改

注意:

修改IPv4端口内容,配置内容参考如下。
我这里使用的区域是902,您可以选择类似的数字,只要不报错即可。
ACL 内容参考

"derpMap": {
		"OmitDefaultRegions": true,
		"Regions": {
			"901": {
				"RegionID":   901,
				"RegionCode": "Myself",
				"RegionName": "Myself Derper",
				"Nodes": [
					{
						"Name":             "901a",
						"RegionID":         901,
						"DERPPort":         33445,
						"IPv4":   "服务器IP",
						"InsecureForTests": true,
					},
				],
			},
		},
	},
 
 

image-1737775691464

本地验证

# 检查状态 ,返回的数据中显示了配置就算成功了。
tailscale netcheck 

image-1737775722117

如果你发现有显示名称但是没有延迟多少毫秒,例如 99.9ms 则说明你没开公网云服务器的3478端口

参考

Tailscale玩法之内网穿透、异地组网、全隧道模式、纯IP的双栈DERP搭建、Headscale协调服务器搭建,用一期搞定,看一看不亏吧?_哔哩哔哩_bilibili

NAT 穿透是如何工作的:技术原理及企业级实践(Tailscale, 2020)

Derp服务搭建 让Tailscale/HeadScale飞起来_哔哩哔哩_bilibili

Custom DERP Servers · Tailscale

Tailscale基础教程:部署私有DERP中继服务器 – 云原生实验室 - Kubernetes|Docker|Istio|Envoy|Hugo|Golang|云原生

更好更快的的家庭组网,自建 Tailscale DERP服务(IPv4)

Tailscale 基础教程:部署私有 DERP 中继服务器

0

评论区