ตั้งค่า BGP ให้เลี่ยงการบล็อค หรือ “เลิกกลัวแล้วหลงรัก RKN ได้ยังไง”

โอเค เกี่ยวกับ "ความรัก" ถือเป็นการพูดเกินจริง แต่ “สามารถอยู่ร่วมกันได้”

ดังที่คุณทราบตั้งแต่วันที่ 16 เมษายน 2018 Roskomnadzor ได้บล็อกการเข้าถึงทรัพยากรบนอินเทอร์เน็ตในรูปแบบที่กว้างมาก โดยเพิ่ม "การลงทะเบียนชื่อโดเมนแบบครบวงจร ดัชนีหน้าของไซต์บนอินเทอร์เน็ต และที่อยู่เครือข่ายที่อนุญาตให้ระบุไซต์ได้ บนอินเทอร์เน็ต” ซึ่งมีข้อมูลที่ห้ามเผยแพร่ในสหพันธรัฐรัสเซีย” (ในข้อความ - เป็นเพียงการลงทะเบียน) โดย /10 บางครั้ง ส่งผลให้พลเมืองของสหพันธรัฐรัสเซียและภาคธุรกิจต้องทนทุกข์ทรมาน โดยสูญเสียการเข้าถึงทรัพยากรทางกฎหมายที่พวกเขาต้องการ

หลังจากที่ฉันพูดในความคิดเห็นในบทความหนึ่งของHabréว่าฉันพร้อมที่จะช่วยเหลือผู้ประสบภัยในการจัดทำโครงการเลี่ยงเมืองแล้ว ก็มีหลายคนเข้ามาขอความช่วยเหลือจากฉัน เมื่อทุกอย่างได้ผล หนึ่งในนั้นแนะนำให้อธิบายเทคนิคนี้ในบทความ หลังจากครุ่นคิดอยู่พักหนึ่ง ฉันตัดสินใจทำลายความเงียบบนเว็บไซต์และลองเขียนอะไรบางอย่างที่อยู่ระหว่างกลางระหว่างโปรเจ็กต์กับโพสต์บน Facebook เช่น ฮาบราโพสต์ ผลลัพธ์อยู่ตรงหน้าคุณ

ข้อจำกัดความรับผิดชอบ

เนื่องจากการเผยแพร่วิธีการหลีกเลี่ยงการปิดกั้นการเข้าถึงข้อมูลที่ต้องห้ามในอาณาเขตของสหพันธรัฐรัสเซียนั้นไม่ถูกกฎหมายมากนัก วัตถุประสงค์ของบทความนี้คือเพื่อพูดคุยเกี่ยวกับวิธีการที่ช่วยให้คุณเข้าถึงทรัพยากรที่ได้รับอนุญาตโดยอัตโนมัติ อาณาเขตของสหพันธรัฐรัสเซีย แต่เนื่องจากการกระทำของผู้อื่นไม่สามารถเข้าถึงได้โดยตรงผ่านผู้ให้บริการของคุณ และการเข้าถึงแหล่งข้อมูลอื่น ๆ ที่ได้รับอันเป็นผลมาจากการกระทำของบทความถือเป็นผลข้างเคียงที่ไม่พึงประสงค์และไม่ใช่วัตถุประสงค์ของบทความแต่อย่างใด

นอกจากนี้ เนื่องจากโดยพื้นฐานแล้วฉันเป็นสถาปนิกเครือข่ายตามอาชีพ อาชีพ และเส้นทางชีวิต การเขียนโปรแกรมและ Linux จึงไม่ใช่จุดแข็งของฉัน ดังนั้นแน่นอนว่าสามารถเขียนสคริปต์ได้ดีขึ้น ปัญหาด้านความปลอดภัยใน VPS สามารถแก้ไขได้ลึกยิ่งขึ้น เป็นต้น ข้อเสนอแนะของคุณจะได้รับการยอมรับด้วยความขอบคุณหากมีรายละเอียดเพียงพอ - ฉันยินดีที่จะเพิ่มลงในข้อความของบทความ

TL; DR

