返回首页

MTProto 代理(Fake TLS):在 VPS 上绕过 Telegram 封锁

学习如何使用 Docker 在 VPS 上快速部署自己的 MTProto 代理(Fake TLS)。详细指南,确保稳定且安全的 Telegram 访问,绕过任何封锁。

部署 MTProto 代理(Fake TLS)以绕过 Telegram 封锁
Advertisement 728x90

# 部署带 Fake TLS 的 MTProto 代理:实现 Telegram 稳定访问的详尽指南

在互联网审查和封锁日益严峻的时代,确保稳定、安全地访问即时通讯应用已成为许多用户的首要任务。结合 Fake TLS 技术的 MTProto 代理,提供了一种有效绕过这些限制的解决方案。本指南将详细介绍如何使用 Docker 和 VPS 在短短几分钟内部署您自己的代理服务器。这种设置能将 Telegram 流量伪装成常规 HTTPS 流量,从而使其更难被检测和封锁。

MTProto 代理和 Fake TLS 的工作原理

MTProto 代理是由 Telegram 团队开发的一种专用代理服务器,它利用为即时通讯应用操作优化的 MTProto 协议,确保了高速和抗干扰能力。其主要目的是通过中间服务器路由 Telegram 流量,从而绕过对该应用施加的直接 IP 地址或域名封锁。

Fake TLS(传输层安全)是 MTProto 代理的一个关键补充,显著提升了其在主动封锁环境中的有效性。这项技术允许将 MTProto 流量伪装成标准的 HTTPS 流量,后者通常用于网站的安全连接。配置了 Fake TLS 的代理服务器会模拟与合法域名(例如 ya.rugoogle.com)的常规 HTTPS 连接。对于外部监控系统而言,这种流量看起来就像普通的网页浏览,因此极难被检测和过滤。MTProto 代理密钥中的特殊 ee 前缀会向 Telegram 客户端发出信号,指示其使用 Fake TLS 模式,从而提供额外的混淆层。

Google AdInline article slot

部署准备

要成功部署带 Fake TLS 的 MTProto 代理,需要以下几个组件。选择一个可靠的虚拟私人服务器(VPS)提供商至关重要,因为代理的稳定性和速度都取决于它。

VPS 最低系统要求:

  • 操作系统: 推荐使用 Ubuntu 20.04、22.04 或 24.04 LTS(长期支持版),因为它稳定且软件包保持最新。不过,该脚本也兼容其他支持 Docker 的 Linux 发行版。
  • 内存: 512 MB 或更高。此内存量足以满足 MTProto 代理 Docker 容器的基本运行。
  • 磁盘空间: 5 GB 或更高。用于操作系统、Docker 和容器日志。
  • 已安装 Docker: Docker 容器化系统是 MTProto 代理在隔离环境中运行的基础。

在 Ubuntu 上安装 Docker

如果您的 VPS 上尚未安装 Docker,请执行以下命令。这些命令将更新软件包列表,安装必要的依赖项,以及 Docker 引擎本身。

Google AdInline article slot
sudo apt update && sudo apt upgrade -y
sudo apt install docker.io -y

Docker 安装完成后,建议使用命令 sudo systemctl status docker 检查其状态,以确保服务正在运行且处于活动状态。

自动化 MTProto 代理部署

为了简化部署过程,我们提供了一个 Bash 脚本,它能自动化所有步骤:从密钥生成到启动 Docker 容器并输出连接信息。这种方法最大限度地减少了出错的可能性,并将设置时间缩短到仅仅几分钟。

创建并运行安装脚本

  • 创建脚本文件: 在您的 VPS 上,使用 nano 文本编辑器创建一个新文件,例如 start-mtproxy.sh

```bash

Google AdInline article slot

nano start-mtproxy.sh

```

  • 插入脚本代码: 复制以下代码并粘贴到创建的文件中。保存更改(Ctrl+O,回车,Ctrl+X)。

