BGP کي بائي پاس بلاڪ ڪرڻ لاءِ ترتيب ڏيڻ، يا ”ڪيئن مون ڊڄڻ بند ڪيو ۽ RKN سان پيار ۾ پئجي ويو“

چڱو، ٺيڪ، "محبت" جي باري ۾ هڪ مبالغ آهي. بلڪه، "سان گڏ رهڻ جي قابل هو."

جئين توهان سڀني کي خبر آهي، اپريل 16، 2018 کان، Roskomnadzor انٽرنيٽ تي وسيلن تائين رسائي کي انتهائي وسيع اسٽروڪ ۾ روڪيو ويو آهي، "ڊومين نالن جي متحد رجسٽرڊ، انٽرنيٽ تي سائيٽن جي صفحي جي انڊيڪس ۽ نيٽ ورڪ ايڊريس جيڪي سائيٽن کي سڃاڻڻ جي اجازت ڏين ٿا. انٽرنيٽ تي، "معلومات تي مشتمل آهي جنهن جي ورڇ روسي فيڊريشن ۾ منع ٿيل آهي" (متن ۾ - صرف هڪ رجسٽر) /10 ڪڏهن ڪڏهن. نتيجي طور، روسي فيڊريشن جا شهري ۽ ڪاروبار متاثر ٿي رهيا آهن، مڪمل طور تي قانوني وسيلن تائين رسائي وڃائي چڪا آهن جن کي انهن جي ضرورت آهي.

هبري جي هڪ مضمون جي تبصري ۾ مون اهو چوڻ کان پوءِ ته مان متاثرين جي مدد ڪرڻ لاءِ تيار آهيان بائي پاس اسڪيم قائم ڪرڻ لاءِ، ڪيترائي ماڻهو مون وٽ آيا ۽ اهڙي مدد لاءِ پڇا ڪري رهيا هئا. جڏهن هر شيء انهن لاء ڪم ڪيو، انهن مان هڪ هڪ مضمون ۾ ٽيڪنڪ کي بيان ڪرڻ جي سفارش ڪئي. ڪجهه سوچڻ کان پوء، مون سائيٽ تي منهنجي خاموشي کي ٽوڙڻ جو فيصلو ڪيو ۽ هڪ ڀيرو ڪوشش ڪئي ته هڪ پروجيڪٽ ۽ فيسبوڪ پوسٽ جي وچ ۾ وچولي ڪجهه لکڻ لاء، يعني. habrapost. نتيجو اوهان جي سامهون آهي.

اعلان

جيئن ته روسي فيڊريشن جي سرزمين تي ممنوع معلومات تائين رسائي کي بلاڪ ڪرڻ جي طريقن کي شايع ڪرڻ بلڪل قانوني ناهي، هن آرٽيڪل جو مقصد هڪ طريقي جي باري ۾ ڳالهائڻ هوندو جيڪو توهان کي اجازت ڏئي ٿو ته وسيلن تائين رسائي حاصل ڪرڻ جي خودڪار طريقي سان. روسي فيڊريشن جو علائقو، پر ڪنهن جي عملن جي ڪري سڌو سنئون توهان جي فراهم ڪندڙ ذريعي رسائي نه ٿي سگهي. ۽ آرٽيڪل جي عملن جي نتيجي ۾ حاصل ڪيل ٻين وسيلن تائين رسائي هڪ بدقسمتي ضمني اثر آهي ۽ ڪنهن به طريقي سان آرٽيڪل جو مقصد ناهي.

انهي سان گڏ، ڇاڪاڻ ته مان بنيادي طور تي هڪ نيٽ ورڪ معمار آهيان پيشي، پيشه ورانه ۽ زندگي جي رستي، پروگرامنگ ۽ لينڪس منهنجا مضبوط نقطا نه آهن. تنهن ڪري، يقينا، لکت بهتر لکي سگهجي ٿو، وي پي ايس ۾ سيڪيورٽي مسئلن کي وڌيڪ گهرو ڪم ڪري سگهجي ٿو، وغيره. توهان جون تجويزون شڪرگذاري سان قبول ڪيون وينديون، جيڪڏهن اهي ڪافي تفصيلي آهن - آئون انهن کي مضمون جي متن ۾ شامل ڪرڻ ۾ خوش ٿيندس.

