MTProxy是Telegram(以下简称TG)官方开源的一个TG代理工具,用户可以用来自建代理方便自己使用TG,C语言写一个很轻便的代理软件。废话不多说,贴出github地址
安装
github页面已经有详细的安装教程,这里简单说一下。
-
安装依赖
CentOS/RHEL:
yum install openssl-devel zlib-devel
yum groupinstall "Development Tools"
-
克隆源码编译安装
git clone https://github.com/TelegramMessenger/MTProxy
cd MTProxy
make && cd objs/bin
编译完会在 objs/bid*
目录生成可执行文件mtproto-proxy
把这个可执行文件转移到你喜欢的目录
mv mtproto-proxy /usr/bin
cd /usr/bin
-
生成配置文件
获取secret,用于连接TG服务器的
curl -s https://core.telegram.org/getProxySecret -o proxy-secret
获取proxy-multi.conf
,TG官方的host,里面存放的是TG官方服务器的地址和端口,你需要代理访问的地址都在这里面,官方建议经常更新一下这个文件
curl -s https://core.telegram.org/getProxyConfig -o proxy-multi.conf
生成一个密钥,这个密钥是要给客户端用的
head -c 16 /dev/urandom | xxd -ps
以上命令会生成一个32位的字符串,copy下来,后面要用到。
完成之后,
/usr/bin
文件夹下面会有三个文件mtproto-proxy
,proxy-multi.conf
和proxy-secret
。配置文件获取完毕
-
创建Systemd service
创建一个system service可以很方便的管理你的mtproxy的启动、重启和查看状态等。
vi /etc/systemd/system/MTProxy.service
编辑MTProxy.service
[Unit]
Description=MTProxy
After=network.target
[Service]
Type=simple
WorkingDirectory=/usr/bin
ExecStart=/usr/bin/mtproto-proxy -u nobody -p 8888 -H 8080 -S <secret> --aes-pwd proxy-secret proxy-multi.conf -M 1
Restart=on-failure
[Install]
WantedBy=multi-user.target
其中
secret
是在第3步里面生成的客户端密钥,替换为你自己生成的字符串。8888
是内部查看服务状态的端口8080
是客户端连接用的端口,这里你可以自定义为你想开放的接口
千万别忘记还有防火墙要设置
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-prot
保存MTProxy.service
之后重载一下systemctl,并启动该服务
systemctl daemon-reload
systemctl restart MTProxy.service
//查看一下服务状态
systemctl status MTProxy.service
不出意外的话你会在控制台输出看到最后两行大概是长这样的
config_filename = 'proxy-multi.conf'
creating 1 workers
Started as [*.*.*.*:*:*:*]//这里是ip:端口:端口
configuration file proxy-multi.conf re-read successfully (797 bytes parsed), new configuration a main loop
Started as [*.*.*.*:*:*:*]//这里是ip:端口:端口
configuration file proxy-multi.conf re-read successfully (797 bytes parsed), new configuration a main loop
说明服务器已经正常跑起来了。你的MTProxy已经可以使用了。
阿里云
的部分用户这里可能有一个注意事项,阿里云有的机器MTProxy获取不到外网IP的,绑定的是内部局域网IP,这样会导致即使你的服务没有任何问题的跑起来了,但是填到客户端里面客户端无法连接上代理。如何检测你的机器是不是能获取到外网地址,ifconfig
一下,能看到你服务器的外网ip就可以,看不到的话就说明获取不到外网地址。如果看不到你的外网地址的话,在第四步的MTProxy.service
文件里面使用--nat-info
指定一下你的内网地址和外网地址。
WorkingDirectory=/usr/bin
ExecStart=/usr/bin/mtproto-proxy -u nobody -p 8888 -H 8080 -S <secret> --nat-info <内网地址>:<外网地址> --aes-pwd proxy-secret proxy-multi.conf -M 1
代理注册
如果你想分享你的代理给亲朋友好友使用的话,你可以到TG里面注册你的代理,TG会生成分享连接