เราทำให้การเข้าถึงทรัพยากรโดยอัตโนมัติผ่านช่องทางที่มีอยู่ของคุณโดยใช้สำเนาของรีจิสทรีและโปรโตคอล BGP เป้าหมายคือการลบการรับส่งข้อมูลทั้งหมดที่ส่งถึงทรัพยากรที่ถูกบล็อกเข้าไปในอุโมงค์ คำอธิบายขั้นต่ำ ส่วนใหญ่เป็นคำแนะนำทีละขั้นตอน

คุณต้องการอะไรสำหรับสิ่งนี้?

น่าเสียดายที่โพสต์นี้ไม่เหมาะสำหรับทุกคน หากต้องการใช้เทคนิคนี้ คุณจะต้องรวมองค์ประกอบหลายอย่างเข้าด้วยกัน:

  1. คุณต้องมีเซิร์ฟเวอร์ linux นอกเขตการบล็อก หรืออย่างน้อยก็ปรารถนาที่จะมีเซิร์ฟเวอร์เช่นนี้ โชคดีที่ตอนนี้มีราคาตั้งแต่ $9 ต่อปี และอาจน้อยกว่านั้นด้วย วิธีการนี้ยังเหมาะสมหากคุณมีอุโมงค์ VPN แยกต่างหาก เซิร์ฟเวอร์ก็สามารถอยู่ในฟิลด์การบล็อกได้
  2. เราเตอร์ของคุณควรฉลาดพอที่จะสามารถทำได้
    • ไคลเอนต์ VPN ใด ๆ ที่คุณชอบ (ฉันชอบ OpenVPN แต่อาจเป็น PPTP, L2TP, GRE+IPSec หรือตัวเลือกอื่น ๆ ที่สร้างอินเทอร์เฟซทันเนล)
    • โปรโตคอล BGPv4 ซึ่งหมายความว่าสำหรับ SOHO อาจเป็น Mikrotik หรือเราเตอร์ใดๆ ที่มีเฟิร์มแวร์แบบกำหนดเอง OpenWRT/LEDE/ที่คล้ายกัน ซึ่งช่วยให้คุณติดตั้ง Quagga หรือ Bird ได้ ห้ามใช้เราเตอร์พีซีเช่นกัน ในกรณีขององค์กร ให้มองหาการสนับสนุน BGP ในเอกสารประกอบสำหรับเราเตอร์ชายแดนของคุณ
  3. คุณควรมีความเข้าใจเกี่ยวกับการใช้งาน Linux และเทคโนโลยีเครือข่าย รวมถึงโปรโตคอล BGP หรืออย่างน้อยก็อยากได้ความคิดเช่นนี้ เนื่องจากฉันไม่พร้อมที่จะยอมรับความใหญ่โตในครั้งนี้ คุณจะต้องศึกษาบางแง่มุมที่คุณไม่สามารถเข้าใจได้ด้วยตัวเอง อย่างไรก็ตาม แน่นอนว่าฉันจะตอบคำถามเฉพาะเจาะจงในความคิดเห็น และไม่น่าจะใช่ฉันคนเดียวที่ตอบ ดังนั้นอย่าลังเลที่จะถาม

สิ่งที่ใช้ในตัวอย่าง

  • สำเนาทะเบียน-จาก https://github.com/zapret-info/z-i 
  • VPS - อูบุนตู 16.04
  • บริการเส้นทาง - นก 1.6.3   
  • เราเตอร์ - ไมโครติก เอชเอพี เอซี
  • โฟลเดอร์การทำงาน - เนื่องจากเราทำงานในฐานะรูท ทุกอย่างส่วนใหญ่จะอยู่ในโฟลเดอร์หลักของรูท ตามลำดับ:
    • /root/blacklist - โฟลเดอร์ทำงานพร้อมสคริปต์การคอมไพล์
    • /root/zi - สำเนาของรีจิสทรีจาก github
    • /etc/bird - โฟลเดอร์มาตรฐานสำหรับการตั้งค่าบริการนก
  • ที่อยู่ IP ภายนอกของ VPS พร้อมเซิร์ฟเวอร์เราต์และจุดสิ้นสุดทันเนลคือ 194.165.22.146, ASN 64998; ที่อยู่ IP ภายนอกของเราเตอร์ - 81.177.103.94, ASN 64999
  • ที่อยู่ IP ภายในอุโมงค์คือ 172.30.1.1 และ 172.30.1.2 ตามลำดับ

