Paketti lähtee kannettavasta, ei koskaan saavu VPN-yhdyskäytävään, eikä yksikään palomuurin laskuri liiku. Reititystaulu on jo päättänyt paketin kohtalon: blackhole-merkintä täsmäsi siihen ja ydin hylkäsi sen ennen kuin yksikään rajapinta näki sen. Tämä käyttäytyminen on hyödyllistä, kun kohteen pitää epäonnistua suljetusti, mutta se on kapean laajuuden reititystoimi. Sen pitäminen täydellisenä kill switchinä on se kohta, jossa suunnitelmat menevät pieleen.

Mitä hylkäystoimi itse asiassa täsmää

Reittihaku valitsee taulun ja sitten pisimmän täsmäävän etuliitteen siitä. Blackhole-reitti on tavallinen merkintä, jonka toiminto on hylätä, joten se vaikuttaa vain paketteihin, jotka olisivat valinneet tämän merkinnän koko päätöksen jälkeen. Vaihda taulu käytäntösäännöllä tai lisää tarkempi etuliite, eikä hylkäys enää päde.

Siksi blackholen laajuus on täsmällinen ja helppo ilmaista: se kattaa etuliitteen, taulussa, sille osoiteperheelle. Se ei kata kohdetta, jonka toinen taulu voittaisi, eikä se kata IPv6:tta vain siksi, että IPv4-etuliite hylätään.

ip route get näyttää päätöksen ennen kuin otat mitään käyttöön, mukaan lukien taulun ja reittityypin. Tämän tulosteen lukeminen on nopeampaa kuin päätellä epäonnistuneesta pyynnöstä, mikä sääntö tai etuliite vaikutti.

Blackhole ei ole sama kuin unreachable tai prohibit

Linux tarjoaa kolme hylkäyksen kaltaista reittityyppiä, ja ne eroavat siinä, mitä lähettäjä havaitsee. Blackhole pudottaa paketin ilman vastausta, joten asiakas näkee aikakatkaisun. Unreachable-reitti palauttaa ICMP unreachable -viestin, joten yhteys epäonnistuu nopeasti isäntä- tai verkkovirheeseen. Prohibit-reitti palauttaa hallinnollisen kiellon virheen, joka on lähempänä tarkoituksellista käytännön kieltäytymistä.

Valitse käyttäytyminen, jonka haluat sovelluksen näkevän. Hiljainen hylkäys sopii, kun et halua paljastaa käytäntöä, ja välitön virhe on parempi, kun käyttäjien pitää ymmärtää, miksi kohde ei ole käytettävissä. Tyyppien sekoittaminen verkossa tuottaa tukipyyntöjä, jotka kuvaavat saman käytännön kolmena eri vikana.

Älä oleta, että jokainen hylkäysmerkintä on vaihdettavissa, kun diagnosoit yhteyttä. Virheteksti, ajoitus ja paketin kaappaus eroavat, ja taulun reittityyppi kertoo, kumpaa katsot. ip-route-käsikirja luettelee tyypit ja niiden virhekäyttäytymisen.

Miten se vertautuu kill switchiin

Kill switch on pakettisuodatusta: palomuurisääntö, joka pudottaa lähtevän liikenteen, joka lähtisi tunnelin ulkopuolelle. Blackhole-reitti on edelleenlähetyspäätös, joka tehdään aiemmin pinossa. Molemmat voivat pysäyttää liikenteen, mutta ne näkevät eri asioita ja jättävät eri tapaukset huomaamatta.

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

Kattavuus on se, missä vertailu merkitsee. Palomuuri voi täsmätä omistajaan, porttiin tai rajapintaan ja estää sovelluksen jättäen päätepisteen tavoitettavaksi; reitti ei voi. Päinvastoin, reitti voi lähettää kokonaisen etuliitteen hylkäykseen ilman, että yhtään pakettisuodatinta ladataan, mikä on hyödyllistä minimaalisessa järjestelmässä.

WireGuardin AllowedIPs on salausavainreititystä, ei palomuuri. Se päättää, mitkä kohde-etuliitteet hyväksytään rajapintaan, ja profiili, joka luettelee vain tunnelin aliverkon, jättää muut kohteet tavalliselle oletusreitille. Siksi täystunneliprofiilit käyttävät 0.0.0.0/0:aa ja siksi wg-quick asentaa myös palomuurisäännöt, kun se voi.

Pidä tunnelin päätepiste hylkäyksen ulkopuolella

Päätepisteen ulkoisen osoitteen on pysyttävä tavoitettavana fyysisen rajapinnan kautta. Hylkäys, joka nappaa myös tämän osoitteen, estää kättelyn lähtemisen, eikä tunneli nouse koskaan, mikä näyttää VPN-vialta eikä reitityskäytännöltä. Tarkista päätepisteen reitti ennen muutosta ja sen jälkeen.

Hallintayhteys kuuluu samaan tarkasteluun. Jos ainoa polku reitittimeen tai asiakkaaseen on tunneli, liian laaja hylkäys voi lukita sinut ulos koneesta, joka mahdollistaisi sen poistamisen. Pidä dokumentoitu kaistan ulkopuolinen reitti, konsoli tai ajastettu palautus.

IPv6 tarvitsee oman merkinnän ja oman tarkastelun. Suunnitelma, joka hylkää IPv4:n blackholeen ja jättää IPv6:n oletusreitille, vuotaa juuri sen liikenteen, jonka käytäntö oli tarkoitus pysäyttää, ja virhe on näkymätön vain IPv4:ää testaavassa kokeessa.

Ota se käyttöön ajastimella ja palautuksella

Käytä reittiä lyhyellä automaattisella poistolla, jotta virhe ei jää pysyväksi uudelleenkäynnistyksen yli. Alla olevat komennot käyttävät dokumentaatioväliä; korvaa se etuliitteellä, jonka suunnitelmasi todella hylkää:

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

Toisen komennon pitäisi raportoida blackhole-reitti ja taulu, josta se tuli. Kolmas aikatauluttaa poiston minuutin päähän, mikä on tarpeeksi aikaa käytännön vahvistamiseen ja tarpeeksi lyhyt toipumiseen virheestä etäisäntällä. Kun käyttäytyminen on vahvistettu, tee merkinnästä pysyvä samalla konfiguraationhallinnalla, joka omistaa muut reitit.

Sulje muutos kirjaamalla etuliite, taulu, osoiteperhe ja palautusmenetelmä. Hylkäys on tarkoituksellinen poikkeus reitityssuunnittelussa, ja seuraavan insinöörin on tiedettävä, mikä liikenne se oli tarkoitettu pysäyttämään, ennen kuin hän päättää, kuuluuko se vielä sinne.

Aiheeseen liittyvät artikkelit