TL، ڊاڪٽر

اسان توهان جي موجوده سرنگ ذريعي وسيلن تائين رسائي خودڪار ڪريون ٿا رجسٽري جي ڪاپي ۽ BGP پروٽوڪول استعمال ڪندي. مقصد اهو آهي ته سرنگ ۾ بند ٿيل وسيلن ڏانهن خطاب ڪيل سڀني ٽرئفڪ کي هٽائڻ. گھٽ ۾ گھٽ وضاحتون، اڪثر ڪري قدم قدم جي هدايتون.

توھان کي ھن لاءِ ڇا گھرجي؟

بدقسمتي سان، هي پوسٽ هر ڪنهن لاء ناهي. هن ٽيڪنڪ کي استعمال ڪرڻ لاء، توهان کي ڪيترن ئي عناصر گڏ ڪرڻ جي ضرورت پوندي:

  1. توھان وٽ لازمي آھي ھڪڙو لينڪس سرور ڪٿي آھي بلاڪنگ فيلڊ کان ٻاهر. يا گهٽ ۾ گهٽ اهڙي سرور حاصل ڪرڻ جي خواهش - خوش قسمتي سان اهو هاڻي $ 9 / سال کان خرچ ڪري ٿو، ۽ ممڪن طور تي گهٽ. اهو طريقو پڻ مناسب آهي جيڪڏهن توهان وٽ هڪ الڳ وي پي اين سرنگ آهي، پوء سرور بلاڪنگ فيلڊ جي اندر واقع ٿي سگهي ٿو.
  2. توهان جو روٽر ڪافي سمارٽ هجڻ گهرجي
    • ڪو به وي پي اين ڪلائنٽ جيڪو توهان پسند ڪيو (آئون اوپن وي پي اين کي ترجيح ڏيان ٿو، پر اهو ٿي سگهي ٿو PPTP، L2TP، GRE+IPSec يا ڪو ٻيو آپشن جيڪو سرنگ انٽرفيس ٺاهي ٿو)؛
    • BGPv4 پروٽوڪول. جنهن جو مطلب آهي ته SOHO لاءِ اهو ٿي سگهي ٿو Mikrotik يا ڪو به روٽر OpenWRT/LEDE/Silar Custom firmware سان جيڪو توهان کي Quagga يا Bird انسٽال ڪرڻ جي اجازت ڏئي ٿو. پي سي روٽر استعمال ڪرڻ به منع نه آهي. انٽرپرائز جي صورت ۾، ڏسو BGP سپورٽ توهان جي بارڊر روٽر جي دستاويزن ۾.
  3. توھان کي ڄاڻڻ گھرجي لينڪس جي استعمال ۽ نيٽ ورڪنگ ٽيڪنالاجيز، بشمول BGP پروٽوڪول. يا گهٽ ۾ گهٽ اهڙو خيال حاصل ڪرڻ چاهيان ٿو. جيئن ته مان هن ڀيري ان وسعت کي قبول ڪرڻ لاءِ تيار نه آهيان، تنهن ڪري توهان کي ڪجهه پهلون جو مطالعو ڪرڻو پوندو، جيڪي توهان جي لاءِ سمجھ کان ٻاهر آهن. بهرحال، مان، يقينا، تبصرن ۾ مخصوص سوالن جا جواب ڏيندس ۽ مان ممڪن ناهي ته صرف هڪ ئي جواب ڏيڻ وارو، تنهنڪري پڇڻ ۾ سنکوڪ نه ڪريو.

