నిరోధించడాన్ని దాటవేయడానికి BGPని సెటప్ చేయడం లేదా "నేను భయపడటం మానేసి RKNతో ఎలా ప్రేమలో పడ్డాను"

సరే, “ప్రేమలో పడ్డాను” అనేది అతిశయోక్తి. బదులుగా "సహజీవనం చేయవచ్చు".

మీకు తెలిసినట్లుగా, ఏప్రిల్ 16, 2018 నుండి, Roskomnadzor చాలా విస్తృతమైన స్ట్రోక్‌లతో నెట్‌వర్క్‌లోని వనరులకు యాక్సెస్‌ను బ్లాక్ చేస్తోంది, డొమైన్ పేర్ల యొక్క యూనిఫైడ్ రిజిస్ట్రీకి జోడించడం, ఇంటర్నెట్‌లోని సైట్‌ల పేజీలకు పాయింటర్లు మరియు నెట్‌వర్క్ చిరునామాలను జోడించడం ఇంటర్నెట్‌లో సమాచారాన్ని కలిగి ఉన్న సైట్‌లను గుర్తించండి, దీని వ్యాప్తి రష్యన్ ఫెడరేషన్‌లో నిషేధించబడింది” (టెక్స్ట్‌లో - కేవలం రిజిస్టర్) /10 కొన్నిసార్లు. ఫలితంగా, రష్యన్ ఫెడరేషన్ మరియు వ్యాపారాల పౌరులు బాధపడతారు, వారికి అవసరమైన పూర్తిగా చట్టపరమైన వనరులకు ప్రాప్యతను కోల్పోయారు.

బైపాస్ స్కీమ్‌ను ఏర్పాటు చేయడంలో బాధితులకు సహాయం చేయడానికి నేను సిద్ధంగా ఉన్నానని హబ్రేలోని కథనాలలో ఒకదానికి వ్యాఖ్యలలో చెప్పిన తర్వాత, అలాంటి సహాయం కోసం చాలా మంది నన్ను సంప్రదించారు. ప్రతిదీ వారి కోసం పనిచేసినప్పుడు, వారిలో ఒకరు ఒక వ్యాసంలో సాంకేతికతను వివరించాలని సిఫార్సు చేశారు. ఆలోచనలో, నేను సైట్‌లో నా నిశ్శబ్దాన్ని విచ్ఛిన్నం చేయాలని నిర్ణయించుకున్నాను మరియు ఫేస్‌బుక్‌లో ప్రాజెక్ట్ మరియు పోస్ట్‌ల మధ్య ఏదైనా ఇంటర్మీడియట్ రాయడానికి ఒకసారి ప్రయత్నించాను, అనగా. హాబ్రాపోస్ట్. ఫలితం మీ ముందు ఉంది.

నిరాకరణ

రష్యన్ ఫెడరేషన్ యొక్క భూభాగంలో నిషేధించబడిన సమాచారానికి యాక్సెస్ నిరోధించడాన్ని దాటవేయడానికి మార్గాలను ప్రచురించడం చాలా చట్టపరమైనది కాదు కాబట్టి, ఈ వ్యాసం యొక్క ఉద్దేశ్యం భూభాగంలో అనుమతించబడిన వనరులకు ప్రాప్యతను ఆటోమేట్ చేయడానికి మిమ్మల్ని అనుమతించే పద్ధతి గురించి మాట్లాడటం. రష్యన్ ఫెడరేషన్ యొక్క, కానీ మీ ప్రొవైడర్ ద్వారా నేరుగా యాక్సెస్ చేయలేని ఒకరి చర్యల కారణంగా. మరియు వ్యాసం నుండి చర్యల ఫలితంగా పొందిన ఇతర వనరులకు ప్రాప్యత దురదృష్టకరమైన దుష్ప్రభావం మరియు వ్యాసం యొక్క ఉద్దేశ్యం కాదు.