ตั้งค่า BGP ให้เลี่ยงการบล็อค หรือ “เลิกกลัวแล้วหลงรัก RKN ได้ยังไง”

แน่นอน คุณสามารถใช้เราเตอร์ ระบบปฏิบัติการ และผลิตภัณฑ์ซอฟต์แวร์อื่นๆ ได้ เพื่อปรับโซลูชันให้เข้ากับลอจิก

สั้น ๆ - ตรรกะของการแก้ปัญหา

  1. การเตรียมการ
    1. การรับ VPS
    2. การเพิ่มอุโมงค์จากเราเตอร์ไปยัง VPS
  2. เราได้รับและอัปเดตสำเนาของรีจิสทรีเป็นประจำ
  3. การติดตั้งและกำหนดค่าบริการการกำหนดเส้นทาง
  4. เราสร้างรายการเส้นทางแบบคงที่สำหรับบริการกำหนดเส้นทางตามรีจิสทรี
  5. เราเชื่อมต่อเราเตอร์กับบริการและกำหนดค่าการส่งการรับส่งข้อมูลทั้งหมดผ่านอุโมงค์

ทางออกที่แท้จริง

การเตรียมการ

มีบริการมากมายบนอินเทอร์เน็ตที่ให้บริการ VPS ในราคาที่สมเหตุสมผล จนถึงตอนนี้ ฉันได้พบและกำลังใช้ตัวเลือกที่ราคา $9/ปี แต่แม้ว่าคุณจะไม่ได้กังวลอะไรมากนัก แต่ก็มีตัวเลือกมากมายสำหรับ 1E/เดือนในทุกมุม คำถามในการเลือก VPS นั้นอยู่นอกเหนือขอบเขตของบทความนี้ ดังนั้นหากใครไม่เข้าใจอะไรเกี่ยวกับเรื่องนี้ ให้ถามในความคิดเห็น

หากคุณใช้ VPS ไม่เพียงแต่สำหรับบริการกำหนดเส้นทางเท่านั้น แต่ยังเพื่อยุติทันเนลด้วย คุณต้องเพิ่มทันเนลนี้และกำหนดค่า NAT ให้ด้วย มีคำแนะนำมากมายเกี่ยวกับการดำเนินการเหล่านี้บนอินเทอร์เน็ต ฉันจะไม่ทำซ้ำที่นี่ ข้อกำหนดหลักสำหรับทันเนลดังกล่าวคือต้องสร้างอินเทอร์เฟซแยกต่างหากบนเราเตอร์ของคุณที่รองรับทันเนลไปทาง VPS เทคโนโลยี VPN ที่ใช้ส่วนใหญ่ตรงตามข้อกำหนดนี้ - ตัวอย่างเช่น OpenVPN ในโหมด Tun นั้นสมบูรณ์แบบ

รับสำเนารีจิสทรี

ดังที่ญับเรลกล่าวว่า “ผู้ที่ขัดขวางเราจะช่วยเรา” เนื่องจาก RKN กำลังสร้างการลงทะเบียนทรัพยากรต้องห้าม จึงถือเป็นบาปที่จะไม่ใช้การลงทะเบียนนี้เพื่อแก้ไขปัญหาของเรา เราจะได้รับสำเนารีจิสทรีจาก GitHub

เราไปที่เซิร์ฟเวอร์ Linux ของคุณ ตกอยู่ในบริบทราก (ซูโดะ ซู —) และติดตั้ง git หากยังไม่ได้ติดตั้ง

apt install git

ไปที่โฮมไดเร็กตอรี่ของคุณและดึงสำเนาของรีจิสทรีออกมา

cd ~ && git clone --depth=1 https://github.com/zapret-info/z-i 

เราตั้งค่าการอัปเดต cron (ฉันทำทุกๆ 20 นาที แต่คุณสามารถเลือกช่วงเวลาใดก็ได้ที่คุณสนใจ) เพื่อทำเช่นนี้เราเปิดตัว crontab -e และเพิ่มบรรทัดต่อไปนี้เข้าไป:

*/20 * * * * cd ~/z-i && git pull && git gc

เราเชื่อมต่อเบ็ดที่จะสร้างไฟล์สำหรับบริการกำหนดเส้นทางหลังจากอัปเดตรีจิสทรี เมื่อต้องการทำเช่นนี้ ให้สร้างไฟล์ /root/zi/.git/hooks/post-merge โดยมีเนื้อหาดังนี้

