To /1-prefiks dekkjer nøyaktig dei same IPv4-adressene som eitt /0, og denne likskapen gjeld berre inne i lista over tillatne prefiks hos peeren. Han sluttar å gjelde i det augneblinken oppsettverktøyet avgjer korleis det skal rutast, fordi Linux wg-quick handsamar eit standardprefiks som eit særtilfelle og ikkje som aritmetikk. Den særskilde greina installerer ein eigen tabell, to policyreglar, eit socketmerke og innstillingar for omvend sti som eit par halve ruter aldri får. Når ein proxy eller ein nettlesar derfor sluttar å verke etter endringa, er prefiksa den minst interessante delen av endringa.

Prefikslista er ikkje heile konfigurasjonen

AllowedIPs gjer to jobbar samstundes, og berre éin av dei handlar om dekning. For WireGuard sjølv er lista kryptonøkkelrutting: ho avgjer kva destinasjonar som vert krypterte mot ein peer, og kva kjeldeadresser den peeren kan bruke. For wg-quick fungerer den same lista òg som ein rutespesifikasjon, og ruta ho lagar, er avhengig av kva grein lista tilfeldigvis treff. Identisk dekning på tvers av to ulike listeformer seier derfor ingenting om identisk vertstilstand.

Standardkonfigurasjonen tek den avgjerda ut av hendene dine, fordi Table er automatisk som standard og verktøyet vel kvar rutene landar. Ein annan nettverkshandsamar, ei distribusjonsinnpakning eller ein tilpassa Table-verdi endrar resultatet igjen, og difor kan råd skrivne for éin vert sjå gale ut på den neste.

Kva standardgreina legg til utover ei rute

Ei /0-oppføring sender wg-quick inn i sin standardrutesti: ein eigen rutetabell mottek standardruta, éin policyregel sender umerkt trafikk dit, ein andre regel held meir spesifikke ruter i hovudtabellen autoritative, og grensesnittet får eit brannmurmerke på sin eigen socket. Det merket er løkkevakta. Dei krypterte datagramma som ber tunneltrafikken, går ut med merket sett, slik at regelen som styrer alt anna inn i tunnelen, ikkje slukar tunnelens eigne transportpakkar.

Eit par /1-oppføringar tek i staden den vanlege rutestien. To ruter landar i den konfigurerte tabellen, og ingenting av maskineriet rundt dukkar opp, ikkje fordi det er unødvendig, men fordi den kodevegen aldri vart trakka.

Kvar dei to ordningane går frå kvarandre

Avviket viser seg først som rekursjon. Med dei halve rutene i hovudtabellen fell den eigenlege transportadressa til peeren innanfor eit tunnelprefiks, slik at pakken som skulle bere tunnelen, treff ei rute som peikar inn i tunnelen. Noko må unnta han: ei vertsrute for gjeldande endepunkt, eit merke sett for hand eller ein grensesnittsspesifikk regel. Ei vertsrute verkar til adressa til endepunktet vert endra, noko som skjer med DNS-baserte endepunkt, gjestande klientar og konfigurasjonar med fleire peers.

For det andre endrar alt som resonnerer om merke, åtferd. Ein gjennomsiktig proxy som omdirigerer tilkoplingar lokalt, lagar nye sockets der merke og kjelder avvik frå den opphavlege klientflyten, og policyreglane som standardgreina genererer, var ein del av det som sorterte desse flytane. Å lese proxyen si eiga utgåande tilkopling er ei anna øving enn å teste om den opphavlege destinasjonen er nåbar.

Les reglane og merka før du redigerer

Tak opp gjeldande tilstand medan tunnelen er sunn, og deretter igjen etter endringa, og samanlikn dei to utskriftene i staden for å resonnere frå konfigurasjonsfila. Tak med policyreglane, kvar tabell, merket til grensesnittet og dei registrerte endepunkta.

ip rule show
ip -4 route show table all | grep -E 'default|wg1'
wg show wg1 fwmark
wg show wg1 endpoints

Viss den første utskriftslina har mista regelen for umerkt trafikk og den eigelge tabellen er tom, køyrer ikkje standardgreina, og inga mengd prefiksaritmetikk gjenopprettar verknadene. Eit merke på null på eit grensesnitt som tidlegare hadde eitt, er same signal, synleg i éin einaste verdi.

Øv på tap av tunnelen før du rullar ut

Viss halvruteoppsettet er det medvetne valet, må det levere dei manglande delane eksplisitt: ein endepunktssti som overlever adresseendringar, den tiltenkte åtferda når tunnelen fell, og tilsvarande handsaming for IPv6. Skriv det ned som krav i staden for å oppdage det under eit avbrot. Øv deretter på feilen, for ein full tunnel som stille fell tilbake til den fysiske opplenka, er verre enn ein som sluttar å verke.

sudo ip -4 route add 198.51.100.20/32 via 192.0.2.1 dev eth0
ip -4 route get 198.51.100.20
sudo wg-quick down wg1

Ruteoppslaget bør løyse endepunktet ut av det fysiske grensesnittet utan å krysse tunnelen, og å ta grensesnittet ned bør late verten i den tilstanden designet lova. Ein proxy som verkar etter utskiftinga, beviser at den genererte vertstilstanden betydde noko; det beviser ikkje at løkkeførebygging og åtferd i nedslått tilstand overlevde endringa.

Relaterte artiklar