مثال ۾ ڇا استعمال ڪيو ويو آهي

  • رجسٽر جي هڪ ڪاپي - کان https://github.com/zapret-info/z-i 
  • VPS - Ubuntu 16.04
  • رستي جي خدمت - پکي 1.6.3   
  • روٽر - Mikrotik hAP ac
  • ڪم ڪندڙ فولڊر - جيئن ته اسان روٽ طور ڪم ڪري رهيا آهيون، سڀ کان وڌيڪ هر شيء روٽ جي گهر فولڊر ۾ واقع ٿيندي. ترتيب سان:
    • /root/blacklist - ڪمپليشن اسڪرپٽ سان ڪم ڪندڙ فولڊر
    • /root/zi - رجسٽري جي ڪاپي github کان
    • /etc/bird - پکين جي خدمت جي سيٽنگن لاءِ معياري فولڊر
  • روٽنگ سرور سان VPS جو خارجي IP پتو ۽ سرنگ ختم ٿيڻ واري پوائنٽ آهي 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 ڏانهن سرنگ کي سپورٽ ڪري. اڪثر استعمال ٿيل وي پي اين ٽيڪنالاجيون هن گهرج کي پورا ڪن ٿيون - مثال طور، اوپن وي پي اين ٽون موڊ ۾ مڪمل آهي.

رجسٽري جي ڪاپي حاصل ڪرڻ

جيئن حضرت جبرائيل فرمايو ته ”جيڪو اسان کي روڪيندو اهو اسان جي مدد ڪندو. جيئن ته RKN ممنوع وسيلن جو هڪ رجسٽر ٺاهي رهيو آهي، اهو اسان جو مسئلو حل ڪرڻ لاءِ هن رجسٽر کي استعمال نه ڪرڻ گناهه هوندو. اسان رجسٽري جي ڪاپي حاصل ڪنداسين github کان.

اسان توھان جي لينڪس سرور ڏانھن وڃون ٿا، روٽ جي حوالي سان (sudo su -) ۽ انسٽال ڪريو git جيڪڏھن اھو اڳ ۾ ئي انسٽال ٿيل نه آھي.

apt install git

پنھنجي گھر ڊاريڪٽري ڏانھن وڃو ۽ رجسٽري جي ھڪڙي ڪاپي ڪڍو.

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

اسان هڪ ڪرون اپڊيٽ قائم ڪيو (مان اهو هر 20 منٽن ۾ هڪ ڀيرو ڪندو آهيان، پر توهان ڪنهن به وقفي کي چونڊي سگهو ٿا جيڪو توهان جي فائدي ۾ آهي). هن کي ڪرڻ لاء، اسان شروع ڪريون ٿا ٽرانسٽ-اي ۽ ان ۾ ھيٺيون لائين شامل ڪريو:

*/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 اسڪرپٽ ٺاهينداسين جيڪو ٿوري دير بعد ٿلهو ڏانهن اشارو ڪري ٿو.

روٽنگ سروس کي انسٽال ڪرڻ ۽ ترتيب ڏيڻ

پکين کي انسٽال ڪريو. بدقسمتي سان، پکيء جو نسخو هن وقت Ubuntu repositories ۾ پوسٽ ڪيو ويو آهي تازگي ۾ Archeopteryx feces جي ڀيٽ ۾، تنهنڪري اسان کي پهريان سسٽم ۾ سافٽ ويئر ڊولپرز جي سرڪاري پي پي اي شامل ڪرڻ جي ضرورت آهي.

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

ان کان پوء، اسان فوري طور تي IPv6 لاء پکيء کي غير فعال ڪيو - اسان کي هن انسٽاليشن ۾ ان جي ضرورت نه هوندي.

systemctl stop bird6
systemctl disable bird6

هيٺ ڏنل هڪ minimalistic bird service configuration file (/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;
}

روٽر id - روٽر سڃاڻپ ڪندڙ، جيڪو بصري طور تي IPv4 پتي وانگر نظر اچي ٿو، پر هڪ ناهي. اسان جي صورت ۾، اهو IPv32 پتي جي شڪل ۾ ڪنهن به 4-bit نمبر ٿي سگهي ٿو، پر اهو توهان جي ڊوائيس جي IPv4 پتي کي ظاهر ڪرڻ لاء سٺو فارم آهي (هن صورت ۾، VPS).

