使用统计信息部署您的 MTProxy Telegram

使用统计信息部署您的 MTProxy Telegram

“我继承了这个烂摊子,
从无耻的泽洛开始; 领英
并以 Telegram 平台上的“其他人”结尾
在我的世界里。

然后打嗝,
这位官员急忙大声补充道:
但我会把事情整理好(在 IT 中)”
(......).

杜罗夫正确地认为,威权国家应该害怕他,一个密码朋克,Roskomnadzor 和带有 DPI 过滤器的金色盾牌并没有真正打扰他。
(政治技巧)

我的技术政策更简单,我可以在这里描述我对 Runet 粗心封锁的看法,但我相信现代俄罗斯和 Habr 用户的进步公民已经在他们自己的皮肤上感受到了当前政府的不专业,所以我会限制自己一句话:我们的技术方针是“数字抵抗”。 “为亲友提供稳定的沟通渠道。”

部署 MTProto 代理 Telegram

  • 复杂的技术水平是“简单的”,例如,如果您遵循此备忘单。
  • 可靠性水平“高于平均水平”:docker 镜像工作稳定,不需要每天重启,正如开发人员在其官方 Telegram 文档中所写的那样,但容器可能包含一些漏洞。
  • 抵抗/焦虑的程度 - 10 名 ISIS 成员编织他们的阴谋“亲戚使用”,禁令甚至一次都没有来自 RKN(自春季以来)。
  • 信任级别是“public baby distrust”,客户端的问题(有小伙伴怀疑我的MtprotoProxy)。
  • 睾酮水平——“并没有升高。”
  • 财务成本 - “0₽”。
  • 经济奖励 - “不取决于公民杜罗夫。” 促销 - 强加广告的能力。

我们将在 Amazon-ec2:t2.micro 的“免费/个人”功能上提升我们的 TelegramProxy。 我用了 一辆车。

好了,部署好你的免费服务器,去官网 码头枢纽 并下载 docker 容器。

无需寻找一些图像、文件或魔法按钮——“它们不存在”,所有魔法都在 CLI 中完成:

$ docker pull telegrammessenger/proxy #образ скачан.

但在“that”之前,为 CLI 安装 docker:

sudo apt-get install docker.io docker

此外,在 MtprotoProxyTelegram 的官方文档中,我们被提供做如下的事情,我们做:

$ sudo su && docker run -d -p443:443 --name=mtproto-proxy --restart=always -v proxy-config:/data telegrammessenger/proxy:latest #запускаем наш контейнер «mtproto-proxy».

执行此命令后,终端输出中将出现一个 HEX 字符串,但我们对此不感兴趣。

我们在 CLI 中编写:

$ docker logs mtproto-proxy

我们得到了所需的数据:

使用统计信息部署您的 MTProxy Telegram
在此日志的输出中,我们显示(涂抹):

a) 我们的服务器ip(外部服务器ip);
B) 和一个随机秘密 - 十六进制的随机字符串。

在注册我们的 MtproProxy 之前,您需要通过 iptables 配置主防火墙(无论您如何将流量重定向到此 VPC,它都会很顽皮,因为 Amazon-EC2 中的主防火墙位于 web 界面并且具有更高的优先级表)。

我们去“控制台 Amazon-EC2" 在安全组中并打开传入端口 443(逻辑掩码 交通 首次)。

使用统计信息部署您的 MTProxy Telegram

我们从日志中获取我们的“ip 和秘密”数据并转到 Telegram 信使,找到官方 MTProxy Admin Bot (@MTProxybot) 并注册我们的 MtproProxy:运行 [/newproxy] 命令并输入 [our_ip:443],然后然后是我们的 [secret /HEX]。

如果你在输入数据时搞砸了,机器人会生气并将你送到......

如果您无误地填写了两行,您将获得批准和指向您当前 MtprotoProxyTelegram 的工作链接,您可以与任何人共享该链接。

使用统计信息部署您的 MTProxy Telegram

此外,通过此机器人,您可以添加您的赞助渠道(但不是聊天),您可以在其中将您的观点强加给连接到您的服务器的用户,或者您不能“发送垃圾邮件”,也不会打扰您的潜在客户在固定的 Messenger 列表中显示频道。