```bash

#!/bin/bash

用于美观输出的颜色

GREEN='\033[0;32m'

RED='\033[0;31m'

YELLOW='\033[1;33m'

BLUE='\033[0;34m'

NC='\033[0m'

CONTAINER_NAME="mtproto-proxy"

PORT="443"

FAKE_DOMAIN="ya.ru" # 用于 Fake TLS 的固定域名

echo "🚀 启动带 Fake TLS 的 MTProto 代理"

echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"

echo -e "📌 使用域名: ${BLUE}${FAKE_DOMAIN}${NC}"

正在生成 Fake TLS 密钥...

echo -n "🔑 正在生成 Fake TLS 密钥... "

获取 ya.ru 域名的十六进制表示

DOMAIN_HEX=$(echo -n $FAKE_DOMAIN | xxd -ps | tr -d '\n')

echo -e "\n 域名十六进制: ${DOMAIN_HEX}"

用随机字符填充至 30 个字符

DOMAIN_LEN=${#DOMAIN_HEX}

NEEDED=$((30 - DOMAIN_LEN))

RANDOM_HEX=$(openssl rand -hex 15 | cut -c1-$NEEDED)

组合密钥

SECRET="ee${DOMAIN_HEX}${RANDOM_HEX}"

echo -e " 随机填充: ${RANDOM_HEX}"

echo -e " 密钥: ${YELLOW}${SECRET}${NC}"

echo " 长度: ${#SECRET} 字符"

检查端口 443

echo -n "🔍 检查端口 ${PORT}... "

if ss -tuln | grep -q ":${PORT} "; then

echo -e "${YELLOW}端口已被占用${NC}"

# 寻找备用端口

for alt_port in 8443 8444 8445; do

if ! ss -tuln | grep -q ":${alt_port} "; then

PORT=$alt_port

echo " 使用端口: ${PORT}"

break

fi

done

else

echo -e "${GREEN}空闲${NC}"

fi

停止旧容器(如果存在)

echo -n "🛑 正在停止旧容器... "

sudo docker stop ${CONTAINER_NAME} >/dev/null 2>&1

sudo docker rm ${CONTAINER_NAME} >/dev/null 2>&1

echo -e "${GREEN}完成${NC}"

启动 Telegram 官方代理

echo -n "📦 正在启动容器... "

sudo docker run -d \

--name ${CONTAINER_NAME} \

--restart unless-stopped \

-p ${PORT}:443 \

-e SECRET="${SECRET}" \

telegrammessenger/proxy > /dev/null 2>&1

检查结果

sleep 3

if sudo docker ps | grep -q ${CONTAINER_NAME}; then

SERVER_IP=$(curl -s ifconfig.me)

echo -e "${GREEN}✅ 成功${NC}"

echo ""

echo "📊 连接信息:"

echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"

echo "🌐 服务器: ${SERVER_IP}"

echo "🔌 端口: ${PORT}"

echo "🔑 密钥: ${SECRET}"

echo "🌐 Fake TLS 域名: ${FAKE_DOMAIN}"

echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"

echo "🔗 Telegram 连接链接 (点击自动连接):"

echo -e "${GREEN}tg://proxy?server=${SERVER_IP}&port=${PORT}&secret=${SECRET}${NC}"

echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"

# 保存配置

cat > ~/mtproto_config.txt << EOF

SERVER=${SERVER_IP}

PORT=${PORT}

SECRET=${SECRET}

DOMAIN=${FAKE_DOMAIN}

LINK=tg://proxy?server=${SERVER_IP}&port=${PORT}&secret=${SECRET}

EOF

echo "✅ 配置已保存到 ~/mtproto_config.txt"

# 显示最新日志

echo ""

echo "📋 容器日志:"

sudo docker logs --tail 5 ${CONTAINER_NAME}

else

echo -e "${RED}❌ 错误${NC}"

sudo docker logs ${CONTAINER_NAME}

fi

```

  • 使脚本可执行并运行:

```bash

chmod +x start-mtproxy.sh

./start-mtproxy.sh

```

