ãç§ã¯ãã®æ··ä¹±ãåãç¶ããŸããã
æ¥ç¥ãããªãŒãããå§ããŠãã ããã ãªã³ã¯ãã€ã³
Telegram ãã©ãããã©ãŒã äžã®ããã®ä»å šå¡ãã§çµãã
ç§ã®äžçã®äžã§ããããŠãããã£ããã
åœå±è ã¯æ¥ãã§å€§å£°ã§ããä»ãå ããã
ã§ããç§ã¯ç©äºãæŽçããŸãïŒããã§ã¯ITåéïŒã
ïŒ...ïŒ.
ãã¥ããã¯ããµã€ãã¡ãŒãã³ã¯ã§ãã圌ãæããã¹ãã¯æš©åšäž»çŸ©åœå®¶ã§ãããšæ£ããä¿¡ããŠããããã¹ã³ã ããŸãŒã«ãDPIãã£ã«ã¿ãŒãåããéè²ã®çŸã¯åœŒãããŸãæ°ã«ããŠããŸããã
ïŒæ¿æ²»çææ³ïŒ
ç§ã®æè¡çãªæ¹éã¯ãã£ãšåçŽã§ããRunet ã«ãããäžæ³šæãªãããã¯ã«ã€ããŠã®ç§ã®èããããã§èª¬æã§ããŸãããçŸä»£ãã·ã¢ã®é²æ©çãªåœæ°ãš Habr ãŠãŒã¶ãŒã¯çŸæ¿åºã®éå°éæ§ãèã§æããŠãããšä¿¡ããŠããŸãããã®ãããç§ã¯æ¬¡ã®ããšã«éå®ããŸããäžèšã§èšãã°ãåœç€Ÿã®æè¡æ¹éã¯ãããžã¿ã«ã¬ãžã¹ã¿ã³ã¹ãã§ãã ã芪æãå人ã«å®å®ããéä¿¡ãã£ãã«ãæäŸãããã
MTProto ãããã· Telegram ã®å±é
- ããšãã°ããã®ããŒãã·ãŒãã«åŸãã°ãæè¡çãªè€éãã®ã¬ãã«ã¯ãç°¡åãã§ãã
- ä¿¡é Œæ§ã¬ãã«ã¯ãå¹³å以äžãã§ããéçºè ã Telegram ã®å ¬åŒããã¥ã¡ã³ãã«æžããŠããããã«ãDocker ã€ã¡ãŒãžã¯å®å®ããŠåäœããæ¯æ¥åèµ·åããå¿ èŠã¯ãããŸããããã³ã³ãããŒã«ã¯ããããããã€ãã®è匱æ§ãå«ãŸããŠããŸãã
- æµæ/äžå®ã®ã¬ãã« - ISISã¡ã³ããŒ10人ãã芪æ䜿çšãé°è¬ã玡ããRKNããã®çŠæ¢ä»€ã¯ïŒæ¥ä»¥æ¥ïŒäžåºŠãåºãªãã£ãã
- ä¿¡é Œã¬ãã«ã¯ããããªãã¯ãã€ããŒäžä¿¡ãã§ãã¯ã©ã€ã¢ã³ãåŽã®åé¡ã§ãïŒäžéšã®å人ã¯ç§ã®MtprotoProxyãçã£ãŠããŸãïŒã
- ãã¹ãã¹ããã³ã¬ãã«ã¯ãäžãããªãã£ããã
- 財åã³ã¹ã - ã0âœãã
- ééçå ±é ¬ã¯ãåžæ°ãã¥ããã«äŸåããªããã ããã¢ãŒã·ã§ã³ - åºåã匷å¶ããæ©èœã
Amazon-ec2: t2.micro ã®ãç¡æ/å人çšã容é㧠TelegramProxy ãæ§ç¯ããŸãã ç§ã䜿çšãã
ç¡æãµãŒããŒããããã€ããŸãããå
¬åŒ Web ãµã€ãã«ã¢ã¯ã»ã¹ããŠãã ãã
ç»åããã¡ã€ã«ããŸãã¯ããžã㯠ãã¿ã³ãæ¢ãå¿ èŠã¯ãããŸãã - ããããã¯ååšããŸãããããã¹ãŠã®éæ³ã¯ CLI ã§å®è¡ãããŸãã
$ docker pull telegrammessenger/proxy #ПбÑаз ÑкаÑаМ.
ãã ãããã®åã«ã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».
ãã®ã³ãã³ãã®åŸã端æ«åºåã« XNUMX é²æååã衚瀺ãããŸãããããã«ã¯èå³ããããŸããã
CLI ã§æ¬¡ã®ããã«æžããŸãã
$ docker logs mtproto-proxy
ãããŠå¿ èŠãªããŒã¿ãååŸããŸãã
ãã®ãã°ã®åºåã«ã¯ã次ã®ããã«è¡šç€ºãããŸã (å¡ãã€ã¶ãããŠããŸã)ã
A) åœç€Ÿã®ãµãŒã㌠IP (å€éšãµãŒã㌠IP)ã
B) ããã³ã©ã³ãã ãªç§å¯ - XNUMX é²æ°ã®ã©ã³ãã ãªæååã
MtproProxy ãç»é²ããåã«ãiptables ãä»ããŠã¡ã€ã³ ãã¡ã€ã¢ãŠã©ãŒã«ãèšå®ããå¿ èŠããããŸã (Amazon-EC2 ã®ã¡ã€ã³ ãã¡ã€ã¢ãŠã©ãŒã«ã¯ Web ã€ã³ã¿ãŒãã§ã€ã¹ã«ãããWeb ã€ã³ã¿ãŒãã§ã€ã¹ãããé«ãåªå é äœãæã£ãŠããããããã©ãã£ãã¯ããã® VPC ã«ãªãã€ã¬ã¯ãããæ¹æ³ã«é¢ä¿ãªããäžæ£ãªåäœã«ãªããŸã) iptables)ã
ç§ãã¡ã¯è¡ã "
ãã°ãããIP ãšã·ãŒã¯ã¬ãããããŒã¿ãååŸããTelegram ã¡ãã»ã³ãžã£ãŒã«ç§»åããå
¬åŒ MTProxy 管çããã (@MTProxybot) ãèŠã€ã㊠MtproProxy ãç»é²ããŸãã [/newproxy] ã³ãã³ããå®è¡ã㊠[our_ip:443] ãšå
¥åãããããã[ç§å¯ã®/HEX]ã
ããŒã¿å ¥åæã«å€±æãããšãããããæã£ãŠããªãã次ã®å Žæã«éããŸãã
XNUMX è¡ãééããªãå ¥åãããšãæ¿èªãšçŸåšã® MtprotoProxyTelegram ãžã®æå¹ãªãªã³ã¯ã衚瀺ããã誰ãšã§ãå ±æã§ããŸãã
ãŸãããã®ããããéããŠãã¹ãã³ãµãŒã·ãã ãã£ãã« (ãã£ããã§ã¯ãããŸãã) ãè¿œå ããŠããµãŒããŒã«æ¥ç¶ããŠãããŠãŒã¶ãŒã«èªåã®æèŠãæŒãä»ãããããã¹ãã ããéä¿¡ããããæœåšçãªé¡§å®¢ã«è¿·æãããããããããšã¯ã§ããŸãããåºå®ãããã¡ãã»ã³ãžã£ãŒã®ãªã¹ãã«ãã£ã³ãã«ã衚瀺ãããŸãã
çµ±èšããªã¯ãšã¹ãã§ãããããã§ããããããŒããã§ãããããããã«ã€ããŠããå°ã説æããŸãã ã©ãããããããã«ã©ã®åŸãã«ãå± åã®çŸ€è¡ããããå Žåããçµ±èšããå©çšã§ããããã§ãã
ç£èŠ
ãµãŒããŒã«ã¯äœäººã®ãŠãŒã¶ãŒãæ¥ç¶ã§ããŸãã? ãããŠãšã«ãããããã«ã¯èª°ãããŸãã/äœãããŸãã? äœïŒ ãããŠäœäººã§ããïŒ
å ¬åŒããã¥ã¡ã³ãã«åŸã£ãŠããã«ãããã®ãèŠãŠã¿ãŸããã...ã¯ããããã§ã次ã®ããã«ããŸãã
$ curl http://localhost:2398/stats ОлО Ð²ÐŸÑ Ñак $ docker exec mtproto-proxy curl http://localhost:2398/stats # О МаЌ вÑЎаЎÑÑ ÑÑаÑОÑÑÐžÐºÑ Ð¿ÑÑЌП в CLI.
ããã±ãããåºãããŠãã ããã ææ¡ãããã³ãã³ãã«ããã°ãåžžã«åæ§ã®ãšã©ãŒã衚瀺ãããŸãã
«curl: (7) localhost ããŒã 2398 ãžã®æ¥ç¶ã«å€±æããŸãã: æ¥ç¶ãæåŠãããŸãã»
ç§ãã¡ã®ãããã·ã¯æ©èœããŸãã ãããïŒ ããŒã°ã«ãç§ãã¡ãåŸãçµ±èšã§ã¯ãããŸããã
èµ€ç®ã®äººã®ããã«ã§ããããš: ãã§ãã¯ããŠãã ãã
$ netstat -an | grep 2398 О...
æåã¯ããã㯠Telegram éçºè ã®èåŸã«ãããã XNUMX ã€ã®ããæ ã ãšæããŸãã (ãããŠä»ã§ãããæããŸã)ããã®åŸããã¡ã€ã«ã䜿çšã㊠Docker ã³ã³ããã磚ãäžãããšããäžæçãªè¯ã解決çãèŠã€ããŸããã
ãã®åŸãããæ å ±ãç§ã®ç®ã«çãŸããŸããã
ãçµ±èšããäžå¿ãšãããã¹ã³ã ããŸãŒã«ã®å·ã®ãã³ã¹ã«ã€ããŠã
ãç§ãã¡ã¯ãfirehol ãããžã§ã¯ãã®ããŒã¿ããŒã¹ã䜿çšããŠããµãŒããŒäžã®äžéšã®ãããªã㯠ãããã·ããããã¯ããŸããã ãã®ãããžã§ã¯ãã¯ããããªã㯠ãããã·ã䜿çšããŠãªã¹ããç£èŠããããã䜿çšããŠããŒã¿ããŒã¹ãäœæããŸãã
ãã®ç¬éä»¥æ¥ (ã€ãŸãããã§ã«ã»ãŒ XNUMX æ¥ãçµéããŠããŸã)ããã·ã¢ã®ãããã·ã® IP ã¢ãã¬ã¹ã¯ XNUMX ã€ããããã¯ãããŠããŸããã
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âŠ" çŽ 0.0.0.0 æéå äž çŽ 443 å 443:2->XNUMX/tcp mtproto-proxyXNUMX
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 #пПлÑÑаеЌ ПбÑеЌМÑÑ ÑÑаÑОÑÑОкÑ
çµ±èšã«ã¯ããŽããããããããããŸã (ãã®ãã¡ã® 1/3 ãç»é¢äžã«ãããŸã)ããšã€ãªã¢ã¹ãäœæããŸãã
$ echo "alias telega='curl localhost:2398/stats | grep -e total_special -e load_average_total'" >> .bashrc && bash
Docker ã³ã³ãããŒãäœã®ããã«ç£šãããã®ããã€ãŸãæ¥ç¶æ°ãšè² è·ãååŸããŸãã
$ telega
Docker ã³ã³ãããå®è¡ãããŠãããçµ±èšãå転ããŠããŸãã
è²»ããããªãœãŒã¹
ããªãã¯ã¹ãã¥ã¢ãŒãã»ã¬ãããã³ãšåããããã¯ãŒã«ã§ããããã³ãã£ãŒã«è·¡ãæ®ããŠãã Docker ã€ã¡ãŒãžãå®è¡ãããšã倧ããªãããããªã³ããæ®ããŸãã
Docker ã€ã¡ãŒãžã®é·æãšçæã説æããã®ã¯æå³ããããŸãããDocker ã³ã³ãããŒã¯ãVirtualBox ãªã©ã®ãå®éã®ãä»®æ³ãã·ã³ãããæ¶è²»ãããªãœãŒã¹ãå°ãªãããä»®æ³ãã·ã³ã§ãããå®éã«ã¯æ¶è²»ããŸãã
1) docker-image çµ±èšã®æç¡ã«ãããããèµ·åãããšã75 å°ã®ã¯ã©ã€ã¢ã³ããã¯ãããåã£ãŠã 2 å°ã®ã¯ã©ã€ã¢ã³ãã§ãåãããã«ãªãœãŒã¹ãå©çšãããCPU å šäœã® tXNUMX.micro ããã©ãŒãã³ã¹ã® XNUMX% ã䜿çšãããŸãã
2) VPC ãµãŒããŒã®ç£èŠã確èªããŸãã
VPC äžã®ãªãœãŒã¹äœ¿çšçã°ã©ããããDocker ã³ã³ãããŒãåèšæ倧ãªãœãŒã¹ã®æ倧 7,5% ãåžžã«æ¶è²»ããŠããããšãããããŸãã CPUã®ããã©ãŒãã³ã¹ã28æXNUMXæ¥ã«ç§ãæå³çã«/äžæçã«åæ¢ãããŸãã (泚 - OpenVPN ãš pptp ããµãŒããŒäžã§å®è¡ãããŠããŸã)ã
ãã®ãµãŒããŒã®äžå®ã® CPU 䜿çšçã 10% ã®å¶éãªã®ã¯ãªãã§ãã?
Amazon EC2 ããã®å¶éãããããããã¯ã¯ã¬ãžããã§èšç®ãããããã次ã®ããã«ãªããŸãã
1 CPU ã¯ã¬ãžãã = 1 åé 100% ã®è² è·ã§åäœãã 6 ã€ã® CPU ã§ãã¯ã¬ãžãã㯠100 ã€ãããŸã (ã€ãŸããããŒã¯æã«ã¯ 6 å以å
ã« CPU 䜿çšçã 1% ã«ãªãå¯èœæ§ãããããã®åŸ CPU èœåã¯äœäžããŸã)ã ä»ã®çµã¿åãã: ããšãã°ã1 CPU ã¯ã¬ãžãã = 50 ã€ã® CPU ã 50% ã®è² è·ã§ 12 åéå®è¡ãããŸã (ã€ãŸããCPU ã 10% ã®è² è·ã§ XNUMX åé䜿çšã§ããŸã)ããŸãã¯ãããšãã°ãäžå®ã® XNUMX% çªç®ã® CPU è² è·ãçºçããŸãããã£ãšããªã©
æèŠ
- ç§ãã¡ã¯ãããžã¿ã«ã¬ãžã¹ã¿ã³ã¹ãã®äžå¡ã§ãã ãç¶èŠªãšæ¯èŠªãã«ä¿¡é Œã§ããã³ãã¥ãã±ãŒã·ã§ã³ãã£ãã«ãæäŸããŸããã
- MtprotoProxyTelegram ãš OpenVPN ããµãŒããŒäžã«å±éãããŠãããããã以äžã¯å±éãããŠããªãå Žåãé 延/ping/é害ã¯çºçããŸããããt2/micro ãåžžã«è©ŠããŠããå Žåã¯ãéä¿¡ã®ãã¬ãŒããããããŸã§åŸ ã¡ãŸãã
- æµ·å€ã§ã® ping ã¯çŽ 100 ïœ 250 ããªç§ã§ãé³å£°éä¿¡ã«é 延ã¯ãããŸããã
- ãã¹ãŠã®ãããã (VPC ãªãœãŒã¹ãå«ã) ã®è²¡åã³ã¹ã = 0âœã
ããªãã®èšäºã転èŒããŸãã
UPD: æçãªã³ã¡ã³ãããããäœäººãã® habrauser ã®ãããã§ã確ãã«ããã¯å¯èœã§ã (çµ±èšã¯ãµããŒããããŠããŸãã?)ãå
¬åŒã® Mtproto ãããã· Telegram Docker ã€ã¡ãŒãžã®ããåªããé¡äŒŒç©ããããŸãã
åºæïŒ habr.com