很多人白嫖了 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
中