MTProxy

来自Gea-Suan Lin's Wiki
跳到导航 跳到搜索

MTProxyTelegram的Proxy软件。

安装

这边是以Ubuntu 18.04的环境测试,先安装编译需要的工具:

sudo apt update; sudo apt install -y git curl build-essential libssl-dev zlib1g-dev

再来是编译并安装,这边是装到系统内的方式,需要root权限,程式(可执行档)会装到/usr/sbin/mtproto-proxy,而设定档会放到/etc/mtproxy/下:

cd /tmp; git clone https://github.com/TelegramMessenger/MTProxy.git; cd MTProxy; make; sudo cp objs/bin/mtproto-proxy /usr/bin; sudo mkdir /etc/mtproxy; sudo curl -s https://core.telegram.org/getProxySecret -o /etc/mtproxy/proxy-secret; sudo curl -s https://core.telegram.org/getProxyConfig -o /etc/mtproxy/proxy-multi.conf; head -c 16 /dev/urandom | xxd -ps | sudo tee /etc/mtproxy/secret

另外也还是编译与安装,但这会装到自己目录下的~/mtproxy/下:

cd /tmp; git clone https://github.com/TelegramMessenger/MTProxy.git; cd MTProxy; make; mkdir -p ~/mtproxy; cp objs/bin/mtproto-proxy ~/mtproxy; curl -s https://core.telegram.org/getProxySecret -o ~/mtproxy/proxy-secret; curl -s https://core.telegram.org/getProxyConfig -o ~/mtproxy/proxy-multi.conf; head -c 16 /dev/urandom | xxd -ps > ~/mtproxy/secret

启动

可以设定透过使用者自己的Crontab在开机时启动:

echo '@reboot ( /usr/bin/mtproto-proxy -p 8888 -H 4443 -S $(cat ~/mtproxy/secret) --aes-pwd ~/mtproxy/proxy-secret ~/mtproxy/proxy-multi.conf 2>&1 ) | /usr/bin/logger -t mtproto-proxy -p local0.debug' >> ~/crontab."${USER}"; crontab ~/crontab."${USER}"

另外也可以设定透过Systemd在开机时启动:

echo -e '[Unit]\nDescription=MTProxy\nAfter=network.target\n\n[Service]\nType=simple\nWorkingDirectory=/etc/mtproxy\nExecStart=/bin/sh -c "/usr/bin/mtproto-proxy -u nobody -p 8888 -H 4443 -S $(cat /etc/mtproxy/secret) --aes-pwd /etc/mtproxy/proxy-secret /etc/mtproxy/proxy-multi.conf"\nRestart=on-failure\n\n[Install]\nWantedBy=multi-user.target' | sudo tee /lib/systemd/system/MTProxy.service; sudo systemctl daemon-reload; sudo systemctl enable MTProxy; sudo service MTProxy start

要注意的是,如果机器拿到的IP address不是对外的Public IP(像是在AWSGCP上),需要多指定--nat-info [local-addr]:[global-addr],像是--nat-info 10.1.2.3:123.45.67.89这样,对应的指令就变成:

echo '@reboot ( /usr/bin/mtproto-proxy -p 8888 -H 4443 -S $(cat ~/mtproxy/secret) --aes-pwd ~/mtproxy/proxy-secret ~/mtproxy/proxy-multi.conf --nat-info 10.1.2.3:123.45.67.89 2>&1 ) | /usr/bin/logger -t mtproto-proxy -p local0.debug' >> ~/crontab."${USER}"; crontab ~/crontab."${USER}"
echo -e '[Unit]\nDescription=MTProxy\nAfter=network.target\n\n[Service]\nType=simple\nWorkingDirectory=/etc/mtproxy\nExecStart=/bin/sh -c "/usr/bin/mtproto-proxy -u nobody -p 8888 -H 4443 -S $(cat /etc/mtproxy/secret) --aes-pwd /etc/mtproxy/proxy-secret /etc/mtproxy/proxy-multi.conf --nat-info 10.1.2.3:123.45.67.89"\nRestart=on-failure\n\n[Install]\nWantedBy=multi-user.target' | sudo tee /lib/systemd/system/MTProxy.service; sudo systemctl daemon-reload; sudo systemctl enable MTProxy; sudo service MTProxy start

要记得Port 4443对外要打开,除了本机的iptablesUFW外,云端服务上面的Security Group也要记得检查。

外部链接