అలాగే, నేను వృత్తి, వృత్తి మరియు జీవిత మార్గంలో ప్రధానంగా నెట్‌వర్క్ ఆర్కిటెక్ట్‌ని కాబట్టి, ప్రోగ్రామింగ్ మరియు లైనక్స్ నా బలాలు కావు. అందువల్ల, వాస్తవానికి, స్క్రిప్ట్‌లను బాగా వ్రాయవచ్చు, VPSలోని భద్రతా సమస్యలను మరింత లోతుగా పని చేయవచ్చు, మొదలైనవి. మీ సూచనలు కృతజ్ఞతతో అంగీకరించబడతాయి, అవి తగినంత వివరంగా ఉంటే - వాటిని వ్యాసం యొక్క వచనానికి జోడించడానికి నేను సంతోషిస్తాను.

TL; DR

మేము రిజిస్ట్రీ మరియు BGP ప్రోటోకాల్ కాపీని ఉపయోగించి ఇప్పటికే ఉన్న మీ సొరంగం ద్వారా వనరులకు యాక్సెస్‌ను ఆటోమేట్ చేస్తాము. టన్నెల్‌లోకి బ్లాక్ చేయబడిన వనరులకు సంబంధించిన మొత్తం ట్రాఫిక్‌ను తీసివేయడం లక్ష్యం. కనీస వివరణ, ఎక్కువగా దశల వారీ సూచనలు.

దీనికి మీకు ఏమి కావాలి

దురదృష్టవశాత్తు, ఈ పోస్ట్ అందరికీ కాదు. ఈ పద్ధతిని ఉపయోగించడానికి, మీరు కొన్ని అంశాలను కలపాలి:

  1. మీరు నిరోధించే ఫీల్డ్ వెలుపల ఎక్కడైనా తప్పనిసరిగా linux సర్వర్‌ని కలిగి ఉండాలి. లేదా కనీసం అటువంటి సర్వర్‌ను ప్రారంభించాలనే కోరిక - ఇది ఇప్పుడు సంవత్సరానికి $ 9 నుండి ఖర్చవుతుంది మరియు బహుశా తక్కువ. మీకు ప్రత్యేక VPN టన్నెల్ ఉంటే ఈ పద్ధతి కూడా అనుకూలంగా ఉంటుంది, అప్పుడు సర్వర్ బ్లాక్ ఫీల్డ్ లోపల ఉంటుంది.
  2. మీ రూటర్ చేయగలిగినంత స్మార్ట్ ఉండాలి
    • మీకు నచ్చిన ఏదైనా VPN క్లయింట్ (నేను OpenVPNని ఇష్టపడతాను, కానీ అది PPTP, L2TP, GRE+IPSec మరియు టన్నెల్ ఇంటర్‌ఫేస్‌ను సృష్టించే ఏదైనా ఇతర ఎంపిక కావచ్చు);
    • BGPv4 ప్రోటోకాల్. అంటే SOHO కోసం ఇది Mikrotik లేదా OpenWRT/LEDE/క్వాగా లేదా బర్డ్‌ని ఇన్‌స్టాల్ చేయడానికి మిమ్మల్ని అనుమతించే ఇలాంటి కస్టమ్ ఫర్మ్‌వేర్‌తో ఏదైనా రౌటర్ కావచ్చు. PC రూటర్‌ని ఉపయోగించడం కూడా నిషేధించబడలేదు. ఎంటర్‌ప్రైజ్ కోసం, BGP మద్దతు కోసం మీ సరిహద్దు రూటర్ కోసం డాక్యుమెంటేషన్‌ను చూడండి.
  3. BGPతో సహా Linux వినియోగం మరియు నెట్‌వర్క్ టెక్నాలజీల గురించి మీకు తెలిసి ఉండాలి. లేదా కనీసం ఆ ఆలోచనను పొందాలనుకుంటున్నారా. ఈ సారి అపారతను స్వీకరించడానికి నేను సిద్ధంగా లేనందున, మీకు అర్థం కాని కొన్ని అంశాలను మీరు మీ స్వంతంగా అధ్యయనం చేయాలి. అయితే, నేను ఖచ్చితంగా, వ్యాఖ్యలలో నిర్దిష్ట ప్రశ్నలకు సమాధానం ఇస్తాను మరియు నేను మాత్రమే సమాధానం చెప్పే అవకాశం లేదు, కాబట్టి అడగడానికి సంకోచించకండి.

