虚拟组网实践方案Tailscale+国内Derp节点
最近使用的贝锐蒲公英突然变得不稳定了,时不时的连不上,还总是掉线,太影响心情,一气之下就给卸载了,卸载之后用什么呢?一番搜索后,觉得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,所以这里推荐大家使用安装包的方式安装。
# 若权限不够,请自行加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/amd642.安装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 tailscaled4.运行服务
需要注意的是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节点已经生效了,又可以愉快的玩耍了。

- 感谢你赐予我前进的力量