#!/usr/bin/env bash
changed_files="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)"
check_run() {
    echo "$changed_files" | grep --quiet "$1" && eval "$2"
}
check_run dump.csv "/root/blacklist/makebgp"

และอย่าลืมทำให้มันปฏิบัติการได้

chmod +x /root/z-i/.git/hooks/post-merge

เราจะสร้างสคริปต์ makebgp ที่ hook อ้างถึงในภายหลัง

การติดตั้งและกำหนดค่าบริการกำหนดเส้นทาง

ติดตั้งนก. น่าเสียดายที่เวอร์ชันของนกที่โพสต์อยู่ในที่เก็บของ Ubuntu นั้นมีความสดใหม่เทียบเท่ากับอุจจาระของ Archaeopteryx ดังนั้นเราจึงจำเป็นต้องเพิ่ม PPA อย่างเป็นทางการของนักพัฒนาซอฟต์แวร์ลงในระบบก่อน

add-apt-repository ppa:cz.nic-labs/bird
apt update
apt install bird

หลังจากนั้นเราจะปิดการใช้งาน bird สำหรับ IPv6 ทันที - เราไม่ต้องการมันในการติดตั้งนี้

systemctl stop bird6
systemctl disable bird6

ด้านล่างนี้เป็นไฟล์การกำหนดค่าบริการนกแบบเรียบง่าย (/etc/bird/bird.conf) ซึ่งก็เพียงพอแล้วสำหรับเรา (และขอเตือนอีกครั้งว่าไม่มีใครห้ามการพัฒนาและปรับแต่งแนวคิดให้เหมาะกับความต้องการของคุณเอง)

log syslog all;
router id 172.30.1.1;

protocol kernel {
        scan time 60;
        import none;
#       export all;   # Actually insert routes into the kernel routing table
}

protocol device {
        scan time 60;
}

protocol direct {
        interface "venet*", "tun*"; # Restrict network interfaces it works with
}

protocol static static_bgp {
        import all;
        include "pfxlist.txt";
        #include "iplist.txt";
}

protocol bgp OurRouter {
        description "Our Router";
        neighbor 81.177.103.94 as 64999;
        import none;
        export where proto = "static_bgp";
        local as 64998;
        passive off;
        multihop;
}

รหัสเราเตอร์ - ตัวระบุเราเตอร์ซึ่งมองเห็นได้เหมือนกับที่อยู่ IPv4 แต่ไม่ใช่ ในกรณีของเรา อาจเป็นตัวเลข 32 บิตใดๆ ก็ได้ในรูปแบบที่อยู่ IPv4 แต่เป็นรูปแบบที่ดีในการระบุที่อยู่ IPv4 ของอุปกรณ์ของคุณ (ในกรณีนี้คือ VPS)

โปรโตคอลโดยตรงกำหนดว่าอินเทอร์เฟซใดที่จะทำงานกับกระบวนการกำหนดเส้นทาง ตัวอย่างนี้ให้ชื่อตัวอย่างสองสามชื่อ คุณสามารถเพิ่มชื่ออื่นได้ คุณสามารถลบบรรทัดได้ ในกรณีนี้ เซิร์ฟเวอร์จะรับฟังอินเทอร์เฟซที่มีอยู่ทั้งหมดด้วยที่อยู่ IPv4

protocol static คือเวทย์มนตร์ของเราที่จะโหลดรายการคำนำหน้าและที่อยู่ IP (ซึ่งจริงๆ แล้วเป็นคำนำหน้า /32) จากไฟล์สำหรับการประกาศในภายหลัง รายการเหล่านี้มาจากไหนจะมีการหารือด้านล่าง โปรดทราบว่าการโหลดที่อยู่ IP จะถูกใส่เครื่องหมายความคิดเห็นไว้ตามค่าเริ่มต้น เหตุผลก็คือการอัปโหลดจำนวนมาก สำหรับการเปรียบเทียบในขณะที่เขียนรายการคำนำหน้ามี 78 บรรทัดและ 85898 ในรายการที่อยู่ IP ฉันขอแนะนำอย่างยิ่งให้เริ่มต้นและแก้ไขข้อบกพร่องเฉพาะในรายการคำนำหน้าและจะเปิดใช้งานการโหลด IP หรือไม่ อนาคตขึ้นอยู่กับคุณในการตัดสินใจหลังจากทดลองใช้เราเตอร์ของคุณ ไม่ใช่ทุกคนที่สามารถแยกแยะข้อมูล 85 รายการในตารางเส้นทางได้อย่างง่ายดาย

