Twaqqif ta' BGP biex taqbeż l-imblukkar, jew "Kif waqaft nibża' u inħobb RKN"
Ukoll, okay, dwar "maħbub" hija esaġerazzjoni. Pjuttost, “kien kapaċi jikkoeżistu maʼ.”
Kif tafu lkoll, mis-16 ta’ April 2018, Roskomnadzor ilu jimblokka l-aċċess għar-riżorsi fuq l-Internet b’mod wiesa’ ħafna, u żied mar-“Reġistru Unifikat tal-ismijiet tad-dominju, indiċi tal-paġni ta’ siti fuq l-Internet u indirizzi tan-netwerk li jippermettu l-identifikazzjoni tas-siti. fuq l-Internet,” li jkun fiha informazzjoni li d-distribuzzjoni tagħha hija pprojbita fil-Federazzjoni Russa” (fit-test - reġistru biss) minn /10 kultant. Bħala riżultat, iċ-ċittadini tal-Federazzjoni Russa u n-negozji qed ibatu, billi tilfu l-aċċess għar-riżorsi kompletament legali li għandhom bżonn.
Wara li fil-kummenti ta’ wieħed mill-artikoli fuq Habré għedt li kont lest ngħin lill-vittmi fit-twaqqif ta’ skema ta’ bypass, ġew għandi diversi nies jitolbu għal għajnuna bħal din. Meta kollox ħadem għalihom, wieħed minnhom irrakkomanda li tiddeskrivi t-teknika f'artiklu. Wara ftit ħsieb, iddeċidejt li nkisser is-silenzju tiegħi fuq is-sit u nipprova għal darba nikteb xi ħaġa intermedja bejn proġett u post fuq Facebook, i.e. habrapost. Ir-riżultat qiegħed quddiemek.
Ċaħda ta 'responsabbiltà
Peress li mhuwiex legali ħafna li tippubblika modi kif tevita l-imblukkar tal-aċċess għall-informazzjoni pprojbita fit-territorju tal-Federazzjoni Russa, l-iskop ta 'dan l-artikolu se jkun li titkellem dwar metodu li jippermettilek awtomat biex tikseb aċċess għal riżorsi li huma permessi fuq il- territorju tal-Federazzjoni Russa, iżda minħabba l-azzjonijiet ta 'xi ħadd ieħor mhumiex direttament aċċessibbli permezz tal-fornitur tiegħek. U l-aċċess għal riżorsi oħra miksuba bħala riżultat ta 'azzjonijiet mill-artikolu huwa effett sekondarju sfortunat u bl-ebda mod mhu l-iskop tal-artikolu.
Barra minn hekk, peress li jien primarjament perit tan-netwerk bil-professjoni, il-vokazzjoni u t-triq tal-ħajja, l-ipprogrammar u l-Linux mhumiex il-punti b'saħħithom tiegħi. Għalhekk, ovvjament, l-iskripts jistgħu jinkitbu aħjar, kwistjonijiet ta 'sigurtà fil-VPS jistgħu jinħadmu aktar fil-fond, eċċ. Is-suġġerimenti tiegħek jiġu aċċettati bi gratitudni, jekk ikunu dettaljati biżżejjed - inkun kuntent li nżidhom mat-test tal-artiklu.
TL; DR
Aħna awtomatizzaw l-aċċess għar-riżorsi permezz tal-mina eżistenti tiegħek billi tuża kopja tar-reġistru u l-protokoll BGP. L-għan huwa li jitneħħa t-traffiku kollu indirizzat għar-riżorsi mblukkati fil-mina. Spjegazzjonijiet minimi, l-aktar struzzjonijiet pass pass.
X'għandek bżonn għal dan?
Sfortunatament, din il-kariga mhix għal kulħadd. Sabiex tuża din it-teknika, ser ikollok bżonn tgħaqqad diversi elementi flimkien:
Irid ikollok server tal-Linux x'imkien barra l-qasam tal-imblukkar. Jew għall-inqas ix-xewqa li jkun hemm server bħal dan - fortunatament issa jiswa minn $ 9/sena, u possibilment inqas. Il-metodu huwa adattat ukoll jekk għandek mina VPN separata, allura s-server jista 'jinstab ġewwa l-qasam tal-imblukkar.
Ir-router tiegħek għandu jkun intelliġenti biżżejjed biex ikun kapaċi
kwalunkwe klijent VPN li tixtieq (nippreferi OpenVPN, iżda jista 'jkun PPTP, L2TP, GRE+IPSec jew kwalunkwe għażla oħra li toħloq interface tal-mina);
protokoll BGPv4. Li jfisser li għal SOHO jista 'jkun Mikrotik jew kwalunkwe router b'OpenWRT/LEDE/firmware personalizzat simili li jippermettilek tinstalla Quagga jew Bird. L-użu ta 'router tal-PC mhuwiex ipprojbit ukoll. Fil-każ ta 'intrapriża, fittex appoġġ BGP fid-dokumentazzjoni għar-router tal-fruntiera tiegħek.
Għandu jkollok għarfien dwar l-użu tal-Linux u t-teknoloġiji tan-netwerking, inkluż il-protokoll BGP. Jew għall-inqas trid tieħu idea bħal din. Peress li jien mhux lest li nħaddan l-immensità din id-darba, inti jkollok tistudja xi aspetti li huma inkomprensibbli għalik waħdek. Madankollu, ovvjament, se nwieġeb mistoqsijiet speċifiċi fil-kummenti u x'aktarx ma nkunx l-uniku wieħed li jwieġeb, għalhekk toqgħodx lura milli tistaqsi.
Fowlders tax-xogħol - peress li qed naħdmu bħala għerq, ħafna minn kollox se jkun jinsab fil-folder tad-dar tal-għeruq. Rispettivament:
/root/blacklist - folder tax-xogħol bl-iskrittura tal-kumpilazzjoni
/root/zi - kopja tar-reġistru minn github
/etc/bird - folder standard għall-issettjar tas-servizz tal-għasafar
L-indirizz IP estern tal-VPS bis-server tar-routing u l-punt tat-terminazzjoni tal-mina huwa 194.165.22.146, ASN 64998; indirizz IP estern tar-router - 81.177.103.94, ASN 64999
L-indirizzi IP ġewwa l-mina huma 172.30.1.1 u 172.30.1.2, rispettivament.
Naturalment, tista 'tuża kwalunkwe routers, sistemi operattivi u prodotti ta' softwer oħra, billi taġġusta s-soluzzjoni għall-loġika tagħhom.
Fil-qosor - il-loġika tas-soluzzjoni
Azzjonijiet preparatorji
Jkollna VPS
Tqajjem mina mir-router għall-VPS
Nirċievu u naġġornaw regolarment kopja tar-reġistru
Installazzjoni u konfigurazzjoni tas-servizz tar-routing
Aħna noħolqu lista ta 'rotot statiċi għas-servizz tar-rotot ibbażati fuq ir-reġistru
Aħna nqabbdu r-router mas-servizz u kkonfiguraw nibagħtu t-traffiku kollu mill-mina.
Is-soluzzjoni attwali
Azzjonijiet preparatorji
Hemm ħafna servizzi fuq l-Internet li jipprovdu VPS għal prezzijiet estremament raġonevoli. S'issa sibt u qed nuża l-għażla għal $ 9/sena, imma anki jekk ma tiddejjaqx wisq, hemm ħafna għażliet għal 1E/xahar f'kull rokna. Il-kwistjoni tal-għażla ta 'VPS tinsab ferm lil hinn mill-ambitu ta' dan l-artikolu, għalhekk jekk xi ħadd ma jifhimx xi ħaġa dwar dan, staqsi fil-kummenti.
Jekk tuża VPS mhux biss għas-servizz tar-rotta, iżda wkoll biex ittemm mina fuqha, għandek bżonn tgħolli din il-mina u, kważi ċertament, tikkonfigura NAT għaliha. Hemm numru kbir ta 'struzzjonijiet dwar dawn l-azzjonijiet fuq l-Internet, mhux se nirrepetihom hawn. Ir-rekwiżit ewlieni għal mina bħal din huwa li trid toħloq interface separat fuq ir-router tiegħek li tappoġġja l-mina lejn il-VPS. Il-biċċa l-kbira tat-teknoloġiji VPN użati jissodisfaw dan ir-rekwiżit - pereżempju, OpenVPN fil-modalità tun huwa perfett.
Ikseb kopja tar-reġistru
Kif qal Jabrail, “Min ifixkilna jgħinna.” Peress li l-RKN qed toħloq reġistru ta’ riżorsi pprojbiti, ikun dnub li ma nużawx dan ir-reġistru biex issolvi l-problema tagħna. Se nirċievu kopja tar-reġistru minn github.
Immorru fis-server tal-Linux tiegħek, naqgħu fil-kuntest tal-għeruq (sudo su —) u installa git jekk ma jkunx diġà installat.
apt install git
Mur fid-direttorju tad-dar tiegħek u iġbed kopja tar-reġistru.
cd ~ && git clone --depth=1 https://github.com/zapret-info/z-i
Aħna waqqafna aġġornament tal-cron (nagħmel dan darba kull 20 minuta, iżda tista 'tagħżel kwalunkwe intervall li jinteressak). Biex nagħmlu dan inniedu crontab -e u żid il-linja li ġejja magħha:
*/20 * * * * cd ~/z-i && git pull && git gc
Aħna nqabbdu ganċ li se joħloq fajls għas-servizz tar-rotot wara li taġġorna r-reġistru. Biex tagħmel dan, oħloq fajl /root/zi/.git/hooks/post-merge bil-kontenut li ġej:
Aħna se noħolqu l-iskrittura makebgp li l-ganċ jirreferi għalih ftit aktar tard.
Installazzjoni u konfigurazzjoni ta' servizz ta' routing
Installa għasfur. Sfortunatament, il-verżjoni tal-għasafar li bħalissa tinsab fir-repożitorji Ubuntu hija komparabbli fil-freskezza mal-ħmieġ tal-Archeopteryx, għalhekk jeħtieġ li l-ewwel inżidu l-PPA uffiċjali tal-iżviluppaturi tas-softwer mas-sistema.
Wara dan, aħna immedjatament tiddiżattiva l-għasafar għall-IPv6 - mhux se jkollna bżonnha f'din l-installazzjoni.
systemctl stop bird6
systemctl disable bird6
Hawn taħt hemm fajl tal-konfigurazzjoni tas-servizz minimalista tal-għasafar (/etc/bird/bird.conf), li huwa pjuttost biżżejjed għalina (u nfakkarkom għal darb'oħra li ħadd ma jipprojbixxi l-iżvilupp u l-irfinar tal-idea biex taqdi l-bżonnijiet tiegħek)
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;
}
router id - router identifier, li viżwalment jidher qisu indirizz IPv4, iżda mhuwiex wieħed. Fil-każ tagħna, jista 'jkun kwalunkwe numru ta' 32-bit fil-format tal-indirizz IPv4, iżda hija forma tajba li tindika eżattament l-indirizz IPv4 tat-tagħmir tiegħek (f'dan il-każ, VPS).
protokoll dirett jiddefinixxi liema interfaces se jaħdmu mal-proċess tar-rotta. L-eżempju jagħti ftit ismijiet ta 'eżempji, tista' żżid oħrajn. Tista 'sempliċement tħassar il-linja; f'dan il-każ, is-server se jisma' l-interfaces kollha disponibbli b'indirizz IPv4.
protokoll statiku huwa l-maġija tagħna li jgħabbi listi ta 'prefissi u indirizzi IP (li huma attwalment /32 prefissi, ovvjament) minn fajls għal tħabbira sussegwenti. Minn fejn jiġu dawn il-listi se jiġi diskuss hawn taħt. Jekk jogħġbok innota li t-tagħbija tal-indirizzi IP hija kkummentata awtomatikament, ir-raġuni għal dan hija l-volum kbir ta 'uploading. Għat-tqabbil, fil-ħin tal-kitba, hemm linji 78 fil-lista ta 'prefissi, u 85898 fil-lista ta' indirizzi IP. Nirrakkomanda bil-qawwa li tibda u tiddibaggja biss fuq il-lista ta 'prefissi, u jekk tippermettix it-tagħbija tal-IP jew le f' il-futur huwa f'idejk li tiddeċiedi wara li tesperimenta bir-router tiegħek. Mhux kull wieħed minnhom jista 'faċilment jiddiġerixxi 85 elf daħliet fit-tabella tar-rotta.
protokoll bgp, fil-fatt, jistabbilixxi bgp peering mar-router tiegħek. L-indirizz IP huwa l-indirizz tal-interface esterna tar-router (jew l-indirizz tal-interface tal-mina fuq in-naħa tar-router), 64998 u 64999 huma n-numri ta 'sistemi awtonomi. F'dan il-każ, jistgħu jiġu assenjati fil-forma ta' kwalunkwe numri ta' 16-il bit, iżda hija prattika tajba li jintużaw numri AS mill-firxa privata definita minn RFC6996 - 64512-65534 inklużiv (hemm format għal ASNs ta' 32 bit, iżda fil-każ tagħna dan żgur huwa overkill). Il-konfigurazzjoni deskritta tuża eBGP peering, li fih in-numri tas-sistemi awtonomi tas-servizz tar-routing u r-router għandhom ikunu differenti.
Kif tistgħu taraw, is-servizz jeħtieġ li jkun jaf l-indirizz IP tar-router, għalhekk jekk għandek indirizz privat dinamiku jew mhux routable (RFC1918) jew kondiviż (RFC6598), m'għandekx l-għażla li tgħolli l-peering fuq l-estern. interface, iżda s-servizz xorta se jaħdem ġewwa l-mina.
Huwa wkoll pjuttost ċar li minn servizz wieħed tista 'tipprovdi rotot għal diversi routers differenti - sempliċement idduplika s-settings għalihom billi tikkopja t-taqsima bgp tal-protokoll u tibdel l-indirizz IP tal-proxxmu. Huwa għalhekk li l-eżempju juri settings għall-peering barra l-mina, bħala l-aktar universali. Huwa faċli li tneħħihom fil-mina billi tbiddel l-indirizzi IP fis-settings kif xieraq.
Ipproċessar ir-reġistru għas-servizz tar-rotot
Issa għandna bżonn, fil-fatt, li noħolqu listi ta 'prefissi u indirizzi IP, li ssemmew fil-protokoll statiku fl-istadju preċedenti. Biex tagħmel dan, nieħdu l-fajl tar-reġistru u nagħmlu l-fajls li neħtieġu minnu billi tuża l-iskrittura li ġejja, imqiegħda fi /root/blacklist/makebgp
Issa tista 'taħdem manwalment u tosserva d-dehra tal-fajls f'/etc/bird.
Probabbilment, l-għasafar mhux qed jaħdem għalik f'dan il-mument, għaliex fl-istadju ta 'qabel tlabtu biex tfittex fajls li għadhom ma kinux jeżistu. Għalhekk, innieduha u niċċekkjaw li bdiet:
systemctl start bird
birdc show route
L-output tat-tieni kmand għandu juri madwar 80 rekord (dan għalissa, imma meta twaqqafha, kollox jiddependi fuq il-ħeġġa tal-RKN fl-imblukkar tan-netwerks) xi ħaġa bħal din:
se juri l-istatus tal-protokolli fi ħdan is-servizz. Sakemm tkun ikkonfigurat ir-router (ara l-punt li jmiss), il-protokoll OurRouter se jkun fl-istat tal-bidu (Fażi ta 'Konness jew Attiva), u wara konnessjoni b'suċċess imur għall-istat up (fażi Stabbilita). Per eżempju, fis-sistema tiegħi l-output ta 'dan il-kmand jidher bħal dan:
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
Konnessjoni ta 'router
Kulħadd huwa probabbilment għajjien li jaqra dan footcloth, imma ħu l-qalb - it-tmiem huwa qrib. Barra minn hekk, f'din it-taqsima mhux se nkun kapaċi nagħti struzzjonijiet pass pass - se jkun differenti għal kull manifattur.
Madankollu, nista 'nurik ftit eżempji. Il-loġika ewlenija hija li tgħolli l-peering BGP u tassenja nexthop għall-prefissi kollha riċevuti, billi tipponta lejn il-mina tagħna (jekk għandna bżonn nibagħtu t-traffiku permezz ta 'interface p2p) jew l-indirizz IP nexthop jekk it-traffiku se jmur għall-ethernet).
Pereżempju, fuq Mikrotik f'RouterOS dan jiġi solvut kif ġej
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
Jekk l-istess mina tintuża kemm għall-peering BGP kif ukoll għat-trażmissjoni ta 'traffiku utli, mhux meħtieġ li jiġi stabbilit nexthop; se jiġi ssettjat b'mod korrett bl-użu tal-protokoll. Imma jekk issettjaha manwalment, lanqas ma tagħmilha għall-agħar.
Fuq pjattaformi oħra, ser ikollok issib il-konfigurazzjoni lilek innifsek, imma jekk għandek xi diffikultajiet, ikteb fil-kummenti, nipprova ngħin.
Wara li tkun bdiet is-sessjoni tal-BGP tiegħek, ir-rotot għal netwerks kbar ikunu waslu u huma installati fit-tabella, it-traffiku għadda lejn l-indirizzi minnhom u l-kuntentizza hija qrib, tista 'terġa' lura għas-servizz tal-għasafar u tipprova tneħħi l-kumment tad-dħul hemmhekk li jgħaqqad il- lista ta 'indirizzi IP, tesegwixxi wara dak
systemctl reload bird
u ara kif ir-router tiegħek ittrasferixxa dawn il-85 elf rotta. Kun lest li tneħħi l-plagg u taħseb x'għandek tagħmel biha :)
B'kollox
Purament teoretikament, wara li tlesti l-passi deskritti hawn fuq, issa għandek servizz li awtomatikament jidderieġi mill-ġdid it-traffiku lejn indirizzi IP pprojbiti fil-Federazzjoni Russa wara s-sistema ta 'filtrazzjoni.
Jista', ovvjament, jittejjeb. Pereżempju, huwa pjuttost faċli li tiġbor lista ta 'indirizzi IP bl-użu ta' soluzzjonijiet perl jew python. Script Perl sempliċi li jagħmel dan billi juża Net::CIDR::Lite jibdel 85 elf prefiss f'60 (mhux elf), iżda, ovvjament, ikopri firxa ferm akbar ta' indirizzi milli hija mblukkata.
Peress li s-servizz jopera fit-tielet livell tal-mudell ISO/OSI, mhux se jsalvak milli timblokka sit/paġna jekk issolvi l-indirizz ħażin kif irreġistrat fir-reġistru. Iżda flimkien mar-reġistru, il-fajl nxdomain.txt jasal minn github, li bi ftit puplesiji tal-iskrittura faċilment jinbidel f'sors ta 'indirizzi għal, pereżempju, il-plugin SwitchyOmega fil-Chrome.
Huwa wkoll meħtieġ li ssemmi li s-soluzzjoni teħtieġ irfinar addizzjonali jekk m'intix biss utent tal-Internet, iżda wkoll tippubblika xi riżorsi waħdek (pereżempju, websajt jew server tal-posta jimxi fuq din il-konnessjoni). Bl-użu tal-mezzi tar-router, huwa meħtieġ li torbot b'mod strett it-traffiku ħerġin minn dan is-servizz mal-indirizz pubbliku tiegħek, inkella titlef il-konnettività ma 'dawk ir-riżorsi li huma koperti mil-lista ta' prefissi riċevuti mir-router.
Jekk għandek xi mistoqsijiet, staqsi, lest nwieġeb.
UPD. Grazzi navion и TerAnYu għal parametri għal git li jippermettu li jitnaqqsu l-volumi tat-tniżżil.
UPD2. Kollegi, jidher li għamilt żball billi ma żidtx struzzjonijiet għat-twaqqif ta 'mina bejn il-VPS u r-router mal-artiklu. Ħafna mistoqsijiet jitqajmu minn dan.
Fil-każ, ser ninnota għal darb'oħra li qabel ma tibda din il-gwida, diġà kkonfigurajt mina VPN fid-direzzjoni li għandek bżonn u ċċekkja l-funzjonalità tagħha (per eżempju, billi ddawwar it-traffiku hemmhekk awtomatikament jew b'mod statiku). Jekk għadek ma lestejtx din il-fażi, ma jagħmilx sens li ssegwi l-passi fl-artiklu. Għadni m'għandix it-test tiegħi stess dwar dan, imma jekk google "jistabbilixxi server OpenVPN" flimkien mal-isem tas-sistema operattiva installata fuq il-VPS, u "jistabbilixxi klijent OpenVPN" bl-isem tar-router tiegħek , aktarx issib numru ta' artikli dwar dan is-suġġett , inkluż fuq Habré.
UPD3. Mhux ssagrifikat Ktibt kodiċi li jbiddel dump.csv f'fajl li jirriżulta għall-għasafar b'sommarju fakultattiv tal-indirizzi IP. Għalhekk, it-taqsima "L-ipproċessar tar-reġistru għas-servizz tar-rotot" tista 'tiġi sostitwita billi ssejjaħ il-programm tagħha. https://habr.com/post/354282/#comment_10782712
UPD4. Ftit xogħol fuq żbalji (ma żidithomx mat-test):
1) minflok systemctl reload għasfur jagħmel sens li tuża l-kmand birdc kkonfigurat.
2) fir-router Mikrotik, minflok ma tbiddel il-nexthop għall-IP tat-tieni naħa tal-mina /routing filter add action=accept chain=dynamic-in protocol=bgp comment=»Issettja nexthop» set-in-nexthop=172.30.1.1 jagħmel sens li tispeċifika r-rotta direttament għall-interface tal-mina, mingħajr indirizz /routing filter add action=accept chain=dynamic-in protocol=bgp comment=»Issettja nexthop» set-in-nexthop-direct=<isem l-interface>
UPD5. Deher servizz ġdid https://antifilter.download, minn fejn tista 'tiġbor listi lesti ta' indirizzi IP. Aġġornata kull nofs siegħa. Fuq in-naħa tal-klijent, dak kollu li jibqa 'huwa li jinkwadra r-rekords bir-"rotta... rifjut" korrispondenti.
U f'dan il-punt, probabbilment, huwa biżżejjed li tiġbor in-nanna tiegħek u taġġorna l-artiklu.
UPD6. Verżjoni riveduta tal-artiklu għal dawk li ma jridux jifhmuha, iżda jridu jibdew - hawn.