Blackhole ruta nasuprot VPN kill switchu: što svaki od njih radi
Blackhole ruta odbacuje odgovarajući promet i nameće put koji ostaje zatvoren pri otkazu. Usporedite njezin opseg i slijepe točke s kill switchom koji se temelji na filtriranju paketa.
Paket napušta prijenosno računalo, nikad ne stiže do VPN pristupnika i nijedan brojač vatrozida se ne pomiče. Tablica usmjeravanja već je odlučila sudbinu paketa: blackhole unos se poklopio s njim i jezgra ga je odbacila prije nego što ga je vidjelo bilo koje sučelje. Takvo ponašanje korisno je kada odredište treba pasti zatvoreno, ali to je radnja usmjeravanja uskog opsega. Upravo je tretiranje toga kao potpunog kill switcha mjesto gdje dizajni pogriješe.
Što radnja odbacivanja zapravo pokriva
Pretraga rute odabire tablicu, a zatim najdulji odgovarajući prefiks u njoj. Blackhole ruta običan je unos čija je radnja odbacivanje, pa utječe samo na pakete koji bi odabrali taj unos nakon cijele odluke. Promijenite tablicu pravilom politike ili dodajte konkretniji prefiks i odbacivanje više ne vrijedi.
Zato je opseg blackhole-a precizan i lako se opisuje: pokriva prefiks, u tablici, za tu obitelj adresa. Ne pokriva odredište koje bi dobila druga tablica i ne pokriva IPv6 samo zato što je IPv4 prefiks odbačen.
ip route get prikazuje odluku prije nego što bilo što postavite, uključujući tablicu i vrstu rute. Čitanje tog izlaza brže je od zaključivanja iz neuspjelog zahtjeva koje je pravilo ili prefiks djelovalo.
Blackhole nije isto što i unreachable ili prohibit
Linux nudi tri vrste ruta sličnih odbacivanju i one se razlikuju po tome što pošiljatelj vidi. Blackhole odbacuje paket bez odgovora, pa klijent vidi istek vremena. Unreachable ruta vraća ICMP unreachable poruku, pa veza brzo pada s pogreškom hosta ili mreže. Prohibit ruta vraća pogrešku administrativne zabrane, što je bliže namjernom odbijanju politike.
Odaberite ponašanje koje želite da aplikacija vidi. Tiho odbacivanje prikladno je kada ne želite otkriti politiku, a trenutna pogreška bolja je kada korisnici trebaju razumjeti zašto je odredište nedostupno. Miješanje vrsta kroz mrežu stvara tikete podrške koji istu politiku opisuju kao tri različita kvara.
Ne pretpostavljajte da je svaki unos odbacivanja zamjenjiv kada dijagnosticirate vezu. Tekst pogreške, vrijeme i snimka paketa razlikuju se, a vrsta rute u tablici govori vam na koju gledate. ip-route priručnik navodi vrste i njihovo ponašanje pri pogrešci.
Kako se uspoređuje s kill switchom
Kill switch je filtriranje paketa: vatrozidno pravilo koje odbacuje izlazni promet koji bi izašao izvan tunela. Blackhole ruta je odluka o prosljeđivanju donesena ranije u stogu. Oba mogu zaustaviti promet, ali vide različite stvari i promašuju različite slučajeve.
| Mechanism | What it blocks | What it misses | How failure looks |
|---|---|---|---|
| Blackhole route | Destinations matching the prefix and table | Other tables, other address families, traffic with a different route | Silent timeout |
| Firewall kill switch | Egress not bound to the tunnel interface | Rules that are too broad can break the endpoint or DHCP | Dropped packets with counters |
| WireGuard AllowedIPs | Destinations not routed into the interface | Traffic that never enters the interface at all | No tunnel route, direct egress |
Opseg je ono gdje je usporedba važna. Vatrozid može upariti vlasnika, port ili sučelje i blokirati aplikaciju dok krajnja točka ostaje dostupna; ruta to ne može. Suprotno tome, ruta može poslati cijeli prefiks u odbacivanje bez ijednog učitanog filtra paketa, što je korisno na minimalnom sustavu.
WireGuard AllowedIPs je kriptoključno usmjeravanje, a ne vatrozid. Odlučuje koji se prefiksi odredišta prihvaćaju u sučelje, a profil koji navodi samo podmrežu tunela jednostavno ostavlja druga odredišta običnoj zadanoj ruti. Zato profili punog tunela koriste 0.0.0.0/0 i zato wg-quick također instalira vatrozidna pravila kada može.
Držite krajnju točku tunela izvan odbacivanja
Vanjski adres krajnje točke mora ostati dostupan kroz fizičko sučelje. Odbacivanje koje uhvati i taj adres sprječava da rukovanje izađe i tunel se nikada ne podiže, što izgleda kao kvar VPN-a, a ne kao politika usmjeravanja. Provjerite rutu do krajnje točke prije i poslije promjene.
Upravljački pristup pripada istom pregledu. Ako je jedini put do usmjerivača ili klijenta tunel, preširoko odbacivanje može vas zaključati izvan stroja koji bi vam omogućio da ga uklonite. Držite dokumentiranu izvanpojasnu rutu, konzolu ili vraćanje po timeru.
IPv6 treba vlastiti unos i vlastiti pregled. Dizajn koji odbacuje IPv4 u blackhole, a ostavlja IPv6 na zadanoj ruti, curi upravo onaj promet koji je politika trebala zaustaviti, a pogreška je nevidljiva u testu samo za IPv4.
Uvedite to fazno s timerom i vraćanjem
Primijenite rutu s kratkim automatskim uklanjanjem da pogreška ne može ostati nakon restarta. Naredbe u nastavku koriste raspon za dokumentaciju; zamijenite ga prefiksom koji vaš dizajn zaista odbacuje:
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/8Druga naredba trebala bi prijaviti blackhole rutu i tablicu iz koje dolazi. Treća zakazuje uklanjanje za jednu minutu, što je dovoljno vremena da potvrdite politiku i dovoljno kratko da se oporavite od pogreške na udaljenom hostu. Kad se ponašanje potvrdi, učinite unos trajnim kroz isto upravljanje konfiguracijom koje posjeduje ostale rute.
Zatvorite promjenu tako što ćete zabilježiti prefiks, tablicu, obitelj adresa i metodu vraćanja. Odbacivanje je namjerna iznimka u dizajnu usmjeravanja i sljedeći inženjer mora znati koji je promet trebalo zaustaviti prije nego odluči da li još pripada.