基于阿里云ECS搭建Tailscale DERP中继服务器:提升跨网络连接速度
一、背景与原理介绍
1、什么是Tailscale?
Tailscale是一种基于WireGuard协议的VPN服务,它可以让不同网络中的设备像在同一个局域网中一样安全通信。你可以在电脑、手机甚至服务器上安装Tailscale,实现远程访问文件、服务等功能。
2、为什么需要自建DERP中继?
Tailscale默认使用官方提供的中继服务器(DERP Server)来协助设备之间的连接。但当设备之间无法直接建立点对点连接时(例如由于防火墙限制或网络环境复杂),所有数据都需要通过中继服务器转发。这时,官方服务器的带宽和延迟可能成为瓶颈,尤其是在传输大文件或需要高速连接的场景中。
自建DERP中继就像自己搭建一个“专用快递中转站”,相比使用公共中转站,你可以获得:
- 更高的带宽
- 更低的延迟
- 更稳定的连接
3、测试环境
我们在阿里云ECS上搭建DERP服务器,并测试了不同设备通过自建中继与官方中继的速度对比。测试结果显示,自建中继显著提升了传输速度。
二、效果对比
1、带宽测试(speedtest-cli)
设备 | 下载速度 | 上传速度 |
---|---|---|
阿里云ECS | 212.14 Mbit/s | 181.96 Mbit/s |
远程设备 | 148.74 Mbit/s | 179.71 Mbit/s |
家庭电脑 | 0.89 Mbit/s | 1.90 Mbit/s |
注:家庭电脑带宽较低
2、使用自建中继前后的速度对比
中继方式 | 文件拷贝速度 |
---|---|
官方默认中继 | 847.1 KB/s |
自建ECS中继 | 1.6 MB/s |
速度提升约一倍,对于大文件传输或实时视频流等应用体验改善显著。
三、详细操作步骤
1. 在阿里云ECS上的操作
1.1 安装Tailscale客户端
首先需要在ECS上安装Tailscale,使其成为Tailscale网络中的一个节点。
- 访问 Tailscale官网,登录后获取安装命令(通常是一行curl或apt命令)。
- 通过SSH连接到你的阿里云ECS实例。
- 运行从官网获取的安装命令。
1.2 安装DERP服务
我们使用Docker来部署DERP服务,这样可以简化依赖管理和维护。
# 拉取DERP Docker镜像
docker pull ghcr.io/yangchuansheng/ip_derper:latest
# 创建docker-compose.yml配置文件
cat > docker-compose.yml << 'EOF'
services:
derper:
image: ghcr.io/yangchuansheng/ip_derper:latest
container_name: derper
restart: always # 自动重启确保服务持续运行
ports:
- "12345:12345" # DERP服务端口
- "3478:3478/udp" # STUN端口,用于NAT穿透
volumes:
- /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sock
environment:
- DERP_ADDR=:12345 # 服务监听端口
- DERP_CERTS=/app/certs # 证书目录
- DERP_VERIFY_CLIENTS=true # 只允许Tailscale网络内的设备连接
EOF
# 启动服务
docker compose up -d
1.3 设置网络安全组规则
在阿里云控制台配置安全组,开放相关端口:
- TCP 12345端口:DERP服务主要通信端口
- UDP 3478端口:STUN服务,用于NAT穿透
2. 设备端配置
2.1 配置Access Controls
需要在Tailscale的ACL(访问控制列表)中指定使用自建的DERP服务器。
- 访问 Tailscale Admin Console
- 选择需要配置的设备,编辑ACL规则
- 选择设备,编辑ACL
- 添加以下配置(替换
ECS公网IP地址
为你的实际IP):
"derpMap": {
"OmitDefaultRegions": true, // 禁用官方DERP服务器
"Regions": {
"900": {
"RegionID": 900,
"RegionCode": "ecs_derp",
"RegionName": "ecs_derp",
"Nodes": [
{
"Name": "ecs_derp",
"RegionID": 900,
"IPv4": "ECS公网IP地址", // 替换为你的ECS公网IP
"DERPPort": 12345, // 与docker-compose中配置一致
"InsecureForTests": true,
},
],
},
},
},
2.2 验证配置
在远程设备上运行以下命令检查连接状态:
tailscale netcheck
此命令会显示当前使用的DERP服务器和连接状态。
如果显示正在使用你的ECS服务器作为DERP节点,说明配置成功。
四、总结
自建Tailscale DERP中继服务器可以显著提升跨网络设备的连接速度,特别适合以下场景:
- 需要频繁传输大文件
- 实时视频流或远程桌面
- 对网络延迟敏感的应用
通过本文介绍的步骤,你可以在阿里云ECS上快速部署属于自己的中继服务。实际测试中,我们观察到文件传输速度提升约一倍,证明了自建中继的有效性。