脚本分析

该脚本执行一系列操作,旨在快速正确地配置代理:

  • 定义 Fake TLS 域名: 默认使用 ya.ru。代理服务器将模拟此域名以伪装流量。有经验的用户可以根据需要将 FAKE_DOMAIN 更改为其他常用资源。
  • 密钥生成: 脚本会生成一个唯一的密钥。它以 ee 前缀开头,这是在 Telegram 客户端中激活 Fake TLS 模式的强制要求。在此前缀之后,会添加所选 FAKE_DOMAIN 的十六进制表示,以及随机字符,以达到总共 30 个字符的长度。这确保了密钥的唯一性和安全性。
  • 端口 443 可用性检查: Fake TLS 首选标准 HTTPS 端口(443),因为使用它会使流量更不易引起怀疑。脚本会检查此端口是否空闲。如果被占用,将自动选择一个备用端口(8443、8444 或 8445)。
  • Docker 容器管理: 脚本首先停止并删除任何之前运行的名为 mtproto-proxy 的容器,以避免冲突。然后,使用官方的 telegrammessenger/proxy 镜像启动一个新的 Docker 容器。启动参数包括:

* -d:以分离(后台)模式运行容器。

* --name mtproto-proxy:为容器指定一个名称,以便于管理。

* --restart unless-stopped:在故障或 VPS 重启时自动重启容器。

* -p ${PORT}:443:将外部端口(由脚本确定)映射到容器的内部端口 443。

* -e SECRET="${SECRET}":将生成的密钥作为环境变量传递给容器。

  • 输出连接信息: 成功启动容器后,脚本会显示服务器的 IP 地址、使用的端口、生成的密钥,以及一个可用于 Telegram 自动连接代理的链接。同时还会创建一个包含这些信息的 ~/mtproto_config.txt 文件。
  • 状态检查: 脚本会验证 Docker 容器是否正在运行,并输出其日志的最后 5 行,以便快速诊断。

您可以随时使用以下命令检查正在运行的 Docker 容器的状态:

sudo docker ps

输出应显示 mtproto-proxy 容器的状态为 Up

连接到 Telegram 代理

成功部署代理服务器后,您可以轻松地在 Telegram 客户端中连接到它。有两种主要方法:

自动连接(推荐)

最简单的方法是使用脚本生成的链接。只需复制并在浏览器中或直接在 Telegram 中打开该链接(例如 tg://proxy?server=...)。该应用将自动提示您添加并激活代理服务器。轻触“添加代理”以确认操作。

手动连接

如果自动连接不起作用,或者您更喜欢手动设置,请使用脚本提供的信息(服务器 IP 地址、端口、密钥)按照以下步骤操作:

  • 在移动设备上 (Android/iOS):

1. 打开 Telegram 并进入“设置”。

2. 选择“数据和存储”。

3. 导航到“代理设置”。

4. 轻触“添加代理”并选择“MTProto”作为类型。

5. 在相应字段中输入服务器 IP 地址、端口和密钥。

  • 在桌面客户端上 (Windows/macOS/Linux):

1. 打开 Telegram 并进入“设置”。

2. 选择“高级”(或“高级设置”)。

3. 在“连接类型”下,选择“使用自定义代理”。

4. 点击“添加代理”并选择“MTProto”作为类型。

5. 输入服务器 IP 地址、端口和密钥。

关键要点

  • 流量混淆: Fake TLS 有效地将 MTProto 流量伪装成常规 HTTPS,使其更难被封锁。
  • 自主性: 在 VPS 上拥有自己的代理,可摆脱对公共服务器的依赖,增强稳定性和安全性。
  • 部署简便: 使用 Docker 和自动化脚本,您可以在几分钟内完成代理设置。
  • 灵活性: 脚本会自动选择一个空闲端口,并提供所有必要的连接信息。
  • 可控性: 您可以完全控制基础设施,并根据自己的需求修改脚本。

— Editorial Team

Advertisement 728x90

继续阅读