文章目录
- 整体大纲
- 目的:为什么要建立 Derp 中转服务器
- 云服务器安装 Derp
-
- Derp 中转服务器介绍
- 安装 Go 环境
- 通过 Go 安装 Derp
- 处理证书文件
- 自签一个域名给 Derp
- 验证 Derp 是否启动
- 云服务器安装并登录 Tailscale
- 第一种组合: `官方 Tailscale 账号` + 自己的 `Derp` 中转
- 第二种组合:自建 Headscale + 自建 Derp (无域名版本)
- 其他的一些配置
-
- 自建 Derp 提供 IPv6 的支持(隧道版本,不推荐,延迟高)
- 防止 Derp 被白嫖(添加客户端验证)
- 参考
- 以上的操作命令合集
整体大纲
目的:为什么要建立 Derp 中转服务器
- 官方给你的公用服务器一般情况下不在大陆,所以延迟高
- 并且因为是公用的,可能会 拥挤,导致 不稳定
在大陆的情况下,为了降低延迟,提高带宽,所以要自建 Derp
云服务器安装 Derp
以下是个人的操作,仅供参考~
Derp 中转服务器介绍
Tailscale 使用的算法很有趣: 所有客户端之间的连接都是先选择 DERP 模式(中继模式),这意味着连接立即就能建立(优先级最低但 100% 能成功的模式),用户不用任何等待。然后开始并行地进行路径发现,通常几秒钟之后,我们就能发现一条更优路径,然后将现有连接透明升级(upgrade)过去,变成点对点连接(直连)
因此, DERP 既是 Tailscale 在 NAT 穿透失败时的保底通信方式(此时的角色与 TURN 类似),也是在其他一些场景下帮助我们完成 NAT 穿透的旁路信道。换句话说,它既是我们的保底方式,也是有更好的穿透链路时,帮助我们进行连接升级(upgrade to a peer-to-peer connection)的基础设施。
Tailscale 官方内置了很多 DERP 服务器,分步在全球各地,惟独不包含中国大陆,原因你懂得。这就导致了一旦流量通过 DERP 服务器进行中继,延时就会非常高。而且官方提供的 DERP 服务器是万人骑,存在安全隐患
安装 Go 环境
根据官方安装手册,需要先安装 go
先更新软件包列表,然后升级已安装的软件包
apt update && apt upgrade
等了大半年终于安完了,然后安装所需的软件,包括 wget、 git、 openssl、 curl
apt install -y wget git openssl curl
然后安装 go 语言(这里有一个坑,我没有安装最新版本的 go, 导致安装 Derp 的时候报错了,解决的办法就是 安装最新的 go,没关系可以继续往下看我是怎么处理的,你也可以在这里安装最新版的 go)
wget https://go.dev/dl/go1.20.5.linux-amd64.tar.gz
我这里的云服务器 linux 连不上这个网,所以在本地直接下载了,然后传到服务器上面
然后参考 go 官方的安装手册
运行这行代码
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.20.5.linux-amd64.tar.gz
这里的 go1.20.5.linux-amd64.tar.gz 需要写成你下载的 go 版本
然后临时添加到环境变量
export PATH=$PATH:/usr/local/go/bin
之后验证一下是否安装成功
go version
如果想要永久添加到环境变量中,可以这样做
echo \”export PATH=$PATH:/usr/local/go/bin\” >> /etc/profile
source /etc/profile
解释一下上面的操作:
- 虽然 export 命令和 source 命令都涉及修改 PATH,但它们的作用范围和持久性不同。
- export 只对当前 shell 会话有效。
- echo 命令将 export 命令写入配置文件,使其永久生效。
- source 命令则使配置文件中的更改立即生效。
通过 Go 安装 Derp
安装 Derp 的时候报错了
可以看到报错信息,让你匹配 go 1.23,我刚才安装的是1.20.5,没关系,在安装 go 的最新版本,去官网重新下载一个最新版(我当前的是 2024-11-19 号,最新版为 1.23.3)
然后安装,注意版本号,要是你当前最新的
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.23.3.linux-amd64.tar.gz
然后 go version 看一下版本,可以看到安装完之后是直接生效的,不用添加什么环境变量了,因为之前已经永久加过了
之后接着用 go 运行下载 Derp 的命令
go install tailscale.com/cmd/derper@latest
这里如果卡住不动的话,去切换一下 go 的镜像源
处理证书文件
安装好之后,我们要解决一下域名的校验问题
看一下这个路径下的证书文件
把框框中的三行代码注释掉
可以简单看一下,这是验证域名的用途,因为我们是没有域名,纯ip,所以这个地方注释掉,不要去校验
然后重新用 go 编译一下,并输出到指定目录
自签一个域名给 Derp
接着我们用命令自签一个 Https 的域名 derp.myself.com
cat > /etc/systemd/system/derp.service <<EOF
[Unit]
Description
评论前必须登录!
注册