پروٽوڪول سڌو وضاحت ڪري ٿو ته ڪهڙن انٽرفيس روٽنگ جي عمل سان ڪم ڪندا. مثال ڪجھ مثالن جا نالا ڏئي ٿو، توھان ٻين کي شامل ڪري سگھو ٿا. توهان صرف لائن کي ختم ڪري سگهو ٿا؛ انهي صورت ۾، سرور هڪ IPv4 ايڊريس سان سڀني دستياب انٽرنيٽ کي ٻڌندو.

پروٽوڪول جامد اسان جو جادو آهي جيڪو بعد ۾ اعلان لاءِ فائلن مان اڳياڙين ۽ IP پتي (جيڪي اصل ۾ /32 اڳياڙيون، يقيناً) جي فهرستن کي لوڊ ڪري ٿو. اهي فهرستون ڪٿان اچن ٿيون، هيٺ ڏنل بحث ڪيو ويندو. مهرباني ڪري نوٽ ڪريو ته لوڊ ڪندي IP پتي ڊفالٽ طور تي تبصرو ڪيو ويو آهي، ان جو سبب اپلوڊ جو وڏو مقدار آهي. مقابلي لاءِ، لکڻ جي وقت، اڳياڙين جي لسٽ ۾ 78 لائينون آهن، ۽ IP پتي جي فهرست ۾ 85898. مان زور ڀريان ٿو ته شروع ڪرڻ ۽ ڊيبگ ڪرڻ صرف اڳياڙين جي فهرست تي، ۽ ڇا ان ۾ IP لوڊ ڪرڻ کي چالو ڪيو وڃي يا نه. مستقبل توهان تي آهي توهان جي روٽر سان تجربو ڪرڻ کان پوءِ فيصلو ڪرڻ. انهن مان هر هڪ آساني سان هضم نه ڪري سگهي ٿو 85 هزار داخلائون روٽنگ ٽيبل ۾.

پروٽوڪول بي جي پي، حقيقت ۾، توهان جي روٽر سان بي جي پي پيئرنگ سيٽ اپ ڪري ٿو. IP پتو روٽر جي ٻاهرين انٽرفيس جو پتو آهي (يا روٽر جي پاسي تي سرنگ انٽرفيس جو پتو)، 64998 ۽ 64999 خود مختيار نظام جا نمبر آهن. انهي صورت ۾، اهي ڪنهن به 16-بٽ نمبرن جي صورت ۾ مقرر ڪري سگهجن ٿا، پر اهو سٺو عمل آهي AS نمبر استعمال ڪرڻ لاءِ پرائيويٽ رينج مان جيڪي RFC6996 - 64512-65534 شامل آهن (32-bit ASNs لاءِ هڪ فارميٽ آهي، پر اسان جي صورت ۾ اهو ضرور آهي اوور ڪل). بيان ڪيل تشڪيل eBGP پيئرنگ استعمال ڪري ٿي، جنهن ۾ روٽنگ سروس ۽ روٽر جي خودمختيار سسٽم جو تعداد مختلف هجڻ گهرجي.

جئين توهان ڏسي سگهو ٿا، خدمت کي روٽر جي IP پتي کي ڄاڻڻ جي ضرورت آهي، تنهنڪري جيڪڏهن توهان وٽ متحرڪ يا غير روٽيبل پرائيويٽ (RFC1918) يا حصيداري (RFC6598) ايڊريس آهي، توهان وٽ اهو اختيار نه آهي ته ٻاهرئين پاسي پيئرنگ وڌائڻ جو اختيار انٽرفيس، پر خدمت اڃا تائين سرنگ اندر ڪم ڪندي.

