“我繼承了這個爛攤子,
從無恥的澤洛開始; 領英
並以 Telegram 平台上的“其他人”結尾
在我的世界裡。然後打嗝,
這位官員急忙大聲補充道:
但我會把事情整理好(在 IT 中)”
(......).
杜羅夫正確地認為,威權國家應該害怕他,一個密碼朋克,Roskomnadzor 和帶有 DPI 過濾器的金色盾牌並沒有真正打擾他。
(政治技巧)
我的技術政策更簡單,我可以在這裡描述我對 Runet 粗心封鎖的看法,但我相信現代俄羅斯和 Habr 用戶的進步公民已經在他們自己的皮膚上感受到了當前政府的不專業,所以我會限制自己一句話:我們的技術方針是“數字抵抗”。 “為親友提供穩定的溝通渠道。”
部署 MTProto 代理 Telegram
- 複雜的技術水平是“簡單的”,例如,如果您遵循此備忘單。
- 可靠性水平“高於平均水平”:docker 鏡像工作穩定,不需要每天重啟,正如開發人員在其官方 Telegram 文檔中所寫的那樣,但容器可能包含一些漏洞。
- 抵抗/焦慮的程度 - 10 名 ISIS 成員正在編織他們的陰謀“親戚使用”,禁令甚至一次都沒有來自 RKN(自春季以來)。
- 信任級別是“public baby distrust”,客戶端的問題(有小伙伴懷疑我的MtprotoProxy)。
- 睾酮水平——“並沒有升高。”
- 財務成本 - “0₽”。
- 經濟獎勵 - “不取決於公民杜羅夫。” 促銷 - 強加廣告的能力。
我們將在 Amazon-ec2:t2.micro 的“免費/個人”功能上提升我們的 TelegramProxy。 我用了
好了,部署好你的免費服務器,去官網
無需尋找一些圖像、文件或魔法按鈕——“它們不存在”,所有魔法都在 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
我們得到了所需的數據:
在此日誌的輸出中,我們顯示(塗抹):
a) 我們的服務器ip(外部服務器ip);
B) 和一個隨機秘密 - 十六進制的隨機字符串。
在註冊我們的 MtproProxy 之前,您需要通過 iptables 配置主防火牆(無論您如何將流量重定向到此 VPC,它都會很頑皮,因為 Amazon-EC2 中的主防火牆位於 web 界面並且具有更高的優先級表)。
讓我們去 ”
我們從日誌中獲取我們的“ip 和秘密”數據並轉到 Telegram 信使,找到官方 MTProxy Admin Bot (@MTProxybot) 並註冊我們的 MtproProxy:運行 [/newproxy] 命令並輸入 [our_ip:443],然後然後是我們的 [secret /HEX]。
如果你在輸入數據時搞砸了,機器人會生氣並將你送到......
如果您無誤地填寫了兩行,您將獲得批准和指向您當前 MtprotoProxyTelegram 的工作鏈接,您可以與任何人共享該鏈接。
此外,通過此機器人,您可以添加您的讚助渠道(但不是聊天),您可以在其中將您的觀點強加給連接到您的服務器的用戶,或者您不能“發送垃圾郵件”,也不會打擾您的潛在客戶在固定的 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-info "$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 #получаем объемную статистику
統計中有很多“垃圾”(其中 1/3 在屏幕上),創建一個別名:
$ echo "alias telega='curl localhost:2398/stats | grep -e total_special -e load_average_total'" >> .bashrc && bash
我們得到了 docker 容器的優化目的:連接數和負載:
$ telega
Docker 容器正在運行,統計數據在旋轉。
資源消耗
像 Stuart Redman 一樣酷,即使你在你的內褲上留下了印記。 正在運行的 Docker 映像會留下很大的足跡。
描述 docker 鏡像的優點和缺點是沒有意義的,docker 容器是一個迷你虛擬機,它比“真正的”虛擬機(例如 VirtualBox)消耗更少的資源,但確實如此。
1) 啟動有或沒有 docker-image 統計數據,兩個客戶端嬉戲或十個 - 資源被利用〜相同的方式:整個 CPU t75.micro 性能的 2%。
2)我們看VPC服務器的監控:
從 VPC 上的資源利用率圖中,我們看到 docker 容器持續消耗約 7,5% 的最大值。 CPU 性能和 28 月 XNUMX 日被我有意/暫時停止 (注意 - OpenVPN 和 pptp 也在服務器上運行)。
為什麼 10% 的恆定 CPU 使用率是該服務器的限制?
因為有來自 Amazon EC2 的限制,並且它們以積分計算:
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 圖像有更好的類似物。
來源: www.habr.com