云计算百科
云计算领域专业知识百科平台

Tailscale 自建 Derp 中转服务器(全程无 Docker + 无域名纯 IP 版本)

文章目录

  • 整体大纲
  • 目的:为什么要建立 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

赞(0)
未经允许不得转载:网硕互联帮助中心 » Tailscale 自建 Derp 中转服务器(全程无 Docker + 无域名纯 IP 版本)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!