اهو پڻ واضح آهي ته هڪ خدمت مان توهان ڪيترن ئي مختلف رستن کي رستا مهيا ڪري سگهو ٿا - صرف پروٽوڪول bgp سيڪشن کي نقل ڪندي ۽ پاڙيسري جي IP پتي کي تبديل ڪندي انهن لاءِ سيٽنگون نقل ڪريو. ان ڪري مثال ڏيکاري ٿو سرنگ کان ٻاهر پيئرنگ لاءِ سيٽنگون، جيئن سڀ کان وڌيڪ عالمگير. ان مطابق سيٽنگون ۾ IP پتي کي تبديل ڪندي انهن کي سرنگ ۾ هٽائڻ آسان آهي.

روٽنگ سروس لاء رجسٽري کي پروسيس ڪندي

هاڻي اسان کي ضرورت آهي، حقيقت ۾، اڳڪٿين ۽ IP پتي جي لسٽن کي ٺاهڻ لاء، جيڪي اڳئين اسٽيج تي پروٽوڪول جامد ۾ ذڪر ڪيا ويا آهن. ائين ڪرڻ لاءِ، اسان رجسٽري فائل وٺون ٿا ۽ ان مان گهربل فائلون ٺاھيون ٿا ھيٺ ڏنل اسڪرپٽ استعمال ڪندي، ان ۾ رکيل /root/blacklist/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 ۾ فائلن جي ظاهر کي ڏسو.

گهڻو ڪري، پکي توهان لاء هن وقت ڪم نه ڪري رهيو آهي، ڇاڪاڻ ته پوئين اسٽيج تي توهان ان کي فائلون ڳولڻ لاء چيو جيڪي اڃا تائين موجود نه آهن. تنهن ڪري، اسان ان کي لانچ ڪيو ۽ چيڪ ڪريو ته اهو شروع ڪيو ويو آهي:

systemctl start bird
birdc show route

ٻئي ڪمانڊ جي ٻاھرين کي 80 رڪارڊ ڏيکارڻ گھرجي (اھو ھاڻي لاءِ آھي، پر جڏھن توھان ان کي سيٽ اپ ڪندا، سڀڪنھن شيءِ جو دارومدار نيٽ ورڪ کي بلاڪ ڪرڻ ۾ RKN جي جوش تي ھوندو) ڪجھ ھن طرح:

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

ٽيم

birdc show protocol

خدمت جي اندر پروٽوڪول جي حالت ڏيکاريندو. جيستائين توهان روٽر کي ترتيب نه ڏيو (اڳيون پوائنٽ ڏسو)، اسان جو روٽر پروٽوڪول شروعاتي حالت ۾ هوندو (ڪنيڪٽ يا فعال مرحلو)، ۽ ڪامياب ڪنيڪشن کان پوءِ اهو اپ اسٽيٽ (قائم ٿيل مرحلو) ڏانهن ويندو. مثال طور، منهنجي سسٽم تي هن حڪم جي پيداوار هن طرح نظر اچي ٿي:

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 پيئرنگ کي وڌائڻ ۽ ايندڙ هاپ کي سڀني حاصل ڪيل اڳڪٿين کي تفويض ڪرڻ، اسان جي سرنگ ڏانهن اشارو ڪندي (جيڪڏهن اسان کي p2p انٽرفيس ذريعي ٽريفڪ موڪلڻ جي ضرورت آهي) يا ايندڙ هاپ IP ايڊريس جيڪڏهن ٽريفڪ ايٿرنيٽ ڏانهن ويندي).

مثال طور، RouterOS ۾ Mikrotik تي، اهو هيٺ ڏنل حل ڪيو ويو آهي

/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 کي سيٽ ڪيو وڃي؛ اهو صحيح طور تي پروٽوڪول استعمال ڪندي سيٽ ڪيو ويندو. پر جيڪڏھن توھان ان کي دستي طور تي سيٽ ڪريو، اھو ان کي خراب نه ڪندو.

ٻين پليٽ فارمن تي، توهان کي پنهنجو پاڻ کي ترتيب ڏيڻ جي ضرورت پوندي، پر جيڪڏهن توهان کي ڪا مشڪلات آهي، تبصرن ۾ لکو، آئون مدد ڪرڻ جي ڪوشش ڪندس.