ที่จริงแล้วโปรโตคอล bgp ตั้งค่าการเพียร์ bgp กับเราเตอร์ของคุณ ที่อยู่ IP คือที่อยู่ของอินเทอร์เฟซภายนอกของเราเตอร์ (หรือที่อยู่ของอินเทอร์เฟซช่องสัญญาณที่ฝั่งเราเตอร์) 64998 และ 64999 คือหมายเลขของระบบอัตโนมัติ ในกรณีนี้ สามารถกำหนดในรูปแบบของตัวเลข 16 บิตใดๆ ได้ แต่แนวทางปฏิบัติที่ดีคือการใช้หมายเลข AS จากช่วงส่วนตัวที่กำหนดโดย RFC6996 - 64512-65534 รวม (มีรูปแบบสำหรับ ASN 32 บิต แต่ในกรณีของเรา นี่ถือว่าเกินกำลังอย่างแน่นอน) การกำหนดค่าที่อธิบายไว้ใช้การเชื่อมต่อแบบเพียร์ eBGP ซึ่งจำนวนระบบอัตโนมัติของบริการกำหนดเส้นทางและเราเตอร์จะต้องแตกต่างกัน

อย่างที่คุณเห็น บริการจำเป็นต้องทราบที่อยู่ IP ของเราเตอร์ ดังนั้นหากคุณมีที่อยู่ส่วนตัวแบบไดนามิกหรือไม่สามารถกำหนดเส้นทางได้ (RFC1918) หรือที่ใช้ร่วมกัน (RFC6598) คุณจะไม่มีตัวเลือกในการเพิ่มการเพียร์ภายนอก อินเทอร์เฟซ แต่บริการจะยังคงทำงานภายในอุโมงค์

ค่อนข้างชัดเจนว่าจากบริการเดียวคุณสามารถระบุเส้นทางไปยังเราเตอร์ที่แตกต่างกันได้ - เพียงทำซ้ำการตั้งค่าสำหรับพวกเขาโดยการคัดลอกส่วนโปรโตคอล bgp และเปลี่ยนที่อยู่ IP ของเพื่อนบ้าน นั่นคือเหตุผลที่ตัวอย่างแสดงการตั้งค่าสำหรับการเพียร์นอกอุโมงค์ซึ่งเป็นการตั้งค่าที่เป็นสากลที่สุด ง่ายต่อการลบออกจากอุโมงค์โดยการเปลี่ยนที่อยู่ IP ในการตั้งค่าตามลำดับ

กำลังประมวลผลรีจิสทรีสำหรับบริการการกำหนดเส้นทาง

ที่จริงแล้วตอนนี้เราต้องการสร้างรายการคำนำหน้าและที่อยู่ IP ซึ่งได้รับการกล่าวถึงในโปรโตคอลแบบคงที่ในขั้นตอนก่อนหน้า ในการทำเช่นนี้ เราใช้ไฟล์รีจิสตรีและสร้างไฟล์ที่เราต้องการโดยใช้สคริปต์ต่อไปนี้วางไว้ในนั้น /root/บัญชีดำ/makebgp

#!/bin/bash
cut -d";" -f1 /root/z-i/dump.csv| tr '|' 'n' |  tr -d ' ' > /root/blacklist/tmpaddr.txt
cat /root/blacklist/tmpaddr.txt | grep / | sed 's_.*_route & reject;_' > /etc/bird/pfxlist.txt
cat /root/blacklist/tmpaddr.txt | sort | uniq | grep -Eo "([0-9]{1,3}[.]){3}[0-9]{1,3}" | sed 's_.*_route &/32 reject;_' > /etc/bird/iplist.txt
/etc/init.d/bird reload
logger 'bgp list compiled'

อย่าลืมทำให้มันปฏิบัติการได้

chmod +x /root/blacklist/makebgp

