"ฉันได้รับมรดกระเบียบนี้
เริ่มต้นด้วย Zello ที่ไร้ยางอาย ลิงค์อิน
และลงท้ายด้วย "ทุกคน" บนแพลตฟอร์ม Telegram
ในโลกของฉัน.แล้วก็สะอึก
เจ้าหน้าที่กล่าวเสริมอย่างเร่งรีบและเสียงดัง:
แต่ฉันจะทำให้สิ่งต่าง ๆ เป็นระเบียบ (ที่นี่ใน IT)"
(... ).
Durov เชื่ออย่างถูกต้องว่าเป็นรัฐเผด็จการที่ควรกลัวเขา Cypherpunk และ Roskomnadzor และโล่สีทองพร้อมตัวกรอง DPI ไม่รบกวนเขาจริงๆ
(เทคนิคการเมือง)
นโยบายทางเทคนิคของฉันนั้นง่ายกว่า ฉันสามารถอธิบายความคิดของฉันเกี่ยวกับการบล็อกโดยไม่ระมัดระวังใน Runet แต่ฉันเชื่อว่าพลเมืองที่ก้าวหน้าของ Modern Russian และผู้ใช้ Habr รู้สึกถึงความไม่เป็นมืออาชีพของรัฐบาลชุดปัจจุบัน ดังนั้นฉันจะจำกัดตัวเองไว้ที่ วลีเดียว: นโยบายทางเทคนิคของเราคือ “การต่อต้านทางดิจิทัล” "ให้ญาติและเพื่อนมีช่องทางการติดต่อที่มั่นคง"
การปรับใช้ MTProto proxy Telegram
- ระดับความซับซ้อนทางเทคนิคนั้น "ง่าย" ตัวอย่างเช่น หากคุณทำตามสูตรโกงนี้
- ระดับความน่าเชื่อถือคือ "สูงกว่าค่าเฉลี่ย": อิมเมจนักเทียบท่าทำงานได้อย่างเสถียร ไม่จำเป็นต้องรีสตาร์ททุกวันตามที่นักพัฒนาเขียนไว้ในเอกสาร Telegram อย่างเป็นทางการ แต่คอนเทนเนอร์อาจมีช่องโหว่อยู่บ้าง
- ระดับการต่อต้าน/ความวิตกกังวล - สมาชิก ISIS 10 คนกำลังสานแผนสมรู้ร่วมคิด "การใช้โดยญาติ" การแบนไม่ได้มาจาก RKN แม้แต่ครั้งเดียวตลอดเวลา (ตั้งแต่ฤดูใบไม้ผลิ)
- ระดับความไว้วางใจคือ "ความไม่ไว้วางใจของทารกสาธารณะ" ซึ่งเป็นปัญหาในฝั่งไคลเอ็นต์ (เพื่อนบางคนสงสัย MtprotoProxy ของฉัน)
- ระดับฮอร์โมนเพศชาย - "ไม่สูงขึ้น"
- ต้นทุนทางการเงิน - "0₽"
- รางวัลทางการเงิน - "ไม่ขึ้นอยู่กับพลเมือง Durov" โปรโมชั่น - ความสามารถในการกำหนดโฆษณา
เราจะเพิ่ม TelegramProxy บนความจุ "ฟรี/ส่วนตัว" ของ Amazon-ec2: t2.micro ฉันใช้
เอาล่ะ ติดตั้งเซิร์ฟเวอร์ฟรีของคุณแล้ว ไปที่เว็บไซต์ทางการ
ไม่จำเป็นต้องมองหารูปภาพ ไฟล์ หรือปุ่มวิเศษ - "ไม่มีอยู่ตรงนั้น" เวทมนตร์ทั้งหมดเสร็จสิ้นใน CLI:
$ docker pull telegrammessenger/proxy #образ скачан.
แต่ก่อน "นั้น" ให้ติดตั้งนักเทียบท่าสำหรับ CLI:
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) และความลับแบบสุ่ม - สตริงสุ่มใน HEX
ก่อนลงทะเบียน MtproProxy ของเรา คุณต้องกำหนดค่าไฟร์วอลล์หลักผ่าน iptables (ไม่ว่าคุณจะเปลี่ยนเส้นทางการรับส่งข้อมูลไปยัง VPC นี้อย่างไร มันก็จะซุกซน เนื่องจากไฟร์วอลล์หลักใน Amazon-EC2 ตั้งอยู่ในเว็บอินเตอร์เฟสและมีลำดับความสำคัญสูงกว่า iptables)
พวกเราไป "
เรานำข้อมูล "ip และความลับ" ของเราจากบันทึกและไปที่ Telegram messenger ค้นหา MTProxy Admin Bot (@MTProxybot) อย่างเป็นทางการและลงทะเบียน MtproProxy ของเรา: เรียกใช้คำสั่ง [/newproxy] และป้อน [our_ip:443] และ จากนั้น [ความลับ /HEX] ของเรา
ถ้าคุณป้อนข้อมูลพลาด บอทจะโกรธ และส่งคุณไปที่ ...
หากคุณกรอกข้อมูลในสองบรรทัดโดยไม่มีข้อผิดพลาด คุณจะได้รับการอนุมัติและลิงก์ที่ใช้งานได้ไปยัง MtprotoProxyTelegram ปัจจุบันของคุณ ซึ่งคุณสามารถแชร์กับใครก็ได้
นอกจากนี้ คุณสามารถเพิ่มช่องทางการสนับสนุนผ่านบอทนี้ (แต่ไม่ใช่การแชท) ซึ่งคุณจะกำหนดมุมมองต่อผู้ใช้ที่เชื่อมต่อกับเซิร์ฟเวอร์ของคุณ หรือคุณไม่สามารถ "สแปม" และไม่รบกวนผู้มีโอกาสเป็นลูกค้าของคุณโดยไม่ แสดงช่องในรายการ Messenger ที่ปักหมุดไว้
อีกสองสามคำเกี่ยวกับบอต ซึ่งคุณสามารถขอสถิติได้ แต่ขอเป็น "โดนัทด้วย" เห็นได้ชัดว่า "สถิติ" มีให้เมื่อคุณมี "คนโหลดฟรีจำนวนมาก" อยู่ข้างหลังคุณ Makhachkala
การตรวจสอบ
เราสามารถเชื่อมต่อกับเซิร์ฟเวอร์ของเราได้กี่คน? และต่อไปใคร / มีอะไร? อะไร และจำนวนเท่าไหร่?
เราดูว่ามีอะไรบ้างตามเอกสารอย่างเป็นทางการ ... ใช่แล้ว ทำแบบนี้:
$ curl http://localhost:2398/stats или вот так $ docker exec mtproto-proxy curl http://localhost:2398/stats # и нам выдадут статистику прямо в CLI.
“เก็บกระเป๋าของคุณให้กว้างขึ้น” ตามคำสั่งที่เสนอ เราจะได้รับข้อผิดพลาดที่คล้ายกันเสมอ:
«curl: (7) ไม่สามารถเชื่อมต่อกับพอร์ต localhost 2398: การเชื่อมต่อถูกปฏิเสธ»
พร็อกซีของเราจะทำงาน แต่! เบเกิลไม่ใช่สถิติที่เราได้รับ
คุณสามารถทำสิ่งต่าง ๆ เพื่อตาแดง: ตรวจสอบ
$ netstat -an | grep 2398 и...
ตอนแรกฉันคิดว่านี่เป็นอีกหนึ่งอุปสรรคเบื้องหลังนักพัฒนา Telegram (และฉันก็ยังคิดอย่างนั้น) จากนั้นฉันก็พบวิธีแก้ปัญหาชั่วคราวที่ดี: ขัด Docker Container ด้วยไฟล์
ต่อมา infa สะดุดตาฉัน:
เกี่ยวกับการเต้นรำของรัฐ Roskomnadzor รอบ "สถิติ"
“เราได้บล็อกพร็อกซีสาธารณะบางส่วนบนเซิร์ฟเวอร์ของเราโดยใช้ฐานข้อมูลของโครงการไฟร์ฮอล โครงการนี้ตรวจสอบรายการด้วยพร็อกซีสาธารณะและสร้างฐานข้อมูลด้วยพร็อกซีสาธารณะ
ตั้งแต่นั้นเป็นต้นมา (นั่นคือเกือบสองวันแล้ว) ไม่มีที่อยู่ IP เดียวของพร็อกซีรัสเซียของเราที่ถูกบล็อก
3. เราจะบอกคุณถึงวิธีสร้างพร็อกซีที่เกือบจะเสี่ยงต่อ Roskomnadzor และแบ่งปันสคริปต์เพื่อบล็อกพร็อกซีสาธารณะ
- อัปเดต MTProto proxy docker container (หรือ daemon) เป็นเวอร์ชันล่าสุด: RKN คำนวณเวอร์ชันเก่าตามพอร์ตสถิติ ซึ่งเชื่อมโยงกับ 0.0.0.0 และระบุตัวเองโดยเฉพาะสำหรับอินเทอร์เน็ตทั้งหมด ยังดีกว่าเปิดพอร์ตที่จำเป็นโดยใช้ iptables และปิดส่วนที่เหลือ (โปรดจำไว้ว่าในกรณีของคอนเทนเนอร์นักเทียบท่า คุณควรใช้กฎ FORWARD)
— Roskomnadzor เรียนรู้วิธีการถ่ายโอนข้อมูลเมื่อนานมาแล้ว: พวกเขาเห็นคำขอภายในพร็อกซี HTTP และ SOCKS5 และยังเห็นการทำให้งงงวยของพร็อกซี MTProto เวอร์ชันเก่าอีกด้วย
เมื่อไคลเอ็นต์ของผู้ให้บริการบางรายที่ติดตั้งดัมพ์เข้าถึง Telegram ผ่านพร็อกซีดังกล่าว RKN จะเห็นคำขอดังกล่าวและบล็อกพร็อกซีเหล่านี้ทันที เช่นเดียวกันกับ MTProto proxy ที่มีการทำให้งงงวยแบบเก่า
วิธีแก้ไข: แจกจ่ายความลับด้วย dd ที่จุดเริ่มต้นไปยังไคลเอนต์ที่เชื่อมต่อกับพร็อกซีเท่านั้น (ไม่จำเป็นต้องระบุตัวอักษรเพิ่มเติม dd ในการตั้งค่าของพร็อกซี mtproto เอง) สิ่งนี้จะเปิดใช้งานเวอร์ชันของการทำให้งงงวยที่ดัมพ์ไพล์ตรวจไม่พบ
และไม่มีพร็อกซี HTTP หรือ SOCKS5
- การปรับด้วยความช่วยเหลือซึ่งเจ้าของโทรเลขพร็อกซีแต่ละคนซึ่งถูก RKN แบนเป็นประจำสามารถหยุดบล็อกได้อย่างสมบูรณ์ (หรือเกือบทั้งหมด) (และในขณะเดียวกันก็ตรวจสอบให้แน่ใจว่า RKN โกหก)
สคริปต์ที่ห้ามพร็อกซีสาธารณะและคู่มือขนาดเล็กสำหรับมัน
→
พร็อกซีของเราเป็นแบบตะวันตก ฉันไม่พบปัญหา/การติดขัดใดๆ ในช่วงฤดูใบไม้ผลิและฤดูร้อนที่อากาศเย็นสบาย มันไม่ได้ดึงดูดงานที่สร้างสรรค์เช่นกัน ดังนั้นฉันจึงไม่เสียจังหวะและไม่ได้เพิ่มคำนำหน้า dd* ให้กับ กุญแจ
คู่มือ “การรับสถิติ/การตรวจสอบ” ตามคำแนะนำอย่างเป็นทางการของ MtprotoProxyTelegram ใช้งานไม่ได้/ล้าสมัย คุณจะต้องซ่อมแซมอิมเมจนักเทียบท่า
เราแก้ไขมัน
คอนเทนเนอร์ยังคงทำงานอยู่:
$ 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: การเชื่อมต่อถูกปฏิเสธ
ยังไม่มีสถิติ.!..
ค้นหา ID ของคอนเทนเนอร์นักเทียบท่า:
$ docker ps
CONTAINER ID IMAGE คำสั่งสร้างสถานะพอร์ตชื่อ
f423c209cfdc telegrammessenger/proxy:latest "/bin/sh -c '/bin/ba…" ประมาณหนึ่งชั่วโมงที่แล้ว Up ประมาณหนึ่งนาที 0.0.0.0:443->443/tcp mtproto-proxy2
เราไปกับกฎบัตรของเราภายในคอนเทนเนอร์นักเทียบท่า:
$ sudo docker exec -it f423c209cfdc /bin/bash
$ apt-get update
$ apt-get install nano
$ nano -$ run.sh
และในบรรทัดสุดท้ายของสคริปต์ "run.sh" ให้เพิ่มแฟล็กที่ขาดหายไป:
«--http-สถิติ»
"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 รูท $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 (บันทึก/ออกจากนาโน/ออกจากคอนเทนเนอร์)
รีสตาร์ทคอนเทนเนอร์นักเทียบท่าของเรา:
$ 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
เราได้สิ่งที่คอนเทนเนอร์นักเทียบท่าได้รับการขัดเกลา: จำนวนการเชื่อมต่อและการโหลด:
$ telega
คอนเทนเนอร์ Docker กำลังทำงาน สถิติกำลังหมุน
ทรัพยากรที่ใช้ไป
เจ๋งพอๆ กับที่คุณเป็น Stuart Redman แม้กระทั่งคุณก็ทิ้งรอยไว้บนกางเกงชั้นในของคุณ อิมเมจ Docker ที่รันอยู่จะทิ้งร่องรอยขนาดใหญ่ไว้
มันไม่มีเหตุผลที่จะอธิบายข้อดีและข้อเสียของอิมเมจนักเทียบท่า คอนเทนเนอร์นักเทียบท่าเป็นเครื่องเสมือนขนาดเล็กที่ใช้ทรัพยากรน้อยกว่าเครื่องเสมือน "จริง" เช่น VirtualBox แต่ก็เป็นเช่นนั้น
1) เปิดตัวโดยมีหรือไม่มีสถิติภาพนักเทียบท่า ไคลเอ็นต์สองรายสนุกสนานหรือสิบ - ทรัพยากรถูกใช้ในลักษณะเดียวกัน: 75% ของประสิทธิภาพ CPU t2.micro ทั้งหมด
2) เราดูที่การตรวจสอบเซิร์ฟเวอร์ VPC:
จากกราฟการใช้ทรัพยากรบน VPC เราพบว่าคอนเทนเนอร์นักเทียบท่ากินอย่างต่อเนื่อง ~ 7,5% ของค่าสูงสุดทั้งหมด ประสิทธิภาพของ CPU และในวันที่ 28 พฤษภาคมถูกหยุดโดยฉันโดยเจตนา/ชั่วคราว (หมายเหตุ - OpenVPN & pptp กำลังทำงานบนเซิร์ฟเวอร์ด้วย)
เหตุใดการใช้งาน CPU คงที่ 10% จึงเป็นขีดจำกัดสำหรับเซิร์ฟเวอร์นี้
เนื่องจากมีข้อจำกัดจาก Amazon EC2 และคำนวณเป็นเครดิต:
1 เครดิต CPU = 1 CPU ทำงานที่โหลด 100% เป็นเวลาหนึ่งนาที และเรามี 6 เครดิต (นั่นคือ ที่จุดสูงสุด การใช้งาน CPU 100% เป็นไปได้ภายใน 6 นาที จากนั้นพลังงานของ CPU จะลดลง) ชุดค่าผสมอื่นๆ: ตัวอย่างเช่น 1 เครดิต CPU = 1 CPU ทำงานที่โหลด 50% เป็นเวลาสองนาที (เช่น เราสามารถใช้ CPU ที่โหลด 50% เป็นเวลา 12 นาที) หรือ ตัวอย่างเช่น โหลด CPU 10%-th คงที่ในระหว่าง ตลอดเวลา เป็นต้น
ผลการวิจัย
- เราเป็นส่วนหนึ่งของ "การต่อต้านดิจิทัล" จัดหาช่องทางการสื่อสารที่เชื่อถือได้ให้กับ "บิดาและมารดา"
- หากคุณติดตั้ง MtprotoProxyTelegram และ OpenVPN บนเซิร์ฟเวอร์ แต่ไม่มีอีกต่อไป จะไม่มีการหน่วงเวลา / ปิง / ความล้มเหลว แต่ถ้าคุณทดลองกับ t2 / micro ของคุณอย่างต่อเนื่อง ให้รอเบรกการสื่อสาร
- ping ในต่างประเทศของฉันคือ ~100-250ms ไม่มีความล่าช้าในการสื่อสารด้วยเสียง
- ต้นทุนทางการเงินสำหรับ "สิ่งนี้" ทั้งหมด (รวมถึงทรัพยากร VPC) = 0₽
พิมพ์ซ้ำบทความของคุณ
UPD: ขอบคุณผู้ใช้ habrauser สำหรับความคิดเห็นที่เป็นประโยชน์ จริง ๆ แล้วเป็นไปได้ (รองรับสถิติหรือไม่) มีแอนะล็อกที่ดีกว่าของอิมเมจนักเทียบท่า Telegram อย่างเป็นทางการของพร็อกซี Mtproto
ที่มา: will.com