/ Telegram

MTProxy自建教程

MTProxy是Telegram(以下简称TG)官方开源的一个TG代理工具,用户可以用来自建代理方便自己使用TG,C语言写一个很轻便的代理软件。废话不多说,贴出github地址

传送门

安装

github页面已经有详细的安装教程,这里简单说一下。

  1. 安装依赖

Debian/Ubuntu:

apt install git curl build-essential libssl-dev zlib1g-dev

CentOS/RHEL:

yum install openssl-devel zlib-devel
yum groupinstall "Development Tools"
  1. 克隆源码编译安装

git clone https://github.com/TelegramMessenger/MTProxy
cd MTProxy
make && cd objs/bin

编译完会在 objs/bid*目录生成可执行文件mtproto-proxy
把这个可执行文件转移到你喜欢的目录

mv mtproto-proxy /opt/MTProxy
cd /opt/MTProxy
  1. 生成配置文件

获取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下来,后面要用到。

完成之后,/opt/MTProxy文件夹下面会有三个文件mtproto-proxyproxy-multi.confproxy-secret。配置文件获取完毕

  1. 创建Systemd service

创建一个system service可以很方便的管理你的mtproxy的启动、重启和查看状态等。

vi /etc/systemd/system/MTProxy.service

编辑MTProxy.service

[Unit]
Description=MTProxy
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/MTProxy
ExecStart=/opt/MTProxy/mtproto-proxy -u nobody -p 8888 -H 443 -S <secret> --aes-pwd proxy-secret proxy-multi.conf -M 1
Restart=on-failure

[Install]
WantedBy=multi-user.target

其中secret是在第3步里面生成的客户端密钥,替换为你自己生成的字符串。
8888是内部查看服务状态的端口
443是客户端连接用的端口,这里你可以自定义为你想开放的接口

保存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=/opt/MTProxy
ExecStart=/opt/MTProxy/mtproto-proxy -u nobody -p 8888 -H 443 -S <secret> --nat-info <内网地址>:<外网地址> --aes-pwd proxy-secret proxy-multi.conf -M 1

代理注册

如果你想分享你的代理给亲朋友好友使用的话,你可以到TG里面注册你的代理,TG会生成分享连接

  1. 注册分享

  • 关注 @MTProxybot 官方机器人
  • 发送 /newproxy 指令
  • 根据提示,再发送你的代理地址和端口 <ip>:<port>
  • 再根据提示,发送前面生成的32位客户端密钥 ********************************
  • 注册完毕,你会得到以下内容
Success!
Your proxy has been successfully registered. You can now pass this proxy tag to the software you are using: ********************************.//这是注册之后生成的代理tag
Here is a link to your proxy server: https://t.me/proxy?server=ip&port=端口&secret=********************************

上面的https://t.me/proxy?server=ip&port=端口&secret=********************************就是分享链接,你把这个分享给你的亲朋好友,他们就可以用上你自建的代理啦~

  1. 设置赞助频道

设置赞助频道之后,使用你的代理的客户端会在聊天主界面置顶显示你设置的频道,是不是有种很diao的感觉呢?

  • @MTProxybot 发送指令myproxies
  • 点击它返回的你的代理的tag
  • 点击菜单Set promotion
  • 回复你的频道的id或者链接,例如https://t.me/qingniantuzhai或者@qingniantuzhai,这里必须是频道(channel),不能是群组(group)
  • 设置完毕