توهان جي بي جي پي سيشن شروع ٿيڻ کان پوء، وڏي نيٽ ورڪ ڏانهن رستا اچي ويا آهن ۽ ٽيبل ۾ نصب ٿيل آهن، ٽرئفڪ انهن کان پتي ڏانهن وهندو آهي ۽ خوشيء جي ويجهو آهي، توهان پکين جي خدمت ڏانهن واپس ڪري سگهو ٿا ۽ اتي داخل ٿيڻ جي ڪوشش ڪري سگهو ٿا جيڪو ڳنڍي ٿو. IP پتي جي فهرست، ان کان پوء عمل ڪريو

systemctl reload bird

۽ ڏسو ته توهان جي روٽر انهن 85 هزار رستن کي ڪيئن منتقل ڪيو. ان پلگ ڪرڻ لاءِ تيار ٿيو ۽ سوچيو ته ان سان ڇا ڪجي :)

ڪل

خالص نظرياتي طور تي، مٿي بيان ڪيل قدمن کي مڪمل ڪرڻ کان پوء، توهان وٽ هاڻي هڪ خدمت آهي جيڪا خودڪار طريقي سان ٽريفڪ کي ريڊائريڪٽ ڪري ٿي IP پتي تي پابندي مڙهيل روسي فيڊريشن ۾ فلٽرنگ سسٽم کان اڳ.

اهو، يقينا، بهتر ٿي سگهي ٿو. مثال طور، پرل يا پٿون حل استعمال ڪندي IP پتي جي فهرست کي اختصار ڪرڻ بلڪل آسان آهي. ھڪڙو سادو پرل اسڪرپٽ ھي ڪري رھيو آھي Net::CIDR::Lite 85 ھزار اڳياڙين کي 60 ۾ تبديل ڪري ٿو (ھزار نه)، پر، يقينا، بلاڪ ٿيل پتي جي ڀيٽ ۾ تمام وڏي رينج کي ڍڪي ٿو.

جيئن ته سروس ISO/OSI ماڊل جي ٽئين سطح تي هلندي آهي، اهو توهان کي ڪنهن سائيٽ/صفحي کي بلاڪ ڪرڻ کان نه بچائيندو جيڪڏهن اهو رجسٽري ۾ درج ٿيل غلط ايڊريس تي حل ڪري. پر رجسٽري سان گڏ، فائل nxdomain.txt اچي ٿي github، جيڪا اسڪرپٽ جي چند اسٽروز سان آساني سان پتي جي ذريعن ۾ بدلجي ٿي، مثال طور، ڪروم ۾ SwitchyOmega پلگ ان.

اهو پڻ ذڪر ڪرڻ ضروري آهي ته حل اضافي سڌارن جي ضرورت آهي جيڪڏهن توهان صرف انٽرنيٽ استعمال ڪندڙ نه آهيو، پر توهان پنهنجي طرفان ڪجهه وسيلا پڻ شايع ڪريو (مثال طور، ويب سائيٽ يا ميل سرور هن ڪنيڪشن تي هلندو آهي). روٽر جي ذريعن کي استعمال ڪندي، اهو ضروري آهي ته هن سروس مان نڪرڻ واري ٽرئفڪ کي سختي سان توهان جي پبلڪ ايڊريس تي پابند ڪيو وڃي، ٻي صورت ۾ توهان انهن وسيلن سان رابطي کان محروم ٿي ويندا جيڪي روٽر پاران وصول ڪيل اڳڪٿين جي فهرست ۾ شامل آهن.

جيڪڏهن توهان وٽ ڪو سوال آهي، پڇو، مان جواب ڏيڻ لاء تيار آهيان.

يو پي ڊي. تنهنجي مهرباني بحري и TerAnYu گٽ جي پيٽرولن لاءِ جيڪي ڊائون لوڊ حجم کي گهٽائڻ جي اجازت ڏين ٿيون.

