Blackhole ruta naspram VPN kill switcha: šta svaki od njih radi
Blackhole ruta odbacuje odgovarajući saobraćaj i nameće put koji ostaje zatvoren pri otkazu. Uporedite njen obim i slijepe tačke s kill switchom zasnovanim na filtriranju paketa.
Paket napušta laptop, nikada ne stiže do VPN pristupnika i nijedan brojač firewall-a se ne pomjera. Tabela ruta je već odlučila sudbinu paketa: blackhole unos se poklopio s njim i kernel ga je odbacio prije nego što ga je vidio bilo koji interfejs. Takvo ponašanje je korisno kada odredište treba da padne zatvoreno, ali to je radnja usmjeravanja uskog obima. Upravo je tretiranje toga kao potpunog kill switcha mjesto gdje dizajni pogriješe.
Šta radnja odbacivanja zapravo pokriva
Pretraga rute bira tabelu, a zatim najduži odgovarajući prefiks u njoj. Blackhole ruta je običan unos čija je radnja odbacivanje, pa utiče samo na pakete koji bi odabrali taj unos nakon cijele odluke. Promijenite tabelu pravilom politike ili dodajte konkretniji prefiks i odbacivanje više ne važi.
Zato je obim blackhole-a precizan i lako se opisuje: pokriva prefiks, u tabeli, za tu adresnu familiju. Ne pokriva odredište koje bi dobila druga tabela i ne pokriva IPv6 samo zato što je IPv4 prefiks odbačen.
ip route get prikazuje odluku prije nego što bilo šta postavite, uključujući tabelu i tip rute. Čitanje tog izlaza je brže od zaključivanja iz neuspjelog zahtjeva koje pravilo ili prefiks je djelovao.
Blackhole nije isto što i unreachable ili prohibit
Linux nudi tri tipa ruta sličnih odbacivanju i oni se razlikuju po tome šta pošiljalac vidi. Blackhole odbacuje paket bez odgovora, pa klijent vidi istek vremena. Unreachable ruta vraća ICMP unreachable poruku, pa veza brzo pada s greškom hosta ili mreže. Prohibit ruta vraća grešku administrativne zabrane, što je bliže namjernom odbijanju politike.
Izaberite ponašanje koje želite da aplikacija vidi. Tiho odbacivanje je prikladno kada ne želite otkriti politiku, a trenutna greška je bolja kada korisnici treba da razumiju zašto je odredište nedostupno. Miješanje tipova 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 dijagnostikujete vezu. Tekst greške, vrijeme i snimka paketa se razlikuju, a tip rute u tabeli vam govori na koji gledate. ip-route priručnik navodi tipove i njihovo ponašanje pri grešci.
Kako se poredi s kill switchom
Kill switch je filtriranje paketa: firewall pravilo koje odbacuje izlazni saobraćaj koji bi izašao izvan tunela. Blackhole ruta je odluka o prosljeđivanju donesena ranije u steku. Oba mogu zaustaviti saobraćaj, 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 |
Obim je ono gdje je poređenje važno. Firewall može upariti vlasnika, port ili interfejs i blokirati aplikaciju dok krajnja tačka ostaje dostupna; ruta to ne može. Suprotno tome, ruta može poslati cijeli prefiks u odbacivanje bez ijednog učitanog filtera paketa, što je korisno na minimalnom sistemu.
WireGuard AllowedIPs je kriptoključno usmjeravanje, a ne firewall. Odlučuje koji prefiksi odredišta se prihvataju u interfejs, 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 firewall pravila kada može.
Držite krajnju tačku tunela izvan odbacivanja
Vanjski adres krajnje tačke mora ostati dostupan kroz fizički interfejs. 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 tačke prije i poslije promjene.
Upravljački pristup pripada istom pregledu. Ako je jedini put do rutera ili klijenta tunel, preširoko odbacivanje može vas zaključati izvan mašine koja bi vam omogućila da ga uklonite. Držite dokumentovanu vanpojasnu rutu, konzolu ili vraćanje po tajmeru.
IPv6 treba vlastiti unos i vlastiti pregled. Dizajn koji odbacuje IPv4 u blackhole, a ostavlja IPv6 na zadanoj ruti, curi upravo onaj saobraćaj koji je politika trebala zaustaviti, a greška je nevidljiva u testu samo za IPv4.
Uvedite to fazno s tajmerom i vraćanjem
Primijenite rutu s kratkim automatskim uklanjanjem da greška ne može ostati nakon restarta. Komande ispod 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 komanda treba da prijavi blackhole rutu i tabelu iz koje dolazi. Treća zakazuje uklanjanje za jednu minutu, što je dovoljno vremena da potvrdite politiku i dovoljno kratko da se oporavite od greške na udaljenom hostu. Kada se ponašanje potvrdi, učinite unos trajnim kroz isto upravljanje konfiguracijom koje posjeduje ostale rute.
Zatvorite promjenu tako što ćete zabilježiti prefiks, tabelu, adresnu familiju i metodu vraćanja. Odbacivanje je namjerna iznimka u dizajnu usmjeravanja i sljedeći inženjer mora znati koji saobraćaj je trebalo zaustaviti prije nego odluči da li još pripada.