MTProto 中转
MTProto
MTProto 是 Telegram 制定的,在 Telegram 服务端 API 与手机客户端之间的通信协议,该协议使用现代密码学作为安全背书,旨在提供安全的 Telegram 通信链路。
官方也基于这套协议开源了一套对应的代理服务:
MTProto 在大陆已不可用,此文通过使用 ss-redir 与 ipset + iptables 转发的结合,将 MTProto 的流量通过 Shadowsocks Redir 透明代理转发到 Telegram 服务器中。
获取 Telegram 服务器 IP
可通过 Hurricane Electric 的 BGP 工具,获取到 Telegram 的服务端 IP 地址,从而得到转发目标
Telegram 目前包含三个自治域,分别为 AS59930, AS62014 和 AS62041。
通过 BGPView.io 也可以获取 API 友好的数据,得到服务器 IP 段:
1 | #!/usr/bin/python |
设置 IPSet
之后,对得到的结果写 IP Set:
1 | ipset create telegram hash:net -! |
最后,使用 iptables 对这个 set 做 pre-routeing & output 重定向,其中 1080 是 ss-redir 的端口:
1 | iptables -t nat -A PREROUTING -p tcp -m set --match-set telegram dst -j REDIRECT --to-ports 1080 |
建立 MTProto
可以选用官方版,也可以选用 mtprotoproxy(Python) 版:
本文选用 Python 版的 mtprotoproxy, Clone 后直接使用 python3 mtprotoproxy.py
即可运行。
或者也可以使用 Docker(compose) 方式启动 docker-compose up --build -d
。
后续收尾工作
持久化 iptables 配置
使用 iptables-save/iptables-restore 命令即可。
持久化 ipset 配置
可以使用 ipset save
把集合保存到任意地方:
1 | ipset save > /etc/ipset.conf.d/telegram.conf |
MTProto 中转