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.

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

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/8

Druga 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.

Povezani članci