ఉదాహరణలో ఏమి ఉపయోగించబడింది

  • రిజిస్టర్ కాపీ https://github.com/zapret-info/z-i 
  • VPS - ఉబుంటు 16.04
  • రూటింగ్ సేవ - పక్షి 1.6.3   
  • రూటర్ - మైక్రోటిక్ hAP ac
  • వర్కింగ్ ఫోల్డర్‌లు - మేము రూట్‌గా పని చేస్తున్నందున, చాలా వరకు రూట్ హోమ్ ఫోల్డర్‌లో ఉంచబడతాయి. వరుసగా:
    • /రూట్/బ్లాక్‌లిస్ట్ - కంపైలేషన్ స్క్రిప్ట్‌తో వర్కింగ్ ఫోల్డర్
    • /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 వైపు సొరంగంకు మద్దతిచ్చే ప్రత్యేక ఇంటర్‌ఫేస్‌ను మీ రూటర్‌లో సృష్టించాలి. ఎక్కువగా ఉపయోగించే VPN టెక్నాలజీలు ఈ అవసరాన్ని తీరుస్తాయి - ఉదాహరణకు, tun మోడ్‌లో OpenVPN మంచిది.

రిజిస్ట్రీ కాపీని పొందండి

జబ్రాయిల్ అన్నట్లుగా, "మనకు అడ్డుపడేవాడు మనకు సహాయం చేస్తాడు." RKN నిషేధిత వనరుల రిజిస్ట్రీని సృష్టిస్తున్నందున, మా సమస్యను పరిష్కరించడానికి ఈ రిజిస్ట్రీని ఉపయోగించకపోవడమే పాపం. మేము github నుండి రిజిస్ట్రీ కాపీని అందుకుంటాము.

మేము మీ Linux సర్వర్‌కి వెళ్తాము, రూట్'a (సుడో సు-) మరియు ఇది ఇప్పటికే ఇన్‌స్టాల్ చేయకపోతే gitని ఇన్‌స్టాల్ చేయండి.

apt install git

మీ హోమ్ డైరెక్టరీకి వెళ్లి రిజిస్ట్రీ కాపీని బయటకు తీయండి.

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