关于机器人的更多信息,您可以在其中请求统计信息,但“也是一个甜甜圈”。 显然,当你在 Makhachkala 身后有“一群贪图便宜的人”时,“统计数据”就可用了。

监控

我们可以连接多少用户到我们的服务器? 无论如何,那里有谁/什么? 什么? 有多少?

我们根据官方文档看看那里有什么......是的,在这里,这样做:

$ curl http://localhost:2398/stats или вот так $ docker exec mtproto-proxy curl http://localhost:2398/stats # и нам выдадут статистику прямо в CLI.

“Keep your pocket wider” 根据建议的命令,我们总是会收到类似的错误:

«curl: (7) 无法连接到本地主机端口 2398:连接被拒绝»

我们的代理将起作用。 但! 百吉饼,不是我们得到的统计数据。

您可以为红眼患者做些事情:检查

$ netstat -an | grep 2398 и...

起初我以为这是 Telegram 开发人员背后的另一个门槛(我仍然这么认为),然后我找到了一个临时好的解决方案:用文件打磨 Docker 容器。

后来,一个INFA引起了我的注意:

关于 Roskomnadzor 围绕“统计”的状态舞蹈。

“我们已经使用 firehol 项目的数据库阻止了我们服务器上的一些公共代理。 该项目监控带有公共代理的列表并使用它们创建数据库。

从那一刻起(也就是说,已经差不多两天了),我们俄罗斯代理的 IP 地址没有一个被屏蔽。

3. 我们告诉您如何制作对 Roskomnadzor 几乎无懈可击的代理,并分享一个用于阻止公共代理的脚本。

- 将 MTProto 代理 docker 容器(或守护进程)更新到最新版本:RKN 通过统计端口计算旧版本,该端口绑定到 0.0.0.0 并在整个互联网上唯一标识自己。 更好的是,使用 iptables 打开必要的端口,然后关闭其余端口(请记住,在 docker 容器的情况下,您应该使用 FORWARD 规则)。

— Roskomnadzor 很早就学会了如何转储流量:他们看到了 HTTP 和 SOCKS5 代理内部的请求,他们还看到了旧版本的 MTProto 代理混淆。

当安装了此类转储的某些提供商的客户通过此类代理访问 Telegram 时,RKN 会看到此类请求并立即阻止这些代理。 具有旧混淆的 MTProto 代理也是如此。

解决方案:仅向连接到代理的客户端分发以 dd 开头的秘密(无需在 mtproto 代理本身的设置中指定额外的字母 dd)。 这将启用转储无法检测到的混淆版本。

并且没有 HTTP 或 SOCKS5 代理。

- 调整,在调整的帮助下,经常被 RKN 禁止的电报代理的每个所有者都可以完全(或几乎完全)停止阻止(同时确保 RKN 在说谎)。

一个禁止公共代理的脚本和一个小手册。

我们的代理是亲西方的,我在春夏凉爽的日子里没有遇到任何问题/堵塞,它也没有吸引创造性的任务,所以我没有失去步伐,也没有添加 dd* 前缀钥匙。

根据 MtprotoProxyTelegram 的官方说明,手册“获取统计/监控”不起作用/已过时,您将不得不修复 docker 映像。

我们修复它。

容器仍在运行:

$ docker stop mtproto-proxy #останавливаем наш запущенный docker-контейнер и запускаем новый образ с пропущенным флагом статистики

$ docker run --net=host --name=mtproto-proxy2 -d -p443:443 -v proxy-config:/data -e SECRET=ваш_предыдущий_секрет_hex telegrammessenger/proxy:latest

让我们检查一下统计数据:

$ curl http://localhost:2398/stats

curl: (7) 无法连接到 0.0.0.0 端口 2398:连接被拒绝
仍然无法统计.!..

找出 docker 容器的 ID:

$ docker ps

容器 ID 图像命令创建状态端口名称
f423c209cfdc telegrammessenger/proxy:latest "/bin/sh -c '/bin/ba ..." 大约一个小时前 Up 大约一分钟 0.0.0.0:443->443/tcp mtproto-proxy2

我们在 docker 容器中使用我们的章程:

$ sudo docker exec -it f423c209cfdc /bin/bash

$ apt-get update
$ apt-get install nano
$ nano -$ run.sh

在“run.sh”脚本的最后一行,添加缺少的标志:

«--http-stats»
"exec /usr/local/bin/mtproto-proxy -p 2398 -H 443 -M "$WORKERS" -C 60000 --aes-pwd /etc/telegram/hello-explorers-how-are-you-doing -u root $CONFIG --allow-skip-d h --nat-i​​nfo "$INTERNAL_IP:$IP" $SECRET_CMD $TAG_CMD"

添加“--http-stats”,这样的东西应该可以工作:

«exec /usr/local/bin/mtproto-proxy -p 2398 --http-stats -H 443 -M "$WORKERS" -C 60000 --aes-pwd /etc/telegram/hello-explorers-how-are-you-doing -u root $CONFIG --allow-skip-d h --nat-info "$INTERNAL_IP:$IP" $SECRET_CMD $TAG_CMD»

Ctrl+o/Ctrl+x/Ctrl+d(保存/退出 nano/退出容器)。

重启我们的 docker 容器:

$ docker restart mtproto-proxy2

一切,现在听从命令:

$ curl http://localhost:2398/stats #получаем объемную статистику

使用统计信息部署您的 MTProxy Telegram
统计中有很多“垃圾”(其中 1/3 在屏幕上),创建一个别名:

$ echo "alias telega='curl localhost:2398/stats | grep -e total_special -e load_average_total'" >> .bashrc && bash

我们得到了 docker 容器的优化目的:连接数和负载:

$ telega

使用统计信息部署您的 MTProxy Telegram
Docker 容器正在运行,统计数据在旋转。

资源消耗

像 Stuart Redman 一样酷,即使你在你的内裤上留下了印记。 正在运行的 Docker 映像会留下很大的足迹。

描述 docker 镜像的优点和缺点是没有意义的,docker 容器是一个迷你虚拟机,它比“真正的”虚拟机(例如 VirtualBox)消耗更少的资源,但确实如此。

1) 启动有或没有 docker-image 统计数据,两个客户端嬉戏或十个 - 资源被利用〜相同的方式:整个 CPU t75.micro 性能的 2%。

2)我们看VPC服务器的监控:

使用统计信息部署您的 MTProxy Telegram

从 VPC 上的资源利用率图中,我们看到 docker 容器持续消耗约 7,5% 的最大值。 CPU 性能和 28 月 XNUMX 日被我有意/暂时停止 (注意 - OpenVPN 和 pptp 也在服务器上运行)。

为什么 10% 的恒定 CPU 使用率是该服务器的限制?

因为有来自 Amazon EC2 的限制,并且它们以积分计算:

使用统计信息部署您的 MTProxy Telegram

1 CPU credit = 1 CPU 100%负载工作一分钟,我们有6个credit(即高峰时,100分钟内CPU利用率可能达到6%,之后CPU算力会下降)。 其他组合:例如,1 个 CPU 积分 = 1 个 CPU 以 50% 的负载运行两分钟(即我们可以使用 CPU 以 50% 的负载运行 12 分钟),或者,例如,在运行期间恒定 10% 的 CPU 负载整个时间等

发现

  • 我们是“数字抵抗”的一部分。 为他们的“爸爸妈妈”提供了可靠的沟通渠道。
  • 如果您在服务器上部署了 MtprotoProxyTelegram 和 OpenVPN,但仅此而已,则不会出现延迟/ping/故障,但如果您一直在试验您的 t2/micro,请等待通信中断。
  • 我的海外ping是~100-250ms,语音通信没有延迟。
  • 所有“这个”(包括 VPC 资源)的财务成本 = 0₽。

转载您的文章。

UPD:感谢一些 habrausers 的有用评论,确实,这是可能的(支持统计数据吗?),官方 Mtproto 代理 Telegram docker 图像有更好的类似物。

来源: habr.com

添加评论