Pakett lahkub sülearvutist, ei jõua kunagi VPN-lüüsini ja ükski tulemüüri loendur ei liigu. Marsruutimistabel on paketi saatuse juba otsustanud: blackhole-kirje sobis sellega ja tuum heitis selle kõrvale, enne kui ükski liides seda nägi. See käitumine on kasulik, kui sihtkoht peab ebaõnnestuma suletult, kuid see on kitsa ulatusega marsruuditoiming. Selle pidamine täielikuks kill switchiks on koht, kus disainid viltu lähevad.

Mida kõrvaleheitmistoiming tegelikult haarab

Marsruudiotsing valib tabeli ja seejärel pikima sobiva prefiksi selles. Blackhole-marsruut on tavaline kirje, mille toiming on kõrvale heita, seega mõjutab see ainult pakette, mis oleksid selle kirje valinud pärast kogu otsust. Muutke tabelit poliitikareegliga või lisage täpsem prefiks ja kõrvaleheitmine ei kehti enam.

Seetõttu on blackhole'i ulatus täpne ja lihtsalt sõnastatav: see katab prefiksi, tabelis, selle aadressiperekonna jaoks. See ei kata sihtkohta, mille võidaks teine tabel, ja ei kata IPv6-t ainult sellepärast, et IPv4-prefiks kõrvale heidetakse.

ip route get näitab otsust enne, kui midagi juurutate, sealhulgas tabelit ja marsruudi tüüpi. Selle väljundi lugemine on kiirem kui ebaõnnestunud päringust järeldada, milline reegel või prefiks mõjus.

Blackhole ei ole sama mis unreachable või prohibit

Linux pakub kolme kõrvaleheitmisega sarnast marsruuditüüpi ja need erinevad selle poolest, mida saatja näeb. Blackhole heidab paketi vastuseta kõrvale, seega klient näeb ajalõppu. Unreachable-marsruut tagastab ICMP unreachable teate, seega ühendus ebaõnnestub kiiresti hosti või võrgu veaga. Prohibit-marsruut tagastab administratiivse keelu vea, mis on lähemal teadlikule poliitikakeeldumisele.

Valige käitumine, mida soovite, et rakendus näeks. Vaikne kõrvaleheitmine on sobiv, kui te ei taha poliitikat paljastada, ja kohene viga on parem, kui kasutajad peavad mõistma, miks sihtkoht pole saadaval. Tüüpide segamine võrgus tekitab tugipileteid, mis kirjeldavad sama poliitikat kolme erineva rikkena.

Ärge eeldage, et iga kõrvaleheitmiskirje on ühenduse diagnoosimisel asendatav. Veatext, ajastus ja paketipüük erinevad ning tabelis olev marsruuditüüp ütleb teile, millist te vaatate. ip-route käsiraamat loetleb tüübid ja nende veakäitumise.

Kuidas see kill switchiga võrdub

Kill switch on paketifilter: tulemüürireegel, mis heidab kõrvale väljuvat liiklust, mis lahkuks tunnelist väljapoole. Blackhole-marsruut on edastusotsus, mis tehakse virnas varem. Mõlemad võivad liikluse peatada, kuid nad näevad erinevaid asju ja jätavad erinevad juhtumid vahele.

MechanismWhat it blocksWhat it missesHow failure looks
Blackhole routeDestinations matching the prefix and tableOther tables, other address families, traffic with a different routeSilent timeout
Firewall kill switchEgress not bound to the tunnel interfaceRules that are too broad can break the endpoint or DHCPDropped packets with counters
WireGuard AllowedIPsDestinations not routed into the interfaceTraffic that never enters the interface at allNo tunnel route, direct egress

Ulatus on see, kus võrdlus loeb. Tulemüür saab sobitada omanikku, porti või liidest ja blokeerida rakendust, jättes lõpp-punkti kättesaadavaks; marsruut ei saa. Vastupidi, marsruut saab saata terve prefiksi kõrvaleheitmisse ilma ühegi paketifiltri laadimiseta, mis on kasulik minimaalses süsteemis.

WireGuardi AllowedIPs on krüptovõtme marsruutimine, mitte tulemüür. See otsustab, millised sihtprefiksid liidesesse vastu võetakse, ja profiil, mis loetleb ainult tunneli alamvõrgu, jätab muud sihtkohad lihtsalt tavalisele vaikemarsruudile. Seetõttu kasutavad täistunneli profiilid 0.0.0.0/0 ja seetõttu paigaldab wg-quick ka tulemüürireeglid, kui suudab.

Hoidke tunneli lõpp-punkt kõrvaleheitmisest väljas

Lõpp-punkti väline aadress peab jääma füüsilise liidese kaudu kättesaadavaks. Kõrvaleheitmine, mis haarab ka selle aadressi, takistab käepigistust välja minemast ja tunnel ei tule kunagi üles, mis näeb välja nagu VPN-i rike, mitte marsruudipoliitika. Kontrollige lõpp-punkti marsruuti enne ja pärast muudatust.

Haldusjuurdepääs kuulub samasse ülevaatesse. Kui ainus tee ruuteri või kliendini on tunnel, võib liiga lai kõrvaleheitmine teid masinast välja lukustada, mis võimaldaks selle eemaldada. Hoidke dokumenteeritud ribavälist marsruuti, konsooli või taimeriga tagasipööramist.

IPv6 vajab oma kirjet ja oma ülevaatust. Disain, mis heidab IPv4 blackhole'i, jättes IPv6 vaikemarsruudile, lekitab täpselt seda liiklust, mille poliitika pidi peatama, ja viga on nähtamatu ainult IPv4 testis.

Juurutage see taimeri ja tagasipööramisega

Rakendage marsruut lühikese automaatse eemaldamisega, et viga ei jääks taaskäivituse üle püsima. Allolevad käsud kasutavad dokumentatsioonivahemikku; asendage see prefiksiga, mille teie disain tegelikult kõrvale heidab:

sudo ip route replace blackhole 10.0.0.0/8
ip route get 10.1.2.3
sudo systemd-run --on-active=60 /sbin/ip route del blackhole 10.0.0.0/8

Teine käsk peaks teatama blackhole-marsruudist ja tabelist, kust see tuli. Kolmas ajastab eemaldamise ühe minuti pärast, mis on piisav aeg poliitika kinnitamiseks ja piisavalt lühike, et kaugmasinas veast taastuda. Kui käitumine on kinnitatud, tehke kirje püsivaks sama konfiguratsioonihalduse kaudu, millele kuuluvad teised marsruudid.

Lõpetage muudatus, registreerides prefiksi, tabeli, aadressiperekonna ja tagasipööramismeetodi. Kõrvaleheitmine on marsruudidisainis teadlik erand ja järgmine insener peab teadma, millist liiklust see pidi peatama, enne kui otsustab, kas see kuulub veel sinna.

Seotud artiklid