క్రాన్ అప్‌డేట్‌ను సెటప్ చేయండి (నేను ప్రతి 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 స్క్రిప్ట్ తర్వాత సృష్టించబడుతుంది.

రూటింగ్ సేవను ఇన్‌స్టాల్ చేయడం మరియు కాన్ఫిగర్ చేయడం

పక్షిని ఇన్స్టాల్ చేయండి. దురదృష్టవశాత్తూ, ప్రస్తుతం ఉబుంటు రిపోజిటరీలలో విడుదల చేయబడిన పక్షి వెర్షన్ ఆర్కియోప్టెరిక్స్ మలం తాజాదనాన్ని పోల్చవచ్చు, కాబట్టి మనం ముందుగా సాఫ్ట్‌వేర్ డెవలపర్‌ల అధికారిక PPAని సిస్టమ్‌కు జోడించాలి.

add-apt-repository ppa:cz.nic-labs/bird
apt update
apt install 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 చిరునామా వలె కనిపిస్తుంది, కానీ అది కాదు. మా విషయంలో, ఇది IPv32 చిరునామా ఆకృతిలో ఏదైనా 4-బిట్ నంబర్ కావచ్చు, కానీ మీ పరికరం యొక్క IPv4 చిరునామాను (ఈ సందర్భంలో, VPS) అక్కడ పేర్కొనడం మంచి పద్ధతి.

రూటింగ్ ప్రక్రియతో ఏ ఇంటర్‌ఫేస్‌లు పని చేస్తాయో ప్రోటోకాల్ డైరెక్ట్ నిర్ణయిస్తుంది. ఉదాహరణ పేర్ల యొక్క రెండు ఉదాహరణలను ఇస్తుంది, మీరు మరిన్ని జోడించవచ్చు. మీరు లైన్‌ను కూడా తొలగించవచ్చు, ఈ సందర్భంలో సర్వర్ IPv4 చిరునామాతో అందుబాటులో ఉన్న అన్ని ఇంటర్‌ఫేస్‌లను వింటుంది.

ప్రోటోకాల్ స్టాటిక్ అనేది మా మ్యాజిక్, ఇది తదుపరి ప్రకటన కోసం ఫైల్‌ల నుండి ప్రిఫిక్స్‌లు మరియు ip చిరునామాల జాబితాలను (అవి, వాస్తవానికి, /32 ఉపసర్గలు) లోడ్ చేస్తుంది. ఈ జాబితాలు ఎక్కడ నుండి వచ్చాయి అనేది క్రింద చర్చించబడుతుంది. ip చిరునామాల లోడ్ డిఫాల్ట్‌గా వ్యాఖ్యానించబడిందని దయచేసి గమనించండి, దీనికి కారణం పెద్ద మొత్తంలో అప్‌లోడ్ చేయడమే. పోలిక కోసం, కథనాన్ని వ్రాసే సమయంలో, ఉపసర్గల జాబితాలో 78 పంక్తులు ఉన్నాయి మరియు ip చిరునామాల జాబితాలో 85898 ఉన్నాయి. మీరు ఉపసర్గల జాబితాలో మాత్రమే ప్రారంభించి డీబగ్ చేయవలసిందిగా నేను గట్టిగా సిఫార్సు చేస్తున్నాను మరియు లేదో నిర్ణయించుకోండి మీ రూటర్‌తో ప్రయోగాలు చేసిన తర్వాత భవిష్యత్తులో ip లోడింగ్‌ని ప్రారంభించడానికి. రూటింగ్ టేబుల్‌లోని 85 వేల ఎంట్రీలను ప్రతి ఒక్కరూ సులభంగా జీర్ణించుకోలేరు.

ప్రోటోకాల్ bgp నిజానికి మీ రూటర్‌తో bgp పీరింగ్‌ని సెట్ చేస్తుంది. ip-address అనేది రౌటర్ యొక్క బాహ్య ఇంటర్ఫేస్ యొక్క చిరునామా (లేదా రూటర్ వైపు నుండి సొరంగం ఇంటర్ఫేస్ యొక్క చిరునామా), 64998 మరియు 64999 స్వయంప్రతిపత్త వ్యవస్థల సంఖ్యలు. ఈ సందర్భంలో, వాటిని ఏదైనా 16-బిట్ సంఖ్యల రూపంలో కేటాయించవచ్చు, అయితే RFC6996 - 64512-65534 కలుపుకొని నిర్వచించిన ప్రైవేట్ పరిధి నుండి AS నంబర్‌లను ఉపయోగించడం మంచి పద్ధతి (32-బిట్ ASN ఫార్మాట్ ఉంది, కానీ మా విషయంలో ఇది ఖచ్చితంగా ఓవర్ కిల్). వివరించిన కాన్ఫిగరేషన్ eBGP పీరింగ్‌ను ఉపయోగిస్తుంది, దీనిలో రౌటింగ్ సేవ మరియు రౌటర్ యొక్క స్వయంప్రతిపత్త సిస్టమ్ సంఖ్యలు తప్పనిసరిగా భిన్నంగా ఉండాలి.

మీరు చూడగలిగినట్లుగా, సేవ రౌటర్ యొక్క IP చిరునామాను తెలుసుకోవాలి, కాబట్టి మీరు డైనమిక్ లేదా నాన్-రూటబుల్ ప్రైవేట్ (RFC1918) లేదా షేర్డ్ (RFC6598) చిరునామాను కలిగి ఉంటే, బాహ్య ఇంటర్‌ఫేస్‌లో పీరింగ్‌ని పెంచడానికి మీకు ఎంపిక లేదు, కానీ సేవ ఇప్పటికీ సొరంగం లోపల పని చేస్తుంది.

మీరు ఒక సేవ నుండి అనేక విభిన్న రౌటర్లను అందించగలరని కూడా ఇది చాలా పారదర్శకంగా ఉంటుంది - పొరుగువారి IP చిరునామాను మార్చడం ద్వారా ప్రోటోకాల్ bgp విభాగాన్ని కాపీ చేయడం ద్వారా వాటి కోసం సెట్టింగ్‌లను నకిలీ చేయండి. అందుకే ఉదాహరణ సొరంగం వెలుపల పీరింగ్ కోసం సెట్టింగులను అత్యంత సార్వత్రికమైనదిగా చూపుతుంది. సెట్టింగ్స్‌లోని IP చిరునామాలను తదనుగుణంగా మార్చడం ద్వారా వాటిని సొరంగంలోకి తీసివేయడం కష్టం కాదు.

రూటింగ్ సేవ కోసం రిజిస్ట్రీ ప్రాసెసింగ్

ఇప్పుడు మనకు, వాస్తవానికి, ప్రోటోకాల్ స్టాటిక్‌లో మునుపటి దశలో పేర్కొన్న ప్రిఫిక్స్‌లు మరియు ip-అడ్రస్‌ల జాబితాలను సృష్టించడం అవసరం. దీన్ని చేయడానికి, మేము రిజిస్ట్రీ ఫైల్‌ని తీసుకుంటాము మరియు దాని నుండి మనకు అవసరమైన ఫైల్‌లను కింది స్క్రిప్ట్‌తో తయారు చేస్తాము. /రూట్/బ్లాక్‌లిస్ట్/మేక్‌బిజిపి

#!/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 ఎంట్రీలను చూపాలి (ఇది ప్రస్తుతానికి, మరియు మీరు దీన్ని సెటప్ చేసినప్పుడు, ప్రతిదీ నెట్‌వర్క్‌లను నిరోధించడంలో ILV యొక్క ఉత్సాహంపై ఆధారపడి ఉంటుంది) ఇలా:

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 పీరింగ్‌ని పెంచడం మరియు మా సొరంగం (మీరు p2p ఇంటర్‌ఫేస్ ద్వారా ట్రాఫిక్‌ను అవుట్‌పుట్ చేయవలసి వస్తే) లేదా ట్రాఫిక్ ఈథర్‌నెట్‌కు వెళితే nexthop ip-అడ్రస్‌ని చూపుతూ, అందుకున్న అన్ని ప్రిఫిక్స్‌లకు nexthopని జోడించడం ప్రధాన తర్కం.

ఉదాహరణకు, 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

మరియు సిస్కో 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 పీరింగ్ మరియు ఉపయోగకరమైన ట్రాఫిక్‌ని ప్రసారం చేయడం కోసం ఒకే సొరంగం ఉపయోగించబడిన సందర్భంలో, నెక్స్ట్‌హాప్‌ని సెట్ చేయవలసిన అవసరం లేదు, ఇది ప్రోటోకాల్ ద్వారా సరిగ్గా సెట్ చేయబడుతుంది. కానీ మీరు దీన్ని మాన్యువల్‌గా సెట్ చేస్తే, అది కూడా అధ్వాన్నంగా ఉండదు.

ఇతర ప్లాట్‌ఫారమ్‌లలో, మీరు కాన్ఫిగరేషన్‌ను మీరే గుర్తించవలసి ఉంటుంది, కానీ మీకు ఏవైనా ఇబ్బందులు ఉంటే, వ్యాఖ్యలలో వ్రాయండి, నేను సహాయం చేయడానికి ప్రయత్నిస్తాను.

మీ BGP సెషన్ పెరిగిన తర్వాత, పెద్ద నెట్‌వర్క్‌లకు మార్గాలు వచ్చాయి మరియు టేబుల్‌లో ఇన్‌స్టాల్ చేయబడ్డాయి, వాటి నుండి చిరునామాలకు ట్రాఫిక్ పోయింది మరియు ఆనందం దగ్గరగా ఉంది, మీరు పక్షుల సేవకు తిరిగి వెళ్లి, అక్కడ ఉన్న ఎంట్రీని అన్‌కామెంట్ చేయడానికి ప్రయత్నించవచ్చు ip చిరునామాల జాబితా, ఆ తర్వాత అమలు చేయండి

systemctl reload bird

మరియు మీ రూటర్ ఈ 85 వేల మార్గాలను ఎలా బదిలీ చేసిందో చూడండి. దీన్ని ఆఫ్ చేయడానికి సిద్ధంగా ఉండండి మరియు దానితో ఏమి చేయాలో ఆలోచించండి 🙂

మొత్తం

పూర్తిగా సిద్ధాంతపరంగా, పైన పేర్కొన్న దశలను అమలు చేసిన తర్వాత, ఫిల్టరింగ్ సిస్టమ్‌ను దాటి రష్యన్ ఫెడరేషన్‌లో నిషేధించబడిన IP చిరునామాలకు ట్రాఫిక్‌ను స్వయంచాలకంగా దారి మళ్లించే సేవ మీకు ఉంది.

ఇది, వాస్తవానికి, మెరుగుపరచబడుతుంది. ఉదాహరణకు, పెర్ల్ లేదా పైథాన్ సొల్యూషన్స్ ద్వారా ip చిరునామాల జాబితాను సంగ్రహించడం చాలా సులభం. Net::CIDR::Liteతో దీన్ని చేసే ఒక సాధారణ పెర్ల్ స్క్రిప్ట్ 85 వేల ప్రిఫిక్స్‌లను 60 (వెయ్యి కాదు)గా మారుస్తుంది, అయితే సహజంగా బ్లాక్ చేయబడిన దానికంటే చాలా పెద్ద శ్రేణి చిరునామాలను కవర్ చేస్తుంది.

సేవ ISO / OSI మోడల్ యొక్క మూడవ స్థాయిలో పనిచేస్తుంది కాబట్టి, ఇది రిజిస్ట్రీలో నమోదు చేయబడిన చిరునామాకు పరిష్కరించబడకపోతే, సైట్ / పేజీ బ్లాకింగ్ నుండి మిమ్మల్ని రక్షించదు. కానీ github నుండి రిజిస్ట్రీతో పాటు, nxdomain.txt ఫైల్ వస్తుంది, ఇది స్క్రిప్ట్ యొక్క కొన్ని స్ట్రోక్‌లతో సులభంగా చిరునామాల మూలంగా మారుతుంది, ఉదాహరణకు, Chromeలోని SwitchyOmega ప్లగ్ఇన్.

మీరు ఇంటర్నెట్ వినియోగదారు మాత్రమే కాకుండా, మీ నుండి కొన్ని వనరులను ప్రచురించినట్లయితే (ఉదాహరణకు, ఈ కనెక్షన్‌లో వెబ్‌సైట్ లేదా మెయిల్ సర్వర్ నడుస్తుంది) పరిష్కారానికి అదనపు పదును పెట్టడం అవసరమని కూడా పేర్కొనాలి. రౌటర్ ద్వారా, మీరు ఈ సేవ నుండి మీ పబ్లిక్ చిరునామాకు అవుట్‌గోయింగ్ ట్రాఫిక్‌ను హార్డ్-బైండ్ చేయాలి, లేకుంటే మీరు రౌటర్ అందుకున్న ప్రిఫిక్స్‌ల జాబితాతో కవర్ చేయబడిన ఆ వనరులతో కనెక్టివిటీని కోల్పోతారు.

మీకు ఏవైనా ప్రశ్నలు ఉంటే - అడగండి, సమాధానం ఇవ్వడానికి సిద్ధంగా ఉండండి.

UPD. ధన్యవాదాలు నౌకాదళం и TerANYu డౌన్‌లోడ్ వాల్యూమ్‌లను తగ్గించడానికి git ఎంపికల కోసం.

UPD2. సహోద్యోగులారా, వ్యాసానికి VPS మరియు రూటర్ మధ్య టన్నెల్ ఏర్పాటుకు సంబంధించిన సూచనలను జోడించకుండా నేను పొరపాటు చేసాను. దీంతో చాలా ప్రశ్నలు తలెత్తుతున్నాయి.
ఒకవేళ, నేను మళ్ళీ గమనించాను - ఈ గైడ్‌లోని దశలను ప్రారంభించడానికి ముందు, మీరు ఇప్పటికే మీకు అవసరమైన దిశలో VPN టన్నెల్‌ను కాన్ఫిగర్ చేసారు మరియు దాని పనితీరును తనిఖీ చేసారు (ఉదాహరణకు, డిఫాల్ట్ లేదా స్టాటిక్‌గా అక్కడ ట్రాఫిక్‌ను చుట్టడం). మీరు ఇంకా ఈ దశను పూర్తి చేయకుంటే, వ్యాసంలోని దశలను అనుసరించడం నిజంగా అర్ధవంతం కాదు. దీని గురించి నాకు ఇంకా నా స్వంత టెక్స్ట్ లేదు, కానీ మీరు VPSలో ఇన్‌స్టాల్ చేయబడిన ఆపరేటింగ్ సిస్టమ్ పేరుతో పాటు “OpenVPN సర్వర్ సెటప్” మరియు మీ రూటర్ పేరుతో “OpenVPN క్లయింట్ సెటప్” అని గూగుల్ చేస్తే, చాలా మటుకు మీరు హాబ్రేతో సహా ఈ అంశంపై అనేక కథనాలను కనుగొంటారు.

UPD3. త్యాగం చేయని ip చిరునామాల ఐచ్ఛిక సమ్మషన్‌తో dump.csv నుండి బర్డ్ కోసం ఫలిత ఫైల్‌ను రూపొందించే కోడ్‌ను వ్రాసారు. అందువల్ల, "రౌటింగ్ సేవ కోసం రిజిస్ట్రీ ప్రాసెసింగ్" విభాగం దాని ప్రోగ్రామ్‌కు కాల్‌తో భర్తీ చేయబడుతుంది. https://habr.com/post/354282/#comment_10782712

UPD4. లోపాలపై కొంచెం పని (టెక్స్ట్‌లో సహకరించలేదు):
1) బదులుగా systemctl రీలోడ్ పక్షి ఆదేశాన్ని ఉపయోగించడం అర్ధమే birdc కాన్ఫిగర్.
2) మైక్రోటిక్ రూటర్‌లో, తదుపరి-హాప్‌ను సొరంగం యొక్క రెండవ వైపు IPకి మార్చడానికి బదులుగా /రౌటింగ్ ఫిల్టర్ యాడ్ యాక్షన్=అంగీకరించు చైన్=డైనమిక్-ఇన్ ప్రోటోకాల్=bgp వ్యాఖ్య="Nexthopని సెట్ చేయి" set-in-nexthop=172.30.1.1 చిరునామా లేకుండా నేరుగా టన్నెల్ ఇంటర్‌ఫేస్‌కు మార్గాన్ని పేర్కొనడం సమంజసం /రౌటింగ్ ఫిల్టర్ add action=accept chain=dynamic-in protocol=bgp comment="Set nexthop" set-in-nexthop-direct=<interface name>

UPD5. కొత్త సర్వీస్ వచ్చింది https://antifilter.download, ఇక్కడ నుండి మీరు ip-చిరునామాల యొక్క రెడీమేడ్ జాబితాలను తీసుకోవచ్చు. ప్రతి అరగంటకు నవీకరించబడుతుంది. క్లయింట్ వైపు, సంబంధిత “మార్గం ... తిరస్కరించు”తో ఎంట్రీలను ఫ్రేమ్ చేయడం మాత్రమే మిగిలి ఉంది.
మరియు అది బహుశా నా అమ్మమ్మను షాగ్ చేయడానికి మరియు కథనాన్ని నవీకరించడానికి సరిపోతుంది.

UPD6. అర్థం చేసుకోని, కానీ ప్రారంభించాలనుకునే వారి కోసం వ్యాసం యొక్క సవరించిన సంస్కరణ - ఇక్కడ.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి