Pakete atstāj klēpjdatoru, nekad nesasniedz VPN vārteju, un neviens ugunsmūra skaitītājs nekustas. Maršrutēšanas tabula jau ir izlēmusi paketes likteni: blackhole ieraksts tai atbilda, un kodols to izmeta, pirms to ieraudzīja jebkura saskarne. Šāda uzvedība ir noderīga, ja galamērķim jācieš neveiksme slēgtā stāvoklī, bet tas ir šaura apjoma maršrutēšanas darbs. Uzskatīt to par pilnīgu kill switch ir vieta, kur dizaini kļūdās.

Ko izmešanas darbība patiešām atbilst

Maršruta meklēšana izvēlas tabulu, tad tajā garāko atbilstošo prefiksu. Blackhole maršruts ir parasts ieraksts, kura darbība ir izmest, tāpēc tas ietekmē tikai tās paketes, kas būtu izvēlējušās šo ierakstu pēc visa lēmuma. Nomainiet tabulu ar politikas noteikumu vai pievienojiet konkrētāku prefiksu, un izmešana vairs neattiecas.

Tāpēc blackhole apjoms ir precīzs un viegli formulējams: tas aptver prefiksu, tabulā, šai adrešu saimei. Tas neaptver galamērķi, kuru uzvarētu cita tabula, un neaptver IPv6 tikai tāpēc, ka IPv4 prefikss tiek izmests.

ip route get parāda lēmumu pirms kaut kā izvietošanas, tostarp tabulu un maršruta tipu. Šo izvadi lasīt ir ātrāk nekā no neveiksmīga pieprasījuma spriest, kurš noteikums vai prefikss nostrādāja.

Blackhole nav tas pats, kas unreachable vai prohibit

Linux piedāvā trīs izmešanai līdzīgus maršrutu tipus, un tie atšķiras ar to, ko novēro sūtītājs. Blackhole nomet paketi bez atbildes, tāpēc klients redz taimautu. Unreachable maršruts atgriež ICMP unreachable ziņojumu, tāpēc savienojums ātri neizdodas ar resursdatora vai tīkla kļūdu. Prohibit maršruts atgriež administratīva aizlieguma kļūdu, kas ir tuvāka apzinātai politikas atteikšanai.

Izvēlieties uzvedību, ko vēlaties, lai lietojumprogramma redz. Klusa izmešana ir piemērota, ja nevēlaties atklāt politiku, un tūlītēja kļūda ir labāka, ja lietotājiem jāsaprot, kāpēc galamērķis nav pieejams. Tipu sajaukšana tīklā rada atbalsta biļetes, kas vienu un to pašu politiku apraksta kā trīs dažādus bojājumus.

Nepieņemiet, ka katrs izmešanas ieraksts ir aizstājams, diagnosticējot savienojumu. Kļūdas teksts, laiks un pakešu uztveršana atšķiras, un maršruta tips tabulā pasaka, uz kuru jūs skatāties. ip-route rokasgrāmata uzskaita tipus un to uzvedību kļūdu gadījumā.

Kā tas salīdzinās ar kill switch

Kill switch ir pakešu filtrēšana: ugunsmūra noteikums, kas izmet izejošo datplūsmu, kas izietu ārpus tuneļa. Blackhole maršruts ir pāradresēšanas lēmums, kas pieņemts agrāk stekā. Abi var apturēt datplūsmu, bet tie redz dažādas lietas un palaiž garām dažādus gadījumus.

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

Pārklājums ir vieta, kur salīdzinājumam ir nozīme. Ugunsmūris var saskaņot īpašnieku, portu vai saskarni un bloķēt lietojumprogrammu, kamēr galapunkts paliek sasniedzams; maršruts to nevar. Pretēji, maršruts var nosūtīt visu prefiksu uz izmešanu, neielādējot nevienu pakešu filtru, kas ir noderīgi minimālā sistēmā.

WireGuard AllowedIPs ir kriptoatslēgu maršrutēšana, nevis ugunsmūris. Tas izlemj, kuri galamērķa prefiksi tiek pieņemti saskarnē, un profils, kurā uzskaitīts tikai tuneļa apakštīkls, vienkārši atstāj citus galamērķus parastajam noklusējuma maršrutam. Tāpēc pilna tuneļa profili izmanto 0.0.0.0/0 un tāpēc wg-quick arī instalē ugunsmūra noteikumus, kad var.

Turiet tuneļa galapunktu ārpus izmešanas

Galapunkta ārējai adresei jāpaliek sasniedzamai caur fizisko saskarni. Izmešana, kas notver arī šo adresi, neļauj rokasspiedienam iziet, un tunelis nekad nepaceļas, kas izskatās pēc VPN kļūmes, nevis maršrutēšanas politikas. Pārbaudiet maršrutu uz galapunktu pirms izmaiņām un pēc tām.

Pārvaldības piekļuve pieder tai pašai pārskatīšanai. Ja vienīgais ceļš uz maršrutētāju vai klientu ir tunelis, pārāk plaša izmešana var jūs izslēgt no mašīnas, kas ļautu to noņemt. Turiet dokumentētu ārpusjoslas maršrutu, konsoli vai laika ierobežotu atritināšanu.

IPv6 vajag savu ierakstu un savu pārskatīšanu. Dizains, kas izmet IPv4 blackhole, bet atstāj IPv6 noklusējuma maršrutā, noplūdina tieši to datplūsmu, ko politika gribēja apturēt, un kļūda nav redzama testā tikai ar IPv4.

Ieviesiet to pakāpeniski ar taimeri un atritināšanu

Piemērojiet maršrutu ar īsu automātisku noņemšanu, lai kļūda nepārdzīvotu restartu. Tālāk minētās komandas izmanto dokumentācijas diapazonu; aizstājiet to ar prefiksu, ko jūsu dizains patiešām izmet:

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

Otrajai komandai jāziņo blackhole maršruts un tabula, no kuras tas nāca. Trešā ieplāno noņemšanu pēc vienas minūtes, kas ir pietiekami laika politikas apstiprināšanai un pietiekami īsi, lai atgūtos no kļūdas attālinātā resursdatorā. Kad uzvedība ir apstiprināta, padariet ierakstu pastāvīgu, izmantojot to pašu konfigurācijas pārvaldību, kurai pieder citi maršruti.

Noslēdziet izmaiņas, reģistrējot prefiksu, tabulu, adrešu saimi un atritināšanas metodi. Izmešana ir apzināta izņēmums maršrutēšanas dizainā, un nākamajam inženierim jāzina, kādu datplūsmu tai vajadzēja apturēt, pirms izlemt, vai tā joprojām pieder šeit.

Saistītie raksti