最近使用的贝锐蒲公英突然变得不稳定了,时不时的连不上,还总是掉线,太影响心情,一气之下就给卸载了,卸载之后用什么呢?一番搜索后,觉得Easytier挺好的,一看gitHub,奈何不支持IOS,只能含泪放弃,又结合自己要在IOS端使用的需求,最终选择了 Tailscale + 自建国内Derp节点这个方案。

部署之后,实际使用下来,效果超乎自己的意料,所以速来与广大网友分享一下,咱们废话不多说,一起来了解并实践这个方案吧。

基础使用

Tailscale 简介

Tailscale 是一款基于 WireGuard 协议的虚拟专用网络(VPN)工具,它能将分布在不同位置的设备(如电脑、服务器、NAS 等)连接到一个统一的虚拟局域网中。它通过点对点(P2P)连接,提供安全的、无需配置的远程访问,无需公网 IP 或端口转发,并且对个人用户免费

Tailscale 注册

注册传送阵 Tailscale Login,之前没用过的朋友们需要注册一下,如果要在IOS设备上使用,这里推荐使用苹果账户或者微软账号注册,谷歌没梯子上不去,GitHub实测访问不稳定,时快时慢,登录时可能会有困难,不介意的网友们可以使用(这是一号坑)

Tailscale 下载

下载传送阵 Tailscale,下载对应的客户端,博主这里使用的是 Windows 和 IOS,Windows正常下载安装就行,登录之后Tailscale会自动把当前电脑加入自己的虚拟网络中,可以在Machines菜单中查看,IOS可以通过微信扫描官方二维码,会跳转至苹果应用商店,这里需要美区ID(这是二号坑),国内商店搜不到。

好了,Windows和IOS都下载安装,登录之后,至目前为止,你的虚拟组网已经大功告成了,到这里完全免费,但是Tailscale的节点大部分都在国外,国内使用延迟挺高的,嗯基本上就是下面这样,如果介意的朋友可以继续往下实践。

进阶使用

为了解决上面延迟的问题,我们可以使用官方提供的自建国内Derp节点的方案,如果此时你的手头刚好一台国内的服务器,那刚好可以利用起来,刚好博主有一台阿里的云服务器,系统是 Debian12,就用这个来实践一下吧。

安装步骤

1.检查并安装go-lang

这里需要注意的是安装derper需要先go-lang,且go-lang版本要不低于1.23(这是三号坑),博主使用apt-get默认安装的go-lang为1.19,所以这里推荐大家使用安装包的方式安装。

go安装包下载传送阵

go官网安装传送阵

# 若权限不够,请自行加sudo提权

# 先检查系统是否有go-lang
go version
# ----------------------------------------------------------
# 如果系统已经有go-lang环境,且小于1.23,需要先卸载
rm -rf /usr/local/go

# ----------------------------------------------------------
# 如果没有则直接下载go-lang安装包进行安装,版本不低于1.23就行,博主这里用的1.23.5
wget https://go.dev/dl/go1.23.5.linux-amd64.tar.gz

# 解压
tar -C /usr/local/ -xzf go1.25.4.linux-amd64.tar.gz 

# 将go加入环境变量
vim ~/.bashrc
# 添加以下内容
export PATH=$PATH:/usr/local/go/bin

# 重新加载
source ~/.bashrc

# ----------------------------------------------------------
go version

# 输出就可以了
go version go1.25.4 linux/amd64

2.安装derper

官网传送阵custom-derp-servers,使用go安装derper,安装前需要先换国内源,不然会很慢,甚至无法下载(这是四号坑)

# go换源
# 国内的开源镜像站点 goproxy.cn
# go中国 www.gochina.io
# 阿里云镜像 mirrors.aliyun.com/goproxy/
go env -w GOPROXY=https://goproxy.cn,direct
# 检查一下
go env

# 安装 derper
go install tailscale.com/cmd/derper@latest

# 加入环境变量
cp ~/go/bin/derper /usr/bin/

3.安装 tailscale

官网传送阵 Install Tailscale,官网中 tailscale up 这一步是登录,登录之后会把当前的云服务器也加入到虚拟网络中,如果只是自建derper节点,则这一步我们不需要,云服务器登录之后,可能会导致服务器断连(五号坑)。

# 添加 Tailscale 的包签名密钥和存储库
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/bionic.gpg | sudo apt-key add -
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/bionic.list | sudo tee /etc/apt/sources.list.d/tailscale.list

# 安装 tailscale
sudo apt-get update
sudo apt-get install tailscale

# 开机自启 
systemctl enable tailscaled
# 启动
systemctl start tailscaled
# 查看状态
systemctl status tailscaled

4.运行服务

需要注意的是derper使用的端口,云服务器安全组或者防火墙需要放行对应的端口,网上有些教程会加 -verify-clients 参数,这个参数加完之后,控制台会输出报错(六号坑),所以博主把这个参数去掉了

感兴趣的朋友可以参考这个 issure

# hostname 云服务器的公网IP,certdir  证书存放和使用的目录,执行命令会自动生成证书
derper --hostname="xxx.xxx.xxx.xxx" -certmode manual -certdir /software/tailscale/  -http-port -1 -a :9003 -stun-port 9004

回车后得到如下输出

5.tailscale官网配置

将HostName、IPv4替换为对应公网IP,将CertName替换为命令输出的CertName,拼接为如下Json。

回到tailscale官网,在 Access controls 中加入以下配置。

"derpMap": {
		"OmitDefaultRegions": true,
		"Regions": {
			"900": {
				"RegionID":   900,
				"RegionCode": "hongkong",
				"RegionName": "TX Cloud",
				"Nodes": [
					{
						"Name":     "custom",
						"RegionID": 900,
						"HostName": "xxx.xxx.xxx.xxx.xxx",
						"DERPPort": 9003,
						"STUNPort": 9004,
						"CertName": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
						"IPv4":     "xxx.xxx.xxx.xxx.xxx",
					},
				],
			},
		},
	}

验证节点

tailscale netcheck

tailscale ping 100.109.222.58

通过延时时间可以看出,我们自建的derper节点已经生效了,又可以愉快的玩耍了。