En pakke forlader en bærbar computer, når aldrig VPN-gatewayen, og ingen firewall-tæller flytter sig. Rutetabellen har allerede afgjort pakkens skæbne: en blackhole-post matchede den, og kernen kasserede den, før nogen grænseflade så den. Den adfærd er nyttig, når en destination skal fejle lukket, men det er en routinghandling med snæver rækkevidde. At behandle den som en fuld kill switch er, hvor design går galt.

Hvad kasseringshandlingen egentlig matcher

Et ruteopslag vælger en tabel og derefter det længste matchende præfiks i den. En blackhole-rute er en almindelig post, hvis handling er kassér, så den påvirker kun pakker, der ville have valgt den post efter hele beslutningen. Skift tabellen med en politikregel, eller tilføj et mere specifikt præfiks, og kasseringen gælder ikke længere.

Derfor er en blackholes rækkevidde præcis og let at beskrive: den dækker præfikset, i tabellen, for den adressefamilie. Den dækker ikke en destination, som en anden tabel ville vinde, og den dækker ikke IPv6, blot fordi IPv4-præfikset kasseres.

ip route get viser beslutningen, før du udruller noget, inklusive tabellen og rutetypen. At læse det output er hurtigere end at slutte fra en mislykket anmodning, hvilken regel eller præfiks der slog igennem.

Blackhole er ikke det samme som unreachable eller prohibit

Linux tilbyder tre kasseringslignende rutetyper, og de adskiller sig i, hvad afsenderen ser. En blackhole dropper pakken uden svar, så klienten ser en timeout. En unreachable-rute returnerer en ICMP unreachable-meddelelse, så forbindelsen fejler hurtigt med en vært- eller netværksfejl. En prohibit-rute returnerer en administrativ forbudsfejl, som er tættere på en bevidst politikafvisning.

Vælg den adfærd, du vil have applikationen til at se. En stille kassering er passende, når du ikke vil afsløre politikken, og en øjeblikkelig fejl er bedre, når brugerne skal forstå, hvorfor en destination er utilgængelig. At blande typerne på tværs af et netværk giver supportbilletter, der beskriver den samme politik som tre forskellige fejl.

Antag ikke, at enhver kasseringspost kan udskiftes, når du diagnosticerer en forbindelse. Fejlteksten, tidspunktet og pakkefangsten er forskellige, og rutetypen i tabellen fortæller dig, hvilken du kigger på. ip-route-manualen oplister typerne og deres fejladfærd.

Hvordan den sammenlignes med en kill switch

En kill switch er pakkefiltrering: en firewall-regel, der dropper udgående trafik, som ville forlade tunnelen. En blackhole-rute er en videresendelsesbeslutning, der træffes tidligere i stakken. Begge kan stoppe trafik, men de ser forskellige ting og misser forskellige tilfælde.

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

Dækning er, hvor sammenligningen betyder noget. En firewall kan matche ejer, port eller grænseflade og blokere en applikation, mens endepunktet forbliver tilgængeligt; en rute kan ikke. Omvendt kan en rute sende et helt præfiks i kassering, uden at nogen pakkefilter er indlæst, hvilket er nyttigt på et minimalt system.

WireGuards AllowedIPs er kryptonøgle-routing, ikke en firewall. Den afgør, hvilke destinationspræfikser der accepteres i grænsefladen, og en profil, der kun lister tunnelens undernet, overlader blot andre destinationer til den almindelige standardrute. Derfor bruger full-tunnel-profiler 0.0.0.0/0, og derfor installerer wg-quick også firewall-regler, når den kan.

Hold tunnelens endepunkt uden for kasseringen

Endepunktets ydre adresse skal forblive tilgængelig via den fysiske grænseflade. En kassering, der også fanger den adresse, forhindrer håndtrykket i at komme ud, og tunnelen kommer aldrig op, hvilket ligner en VPN-fejl snarere end en routingpolitik. Kontroller ruten til endepunktet før og efter ændringen.

Administrationsadgang hører til i samme gennemgang. Hvis den eneste vej til routeren eller klienten er tunnelen, kan en alt for bred kassering låse dig ude af maskinen, som ville lade dig fjerne den. Hold en dokumenteret out-of-band-rute, en konsol eller en tidsbestemt tilbagerulning.

IPv6 har brug for sin egen post og sin egen gennemgang. Et design, der kasserer IPv4 i en blackhole, mens IPv6 efterlades på standardruten, lækker netop den trafik, som politikken skulle stoppe, og fejlen er usynlig i en test, der kun dækker IPv4.

Indfør det med en timer og en tilbagerulning

Anvend ruten med en kort automatisk fjernelse, så en fejl ikke kan overleve en genstart. Kommandoerne nedenfor bruger et dokumentationsinterval; erstat det med det præfiks, dit design faktisk kasserer:

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

Den anden kommando bør rapportere blackhole-ruten og den tabel, den kom fra. Den tredje planlægger fjernelse om et minut, hvilket er tid nok til at bekræfte politikken og kort nok til at komme sig efter en fejl på en fjern vært. Når adfærden er bekræftet, gør posten permanent via den samme konfigurationsstyring, som ejer de andre ruter.

Luk ændringen ved at registrere præfikset, tabellen, adressefamilien og tilbagerulningsmetoden. En kassering er en bevidst undtagelse i routingdesignet, og den næste ingeniør skal vide, hvilken trafik den skulle stoppe, før de beslutter, om den stadig hører til.

Relaterede artikler