ตอนนี้คุณสามารถรันมันด้วยตนเองและสังเกตลักษณะของไฟล์ใน /etc/bird

เป็นไปได้มากว่า bird จะไม่ทำงานสำหรับคุณในขณะนี้ เพราะในขั้นตอนที่แล้ว คุณขอให้นกค้นหาไฟล์ที่ยังไม่มี ดังนั้นเราจึงเปิดตัวและตรวจสอบว่าได้เริ่มต้นแล้ว:

systemctl start bird
birdc show route

ผลลัพธ์ของคำสั่งที่สองควรแสดงประมาณ 80 รายการ (ขณะนี้ แต่เมื่อคุณตั้งค่าทุกอย่างจะขึ้นอยู่กับความกระตือรือร้นของ RKN ในการบล็อกเครือข่าย) บางอย่างเช่นนี้:

54.160.0.0/12      unreachable [static_bgp 2018-04-19] * (200)

ทีม

birdc show protocol

จะแสดงสถานะของโปรโตคอลภายในบริการ จนกว่าคุณจะกำหนดค่าเราเตอร์ (ดูจุดถัดไป) โปรโตคอล OurRouter จะอยู่ในสถานะเริ่มต้น (ระยะเชื่อมต่อหรือใช้งานอยู่) และหลังจากการเชื่อมต่อสำเร็จ โปรโตคอลจะเข้าสู่สถานะขึ้น (ระยะที่จัดตั้งขึ้น) ตัวอย่างเช่น ในระบบของฉัน ผลลัพธ์ของคำสั่งนี้จะมีลักษณะดังนี้:

BIRD 1.6.3 ready.
name     proto    table    state  since       info
kernel1  Kernel   master   up     2018-04-19
device1  Device   master   up     2018-04-19
static_bgp Static   master   up     2018-04-19
direct1  Direct   master   up     2018-04-19
RXXXXXx1 BGP      master   up     13:10:22    Established
RXXXXXx2 BGP      master   up     2018-04-24  Established
RXXXXXx3 BGP      master   start  2018-04-22  Connect       Socket: Connection timed out
RXXXXXx4 BGP      master   up     2018-04-24  Established
RXXXXXx5 BGP      master   start  2018-04-24  Passive

การเชื่อมต่อเราเตอร์

ทุกคนคงเบื่อที่จะอ่านผ้าเช็ดเท้าเล่มนี้แล้ว แต่จงจำไว้ - จุดจบใกล้เข้ามาแล้ว นอกจากนี้ ในส่วนนี้ ฉันจะไม่สามารถให้คำแนะนำแบบทีละขั้นตอนได้ แต่จะแตกต่างกันไปสำหรับผู้ผลิตแต่ละราย

อย่างไรก็ตาม ฉันสามารถแสดงตัวอย่างให้คุณได้ดู ตรรกะหลักคือการเพิ่มการเพียร์ BGP และกำหนด nexthop ให้กับคำนำหน้าที่ได้รับทั้งหมด โดยชี้ไปที่อุโมงค์ของเรา (หากเราจำเป็นต้องส่งการรับส่งข้อมูลผ่านอินเทอร์เฟซ p2p) หรือที่อยู่ IP ของ nexthop หากการรับส่งข้อมูลจะไปที่อีเธอร์เน็ต)

ตัวอย่างเช่นบน Mikrotik ใน RouterOS จะได้รับการแก้ไขดังนี้

/routing bgp instance set default as=64999 ignore-as-path-len=yes router-id=172.30.1.2
/routing bgp peer add in-filter=dynamic-in multihop=yes name=VPS remote-address=194.165.22.146 remote-as=64998 ttl=default
/routing filter add action=accept chain=dynamic-in protocol=bgp comment="Set nexthop" set-in-nexthop=172.30.1.1

และใน Cisco IOS - เช่นนี้

router bgp 64999
  neighbor 194.165.22.146 remote-as 64998
  neighbor 194.165.22.146 route-map BGP_NEXT_HOP in
  neighbor 194.165.22.146 ebgp-multihop 250
!
route-map BGP_NEXT_HOP permit 10
  set ip next-hop 172.30.1.1

