博文記錄
教程分享 2022-07-23 16:49:34 2366 2

很多人白嫖了 Oracle ARM 架构的服务器不知道放点啥,用来搭建 MTP 代理,却很容易失败,遇到各种错误阻碍,今天简单整理下在 ARM 架构下搭建 MTProxy 的方法教程。

MTProto Proxy(也叫 MTProxy) 是 Telegram 官方开源的代理协议用于 Telegram 通信连接,项目原本是基于 C 语言开发的,因为只适配了 x86 架构的, 所以你直接去编译是编译不通过的,也有很多人给官方提交了要求适配的 issue,也没有得到回应。

官方仓库至今已经停更 3 年了协议本身也不是不能用,在大多数服务器提供商售卖的都是 x86 架构的市场下,大多数人已经足以使用,并且在协议本身支持了 FakeTLS 得情况下,也没有太大更新的必要。

为了解决这部分少数人的需求,我们选择第三方开发的 MTProxy 服务端,由于它是用 Golang 开发的,可以很轻松编译发布到不同的平台,也包括我们用到的 ARM 架构。

仓库地址:https://github.com/9seconds/mtg

版本区别

它分为两个版本 v1 和 v2,会有些细微差别,在使用上感官区别不大。最重要的是, v1 支持 adtag 频道分享,而 v2 不支持这项功能。

因为作者认为 MTP 代理本身就是在比较私密的朋友,小众圈子中进行使用,才会安全保密,不会被检测到。若用到大范围的公开分享推广,并通过广告取益,就很容易被运营商检测到,这两者是相悖的,即在最新版本中移除了 adtag,但同时也会在一些重大问题上维护 v1 版本。

一键脚本

项目地址:https://github.com/ellermister/mtproxy

最新的一键脚本已经支持 ARM 服务器,mtproxy 一键安装脚本当在 ARM 架构服务器中会自动给你编译安装 9seconds/mtg .

mkdir /home/mtproxy && cd /home/mtproxy
curl -s -o mtproxy.sh https://raw.githubusercontent.com/ellermister/mtproxy/master/mtproxy.sh && chmod +x mtproxy.sh && bash mtproxy.sh

Docker 版本

如果你没有安装 Docker,可以通过下面的脚本安装:

sh get-docker.sh

通过 docker 建立 mtproxy 代理容器:

docker run --name nginx-mtproxy -d  \
-p 80:80 -p 443:443 \
-e ip_white_list="OFF" \
ellermister/nginx-mtproxy:latest

该镜像还有更多用法,支持白名单等功能,详见 https://hub.docker.com/r/ellermister/nginx-mtproxy

编译安装

如果你想要自己编译安装,可以参考以下步骤。这里使用的是 v1 版本的 mtg,v2 同理,只是运行方式不同。

获取源码

mkdir ~/work && cd ~/work
git clone https://github.com/9seconds/mtg.git -b v1 --depth=1

安装 golang

根据你的系统架构选择 golang 安装包:https://go.dev/dl/ 这里是 arm64。

wget https://go.dev/dl/go1.18.4.linux-arm64.tar.gz
tar -xzf go1.18.4.linux-arm64.tar.gz -C /usr/local/
export PATH=$PATH:/usr/local/go/bin
rm -f go1.18.4.linux-arm64.tar.gz

编译 mtg

默认作者提供的 Makefile 脚本中是对当前系统进行编译可用的静态文件,如果你是在 ARM 架构下的系统上编译,什么都不用改变,如果是想跨平台编译,参考 CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build进行编译.

cd ~/work/mtg
make static

编译成功,你会在当前目录下得到一个 mtg 静态文件,你可以赋予权限,并将其复制到其他地方使用。

chmod +x mtg
cp mtg /usr/local/bin

运行 mtg

mtg run <secret> <adtag>

参数解释

  • secret 为你的 MTProxy 密钥,包含一段 32 位随机字符和你的 fakeTLS 使用的域名

  • adtag 为推广频道使用的密钥,可以通过机器人 @MTProxybot 获取

生成带 tls 伪装的 secret

mtg generate-secret -c aws.amazon.com tls
ee5244d2387a0b6945bf96d0433ea3009b6177732e616d617a6f6e2e636f6d

运行完整示例

mtg run ee5244d2387a0b6945bf96d0433ea3009b6177732e616d617a6f6e2e636f6d 7cfeefce74c922a85e2c6c3c8efb50e3 -b 0.0.0.0:443 >/dev/null 2>&1 &

如果你需要开启启动时运行,可以将以上命令加入到 /etc/rc.local

Profile Picture
Justin

- From Web - 2022-07-25 11:43

写得很好,Mark一下,刚好有一台 Oracle 的服务器。。。

15 Likes
Comment

Profile Picture
伊藤

- From Linux Edge - 2023-08-12 21:45

博主整理辛苦了,明天试试。


media iamge
StudioEIM - 冒险者讲习所
0:00