UPD2. ساٿيو، اهو لڳي ٿو ته مون غلطي ڪئي آهي آرٽيڪل ۾ VPS ۽ روٽر جي وچ ۾ سرنگ قائم ڪرڻ لاءِ هدايتون شامل نه ڪندي. ان حوالي سان ڪيترائي سوال اٿاريا ويا آهن.
بس صورت ۾، مان هڪ ڀيرو ٻيهر نوٽ ڪندس ته هن گائيڊ کي شروع ڪرڻ کان پهريان، توهان اڳ ۾ ئي ترتيب ڏنو آهي هڪ وي پي اين سرنگ انهي طرف جنهن جي توهان کي ضرورت آهي ۽ ان جي ڪارڪردگي کي جانچيو آهي (مثال طور، ٽرئفڪ کي ڊفالٽ يا مستحڪم طور تي ڦيرائڻ سان). جيڪڏهن توهان اڃا تائين هن مرحلي کي مڪمل نه ڪيو آهي، اهو آرٽيڪل ۾ قدمن تي عمل ڪرڻ جو گهڻو مطلب ناهي. مون وٽ ان تي اڃا تائين پنھنجو ڪو متن نه آھي، پر جيڪڏھن توھان گوگل ڪريو "اوپن وي پي اين سرور سيٽ ڪرڻ" سان گڏ وي پي ايس تي نصب ٿيل آپريٽنگ سسٽم جي نالي سان، ۽ "اوپن وي پي اين ڪلائنٽ سيٽ ڪرڻ" توھان جي روٽر جي نالي سان. , توهان گهڻو ڪري هن موضوع تي ڪيترائي مضمون ڳوليندا، بشمول Habré تي.

UPD3. بي ترتيب مون ھڪڙو ڪوڊ لکيو آھي جيڪو dump.csv کي ھڪڙي نتيجي واري فائل ۾ پکيڙيندو آھي IP پتي جي اختياري خلاصي سان. تنهن ڪري، سيڪشن "روٽنگ سروس لاء رجسٽري پروسيسنگ" ان جي پروگرام کي ڪال ڪندي تبديل ڪري سگهجي ٿو. https://habr.com/post/354282/#comment_10782712

UPD4. غلطين تي ٿورڙو ڪم (مون انھن کي متن ۾ شامل نه ڪيو آھي):
1) بدران systemctl reload bird اهو ڪمانڊ استعمال ڪرڻ جو مطلب آهي birdc ترتيب ڏيڻ.
2) ميڪروٽڪ روٽر ۾، سرنگ جي ٻئي پاسي جي IP ڏانهن ايندڙ شاپ کي تبديل ڪرڻ بدران /روٽنگ فلٽر شامل ڪريو عمل=قبول زنجير=متحرڪ-ان پروٽوڪول=bgp تبصرو=»نيڪس شاپ سيٽ ڪريو» سيٽ-ان-ايڪسٿپ=172.30.1.1 اهو سمجهه ۾ اچي ٿو ته رستي کي سڌو سنئون سرنگ انٽرفيس ڏانهن، بغير ڪنهن پتي جي /روٽنگ فلٽر شامل ڪريو عمل = قبول زنجير = متحرڪ-ان پروٽوڪول = bgp تبصرو = »Set Nexthop» set-in-nexthop-direct=<انٽرفيس جو نالو>

UPD5. هڪ نئين خدمت ظاهر ٿي آهي https://antifilter.download، جتان توھان وٺي سگھوٿا تيار ڪيل IP پتي جون لسٽون. هر اڌ ڪلاڪ اپڊيٽ ڪيو. ڪلائنٽ جي پاسي تي، باقي اهو آهي ته رڪارڊ کي ترتيب ڏيڻ سان لاڳاپيل "رستو... رد ڪريو".
۽ هن موقعي تي، شايد، اهو ڪافي آهي توهان جي ناني کي ڇڪڻ ۽ آرٽيڪل کي اپڊيٽ ڪرڻ لاء.

UPD6. آرٽيڪل جو هڪ نظر ثاني ٿيل نسخو انهن لاءِ جيڪي ان کي سمجهڻ نٿا چاهين، پر شروع ڪرڻ چاهين ٿا - هتي.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو