TelegramMessenger/MTProxy

GitHub: TelegramMessenger/MTProxy

Telegram 官方的 MTProto 代理服务端,用于搭建私有代理节点以绕过网络限制并保持通讯畅通。

Stars: 6086 | Forks: 1020

# MTProxy 简单的 MT-Proto 代理 ## 构建 安装依赖项,你需要一套常见的从源码构建的工具,以及 `openssl` 和 `zlib` 的开发包。 在 Debian/Ubuntu 上: ``` apt install git curl build-essential libssl-dev zlib1g-dev ``` 在 CentOS/RHEL 上: ``` yum install openssl-devel zlib-devel yum groupinstall "Development Tools" ``` 克隆仓库: ``` git clone https://github.com/TelegramMessenger/MTProxy cd MTProxy ``` 要构建,只需运行 `make`,二进制文件将位于 `objs/bin/mtproto-proxy`: ``` make && cd objs/bin ``` 如果构建失败,你应该在再次构建之前运行 `make clean`。 ## 运行 1. 获取用于连接到 telegram 服务器的密钥。 ``` curl -s https://core.telegram.org/getProxySecret -o proxy-secret ``` 2. 获取当前的 telegram 配置。它可能会(偶尔)发生变化,因此我们建议您每天更新一次。 ``` curl -s https://core.telegram.org/getProxyConfig -o proxy-multi.conf ``` 3. 生成一个密钥,供用户连接到你的代理时使用。 ``` head -c 16 /dev/urandom | xxd -ps ``` 4. 运行 `mtproto-proxy`: ``` ./mtproto-proxy -u nobody -p 8888 -H 443 -S --aes-pwd proxy-secret proxy-multi.conf -M 1 ``` ... 其中: - `nobody` 是用户名。`mtproto-proxy` 会调用 `setuid()` 来降低权限。 - `443` 是端口,客户端使用该端口连接到代理。 - `8888` 是本地端口。你可以使用它从 `mtproto-proxy` 获取统计数据。例如 `wget localhost:8888/stats`。你只能通过环回接口(loopback)获取此统计信息。 - `` 是在第 3 步生成的密钥。你也可以设置多个密钥:`-S -S `。 - `proxy-secret` 和 `proxy-multi.conf` 是在第 1 步和第 2 步获取的。 - `1` 是 worker 的数量。如果你拥有高性能服务器,可以增加 worker 的数量。 也可以随意使用 `mtproto-proxy --help` 查看其他选项。 5. 生成具有以下格式的链接:`tg://proxy?server=SERVER_NAME&port=PORT&secret=SECRET`(或者让官方 bot 为你生成)。 6. 在 Telegram 上使用 [@MTProxybot](https://t.me/MTProxybot) 注册你的代理。 7. 使用参数设置收到的标签:`-P ` 8. 尽情享用。 ## 随机填充 由于某些 ISP 会通过数据包大小检测 MTProxy,如果启用了此模式, 则会向数据包添加随机填充。 这仅针对请求它的客户端启用。 在密钥前添加 `dd` 前缀(`cafe...babe` => `ddcafe...babe`)以在客户端启用 此模式。 ## Systemd 示例配置 1. 创建 systemd 服务文件(这是大多数 Linux 发行版的标准路径,但你应事先进行检查): ``` nano /etc/systemd/system/MTProxy.service ``` 2. 编辑此基本服务(特别是路径和参数): ``` [Unit] Description=MTProxy After=network.target [Service] Type=simple WorkingDirectory=/opt/MTProxy ExecStart=/opt/MTProxy/mtproto-proxy -u nobody -p 8888 -H 443 -S -P Restart=on-failure [Install] WantedBy=multi-user.target ``` 3. 重新加载守护进程: ``` systemctl daemon-reload ``` 4. 测试全新的 MTProxy 服务: ``` systemctl restart MTProxy.service # 检查状态,应为 active systemctl status MTProxy.service ``` 5. 启用它,以便在重启后自动启动服务: ``` systemctl enable MTProxy.service ``` ## Docker 镜像 Telegram 也提供 [官方 Docker 镜像](https://hub.docker.com/r/telegrammessenger/proxy/)。 注意:该镜像已过时。
标签:C/C++, Docker, MTProto, MTProxy, OpenSSL, SOCKS5替代, Telegram, Telegram Bot, 中间人代理, 事务性I/O, 协议分析, 安全合规, 安全测试工具, 安全防御评估, 客户端加密, 客户端加密, 开源代理, 抗审查, 服务器部署, 权限提升, 流量转发, 网络代理, 网络安全, 网络安全, 网络通信, 翻墙, 自建节点, 请求拦截, 隐私保护, 隐私保护