ถ้าใช้ทันเนลเดียวกันทั้งสำหรับการเพียร์ BGP และการส่งทราฟฟิกที่มีประโยชน์ ไม่จำเป็นต้องตั้งค่า nexthop เพราะจะถูกตั้งค่าอย่างถูกต้องโดยใช้โปรโตคอล แต่ถ้าคุณตั้งค่าด้วยตนเอง มันก็จะไม่ทำให้แย่ลงเช่นกัน

บนแพลตฟอร์มอื่น คุณจะต้องทราบการกำหนดค่าด้วยตัวเอง แต่ถ้าคุณมีปัญหาใด ๆ เขียนความคิดเห็น ฉันจะพยายามช่วย

หลังจากเซสชัน BGP ของคุณเริ่มต้นแล้ว เส้นทางไปยังเครือข่ายขนาดใหญ่ได้มาถึงและติดตั้งในตารางแล้ว การรับส่งข้อมูลได้ไหลไปยังที่อยู่จากพวกเขาและความสุขก็ใกล้เข้ามาแล้ว คุณสามารถกลับไปที่บริการนกและลองยกเลิกการแสดงความคิดเห็นรายการที่นั่นที่เชื่อมต่อกับ รายการที่อยู่ IP ให้ดำเนินการหลังจากนั้น

systemctl reload bird

และดูว่าเราเตอร์ของคุณถ่ายโอนเส้นทางกว่า 85 เส้นทางเหล่านี้อย่างไร เตรียมถอดปลั๊กแล้วคิดว่าจะทำอย่างไรกับมัน :)

เบ็ดเสร็จ

ตามทฤษฎีแล้ว หลังจากทำตามขั้นตอนที่อธิบายไว้ข้างต้นแล้ว คุณจะมีบริการที่เปลี่ยนเส้นทางการรับส่งข้อมูลไปยังที่อยู่ IP ที่ถูกแบนในสหพันธรัฐรัสเซียโดยอัตโนมัติผ่านระบบกรอง

แน่นอนว่าสามารถปรับปรุงได้ ตัวอย่างเช่น มันค่อนข้างง่ายที่จะสรุปรายการที่อยู่ IP โดยใช้โซลูชัน Perl หรือ Python สคริปต์ Perl ง่ายๆ ที่ทำสิ่งนี้โดยใช้ Net::CIDR::Lite จะเปลี่ยนคำนำหน้า 85 คำให้เป็น 60 (ไม่ใช่พัน) แต่แน่นอนว่าจะครอบคลุมช่วงที่อยู่ที่ใหญ่กว่าที่ถูกบล็อกมาก

เนื่องจากบริการดำเนินการในระดับที่สามของโมเดล ISO/OSI จึงจะไม่ช่วยคุณจากการบล็อกไซต์/เพจ หากแก้ไขไปยังที่อยู่ผิดตามที่บันทึกไว้ในรีจิสทรี แต่นอกเหนือจากรีจิสทรีแล้ว ไฟล์ nxdomain.txt ยังมาจาก github ซึ่งเพียงใช้สคริปต์เพียงไม่กี่จังหวะก็สามารถเปลี่ยนเป็นแหล่งที่มาของที่อยู่ได้อย่างง่ายดาย เช่น ปลั๊กอิน SwitchyOmega ใน Chrome

จำเป็นต้องกล่าวถึงด้วยว่าโซลูชันต้องมีการปรับแต่งเพิ่มเติมหากคุณไม่ได้เป็นเพียงผู้ใช้อินเทอร์เน็ต แต่ยังเผยแพร่ทรัพยากรบางอย่างด้วยตนเอง (เช่น เว็บไซต์หรือเซิร์ฟเวอร์อีเมลที่ทำงานบนการเชื่อมต่อนี้) เมื่อใช้วิธีการของเราเตอร์ จำเป็นต้องผูกการรับส่งข้อมูลขาออกจากบริการนี้ไปยังที่อยู่สาธารณะของคุณอย่างเคร่งครัด มิฉะนั้น คุณจะสูญเสียการเชื่อมต่อกับทรัพยากรเหล่านั้นซึ่งครอบคลุมอยู่ในรายการคำนำหน้าที่ได้รับจากเราเตอร์

หากคุณมีคำถามใด ๆ ถามฉันพร้อมที่จะตอบ

