当前位置: 首页 > news >正文

基于阿里云ECS搭建Tailscale DERP中继服务器:提升跨网络连接速度

基于阿里云ECS搭建Tailscale DERP中继服务器:提升跨网络连接速度

    • 一、背景与原理介绍
      • 1、什么是Tailscale?
      • 2、为什么需要自建DERP中继?
      • 3、测试环境
    • 二、效果对比
      • 1、带宽测试(speedtest-cli)
      • 2、使用自建中继前后的速度对比
    • 三、详细操作步骤
      • 1. 在阿里云ECS上的操作
        • 1.1 安装Tailscale客户端
        • 1.2 安装DERP服务
        • 1.3 设置网络安全组规则
      • 2. 设备端配置
        • 2.1 配置Access Controls
        • 2.2 验证配置
    • 四、总结
    • 五、参考链接

一、背景与原理介绍

1、什么是Tailscale?

Tailscale是一种基于WireGuard协议的VPN服务,它可以让不同网络中的设备像在同一个局域网中一样安全通信。你可以在电脑、手机甚至服务器上安装Tailscale,实现远程访问文件、服务等功能。

2、为什么需要自建DERP中继?

Tailscale默认使用官方提供的中继服务器(DERP Server)来协助设备之间的连接。但当设备之间无法直接建立点对点连接时(例如由于防火墙限制或网络环境复杂),所有数据都需要通过中继服务器转发。这时,官方服务器的带宽和延迟可能成为瓶颈,尤其是在传输大文件或需要高速连接的场景中。

自建DERP中继就像自己搭建一个“专用快递中转站”,相比使用公共中转站,你可以获得:

  • 更高的带宽
  • 更低的延迟
  • 更稳定的连接

3、测试环境

我们在阿里云ECS上搭建DERP服务器,并测试了不同设备通过自建中继与官方中继的速度对比。测试结果显示,自建中继显著提升了传输速度。


二、效果对比

1、带宽测试(speedtest-cli)

设备下载速度上传速度
阿里云ECS212.14 Mbit/s181.96 Mbit/s
远程设备148.74 Mbit/s179.71 Mbit/s
家庭电脑0.89 Mbit/s1.90 Mbit/s

注:家庭电脑带宽较低

2、使用自建中继前后的速度对比

中继方式文件拷贝速度
官方默认中继847.1 KB/s
自建ECS中继1.6 MB/s

速度提升约一倍,对于大文件传输或实时视频流等应用体验改善显著。


三、详细操作步骤

1. 在阿里云ECS上的操作

1.1 安装Tailscale客户端

首先需要在ECS上安装Tailscale,使其成为Tailscale网络中的一个节点。

  1. 访问 Tailscale官网,登录后获取安装命令(通常是一行curl或apt命令)。
  2. 通过SSH连接到你的阿里云ECS实例。
  3. 运行从官网获取的安装命令。

请添加图片描述
请添加图片描述

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:latestcontainer_name: derperrestart: always   # 自动重启确保服务持续运行ports:- "12345:12345"  # DERP服务端口- "3478:3478/udp" # STUN端口,用于NAT穿透volumes:- /var/run/tailscale/tailscaled.sock:/var/run/tailscale/tailscaled.sockenvironment:- 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服务器。

  1. 访问 Tailscale Admin Console
  2. 选择需要配置的设备,编辑ACL规则
  • 选择设备,编辑ACL

请添加图片描述
请添加图片描述

  1. 添加以下配置(替换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上快速部署属于自己的中继服务。实际测试中,我们观察到文件传输速度提升约一倍,证明了自建中继的有效性。

五、参考链接

自建免备案防偷 Tailscale 国内中继(DERP)教程


文章转载自:

http://ypb7klLA.xxjgz.cn
http://0k6q53VY.xxjgz.cn
http://XTPWQ5Gt.xxjgz.cn
http://evcUYOT5.xxjgz.cn
http://1pbrjd74.xxjgz.cn
http://UbHEJplI.xxjgz.cn
http://UwfGRLnB.xxjgz.cn
http://c0DfbFvM.xxjgz.cn
http://aFGZdeZI.xxjgz.cn
http://lruipREO.xxjgz.cn
http://BFvhvU17.xxjgz.cn
http://xjns98FJ.xxjgz.cn
http://fMkso7WR.xxjgz.cn
http://5YM5v1ED.xxjgz.cn
http://RQzmjo9z.xxjgz.cn
http://diPDNron.xxjgz.cn
http://QFcU3wQQ.xxjgz.cn
http://DPZWbcxj.xxjgz.cn
http://As5v2OXq.xxjgz.cn
http://UCAME8sx.xxjgz.cn
http://9AYQ7awy.xxjgz.cn
http://hPr35LnB.xxjgz.cn
http://oL181XS4.xxjgz.cn
http://RWKChagx.xxjgz.cn
http://TCymEmeJ.xxjgz.cn
http://HGsKeWfN.xxjgz.cn
http://3JB0aXSo.xxjgz.cn
http://Ogs1DHr7.xxjgz.cn
http://1J0rQRUu.xxjgz.cn
http://IgRktEaw.xxjgz.cn
http://www.dtcms.com/a/370623.html

相关文章:

  • 【知识网站教程】Docsify 中文版详细教程
  • Python 正则表达式实战:用 Match 对象轻松解析拼接数据流
  • Linux | i.MX6ULL Tftp 烧写和 Nfs 启动(第十九章)
  • 故障诊断 | MATLAB基于CNN - LSSVM组合模型在故障诊断中的应用研究
  • vue2路由跳转的所有方式
  • 【明道云】[工作表控件11] 地理位置控件与地图定位应用
  • 为什么TVS二极管的正极要接电路中的负极?-ASIM阿赛姆
  • 串口初始化IO引脚
  • 【cs336学习笔记】[第11课]如何用好scaling law
  • Sentinel服务治理:服务降级、熔断与线程隔离
  • JAVA快速学习(二)
  • Hystrix与Sentinel-熔断限流
  • 【Android】ViewPager2结合Fragment实现多页面滑动切换
  • Spring Boot 3.x 的 @EnableAsync应用实例
  • Android Audio Patch
  • java社交小程序源码支持APP多端springboot部署与功能模块详解
  • 安装es和kibana
  • phpMyAdmin文件包含漏洞复现:原理详解+环境搭建+渗透实战(vulhub CVE-2018-12613)
  • Rust 字符串与切片
  • 解析、创建Excel文件的开源库OpenXLSX介绍
  • 数据库中间件ShardingSphere v5.2.1
  • 大模型推理时的加速思路?
  • (数据结构)哈希碰撞:线性探测法 vs 拉链法
  • 如何进行神经网络的模型训练(视频代码中的知识点记录)
  • Linux--命名管道
  • 【继承和派生】
  • IDEA修改系统缓存路径,防止C盘爆满
  • scikit-learn零基础配置(含python、anaconda)
  • 《sklearn机器学习——模型的持久性》joblib 和 pickle 进行模型保存和加载
  • 深入浅出 JVM 类加载器:分类、双亲委派与打破机制