搭建 Tailscale DERP 服务器教程
Tailscale DERP(Distributed, Encrypted, and Resilient Packet Relay)服务器是 Tailscale 网络中用于中继流量的组件,尤其适用于网络环境复杂或直连困难的场景,但是国内网络连接官方提供的derp服务器时普遍存在延迟高,速度慢,甚至几乎无法使用的情况。所以产生了自建私有derp流量中转服务器的需求,以便在p2p无法直连打洞成功的场景下能够实现和使用低延迟,高速度的tailscale流量中继服务。以下是使用 Docker 搭建 Tailscale DERP 服务器的详细步骤:
环境准备
- 操作系统:推荐使用 Linux 系统,如 Ubuntu、Debian 等,因为 Docker 在 Linux 上的性能和兼容性更佳。
- Docker 环境:确保已安装 Docker。可以通过运行
docker --version
命令来检查 Docker 是否已安装。 - Tailscale 客户端:在宿主机上安装并启动 Tailscale 客户端,以便 DERP服务器能够与 Tailscale 网络通信。
- 网络配置:确保服务器的网络配置正确,能够正常访问外网,且对应的端口没有被防火墙阻止。
搭建步骤
1. 安装并启动 Tailscale 客户端
在宿主机上安装 Tailscale 客户端,并启动它。安装方法因操作系统而异,具体可以参考 Tailscale 官方文档。
启动 Tailscale 客户端后,它会在 /var/run/tailscale
目录下创建一个名为 tailscaled.sock
的套接字文件。
2. 拉取 Docker 镜像
从 Docker Hub 拉取 javaow/tailscale-derp
镜像。该镜像已经包含了搭建 DERP服务器所需的全部依赖和配置。
docker pull javaow/tailscale-derp
3. 运行 DERP服务器容器
使用以下命令启动 DERP服务器容器。该命令会将 DERP服务器映射到宿主机的指定端口,并挂载必要的文件和目录。
docker run -d \
--name tailscale-derp \
-p 0.0.0.0:59443:36666 \
-p 0.0.0.0:3478:3478/udp \
-v /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock \
javaow/tailscale-derp \
./derper \
-hostname "derp.javaow.com" \
-a ":36666" \
-certmode "manual" \
-certdir "/ssl" \
--verify-clients
参数解释
-d
:后台运行容器。--name tailscale-derp
:指定容器名称为tailscale-derp
。-p 0.0.0.0:59443:36666
:将容器的 36666 端口映射到宿主机的 59443 端口,允许外部访问。-p 0.0.0.0:3478:3478/udp
:将容器的 3478 端口映射到宿主机的 3478 端口,用于 UDP 通信。-v /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock
:将宿主机的 Tailscale 套接字文件挂载到容器中,以便 DERP服务器与 Tailscale 守护进程通信。javaow/tailscale-derp
:指定使用的 Docker 镜像。./derper
:指定容器启动时运行的命令。-hostname "derp.javaow.com"
:设置 DERP服务器的主机名。-a ":36666"
:指定 DERP服务器监听的端口。-certmode "manual"
:指定证书模式为手动。-certdir "/ssl"
:指定证书目录。--verify-clients
:启用客户端验证。
4. 验证 DERP服务器状态
启动容器后,可以通过以下命令查看 DERP服务器的运行状态:
docker logs tailscale-derp
如果看到类似 DERP server started
的日志信息,表示 DERP服务器已成功启动。
5. 配置 Tailscale 客户端
在 Tailscale 客户端的配置文件中,添加自建 DERP服务器的信息。具体配置方法如下:
{
"derpMap": {
"OmitDefaultRegions": false,
"Regions": {
"910": {
"RegionID": 910,
"RegionCode": "自建节点(名称)",
"Nodes": [
{
"Name": "910",
"RegionID": 910,
"HostName": "宿主机IP",
"InsecureForTests": true,
"DERPPort": 59443
}
],
"RegionName": "自建节点(名称)"
}
}
}
}
将 宿主机IP
替换为 DERP服务器的实际 IP 地址。
注意事项
- 端口映射:确保宿主机的 59443(tcp) 和 3478(udp) 端口没有被其他服务占用,并且防火墙允许外部访问这些端口。
版权属于:DeepFal
本文链接:https://blog.deepfal.cn/index.php/archives/945/
转载时须注明出处及本声明