รปภ. ขอบคุณ การเดินเรือ и เทออันยู สำหรับพารามิเตอร์สำหรับคอมไพล์ที่ช่วยลดปริมาณการดาวน์โหลด

UPD2. เพื่อนร่วมงาน ดูเหมือนว่าฉันทำผิดพลาดโดยไม่เพิ่มคำแนะนำในการตั้งค่าอุโมงค์ระหว่าง VPS และเราเตอร์ลงในบทความ มีคำถามมากมายเกิดขึ้นจากสิ่งนี้
ในกรณีนี้ ฉันจะทราบอีกครั้งว่าก่อนที่จะเริ่มคู่มือนี้ คุณได้กำหนดค่าอุโมงค์ VPN ในทิศทางที่คุณต้องการแล้วและตรวจสอบฟังก์ชันการทำงานของมันแล้ว (เช่น โดยการเปลี่ยนการรับส่งข้อมูลไปที่นั่นตามค่าเริ่มต้นหรือแบบคงที่) หากคุณยังไม่เสร็จสิ้นขั้นตอนนี้ การทำตามขั้นตอนในบทความไม่สมเหตุสมผล ฉันยังไม่มีข้อความของตัวเองเกี่ยวกับเรื่องนี้ แต่ถ้าคุณ Google “ตั้งค่าเซิร์ฟเวอร์ OpenVPN” พร้อมด้วยชื่อของระบบปฏิบัติการที่ติดตั้งบน VPS และ “การตั้งค่าไคลเอนต์ OpenVPN” ด้วยชื่อเราเตอร์ของคุณ คุณน่าจะพบบทความจำนวนหนึ่งเกี่ยวกับเรื่องนี้ รวมทั้งเกี่ยวกับ Habré ด้วย

ยูพีดี3. ไม่เสียสละ ฉันเขียนโค้ดที่เปลี่ยน dump.csv ให้เป็นไฟล์ผลลัพธ์สำหรับ bird พร้อมตัวเลือกการสรุปที่อยู่ IP ดังนั้นส่วน "การประมวลผลรีจิสทรีสำหรับบริการการกำหนดเส้นทาง" สามารถแทนที่ได้โดยการเรียกโปรแกรม https://habr.com/post/354282/#comment_10782712

UPD4. แก้ไขข้อผิดพลาดเล็กน้อย (ฉันไม่ได้เพิ่มลงในข้อความ):
1) แทน systemctl รีโหลดนก มันสมเหตุสมผลแล้วที่จะใช้คำสั่ง กำหนดค่า birdc.
2) ในเราเตอร์ Mikrotik แทนที่จะเปลี่ยน nexthop เป็น IP ของด้านที่สองของทันเนล / ตัวกรองการกำหนดเส้นทางเพิ่มการกระทำ = ยอมรับเชน = โปรโตคอลไดนามิกใน = ความคิดเห็น bgp = »ตั้งค่า nexthop » set-in-nexthop = 172.30.1.1 เป็นการเหมาะสมที่จะระบุเส้นทางโดยตรงไปยังอินเทอร์เฟซทันเนลโดยไม่มีที่อยู่ / ตัวกรองการกำหนดเส้นทางเพิ่มการกระทำ = ยอมรับเชน = โปรโตคอลแบบไดนามิกใน = ความคิดเห็น bgp = »ตั้งค่าเน็กซ์ฮอป» set-in-nexthop-direct = <ชื่ออินเทอร์เฟซ>

UPD5. บริการใหม่ได้ปรากฏขึ้น https://antifilter.downloadซึ่งคุณสามารถเลือกรายการที่อยู่ IP สำเร็จรูปได้ อัพเดททุกครึ่งชั่วโมง ในฝั่งไคลเอ็นต์ สิ่งที่เหลืออยู่คือการวางเฟรมเรกคอร์ดด้วย "เส้นทาง... ปฏิเสธ" ที่สอดคล้องกัน
และ ณ จุดนี้ อาจเพียงพอที่จะทำให้คุณยายของคุณและอัปเดตบทความก็เพียงพอแล้ว

UPD6. บทความฉบับแก้ไขสำหรับผู้ที่ไม่ต้องการเข้าใจ แต่ต้องการเริ่มต้น - ที่นี่.

ที่มา: will.com

เพิ่มความคิดเห็น