Du lade till en VPN-adress och förväntade dig att förfrågan skulle använda den, men servern loggade fortfarande det gamla prefixet. Inget i tunneln misslyckades; värden gjorde ett val av källadress innan den ens tittade på rutten du stirrade på. Val av IPv6-källa är en egen ordnad tävling mellan värdens kandidatadresser, och det längsta matchande prefixet är bara en regel nära slutet av den tävlingen. Att få det resultat du vill ha betyder att veta vilken regel som redan har vunnit. Reglerna själva är tråkiga och exakta, och det är just därför de ska läsas i ordning.

Två uppslag, inte ett

Valet av destination bestämmer nästa hopp och det utgående gränssnittet. Därefter bestämmer källvalet vilken av värdens adresser som syns i huvudet, och de två frågorna besvaras av olika mekanismer trots att båda använder prefix. En värd med en fysisk adress, en tillfällig adress och en VPN-adress har tre kandidater för vilken destination som helst, och rutten mot VPN utpekar inte automatiskt den tredje.

Därför kan en korrekt rutt och en felaktig källa samexistera så lätt, och därför kan samma förfrågan bete sig olika från en webbläsare och från en påtvingad bindning. Behandla de två uppslagen som åtskilda tills du har bevis som binder dem samman.

Läs reglerna som en ordnad tävling

RFC 6724 listar reglerna i ordning, och var och en bryter bara ett oavgjort läge som de föregående lämnat efter sig. Föredrag för utgående gränssnitt och etikettmatchning kommer långt före prefixjämförelsen, så en adress på det gränssnitt rutten använder har redan fått en fördel som en bättre prefixmatchning inte kan sudda ut. Uttjäning och omfattning deltar också, och därför slutar en föråldrad adress ibland att väljas utan att någon ändrar policyn.

Den praktiska läsningen är att du inte kan resonera om vinnaren enbart utifrån destinationen. Lista kandidaterna, gå igenom reglerna i ordning och se var beslutet faktiskt fattades.

Notera också att detta är källhalvan av problemet. Att blanda de två prefixjämförelserna ger förklaringar som låter stränga och förutsäger fel adress. Säg vilken jämförelse du menar varje gång du använder ordet prefix i ett ärende.

En programbindning ändrar frågan

Ett program kan begära en specifik källadress, och ett giltigt uttryckligt val flyttar frågan från ”vilken adress skulle värden föredra” till ”kan den adressen nå destinationen och komma tillbaka”. Verktyg som binder till en källa, eller som begär tilläggsdata om den valda adressen, avslöjar detta direkt, och de är det snabbaste sättet att bevisa vilken adress en anslutning faktiskt använde. Det experimentet slår att läsa routingtabellen för tredje gången, eftersom det rapporterar vad kärnan beslutade i stället för vad du konfigurerade. Upprepa det efter ändringen och jämför de två svaren.

Det gör källbindning både till ett diagnostiskt verktyg och en tillfällig lösning: bind VPN-adressen och se om förfrågan lyckas. Om den gör det är vägen i ordning och valet var problemet. Om inte var returvägen eller policyn hos den bortre sidan problemet hela tiden.

Kontrollera att den bortre sidan accepterar den källan

Vad värden än väljer måste det passa in i VPN:s skyddade omfång och i returrutten och åtkomstreglerna hos den bortre änden. En källa utanför selektorerna kan färdas in i tunneln och släppas i den bortre änden, vilket ser ut som ett ensidigt fel och läggs på routing. Jämför den valda inre källan med skyddsomfånget innan du rör krypteringsinställningarna, eftersom ett lägesbyte inte väljer mellan kandidatadresser.

Håll också den yttre slutpunktsadressen åtskild i ditt resonemang. Den identifierar transport mellan VPN-deltagarna och är inte källan till programmets paket inuti.

Avgör med fyra observationer

Notera destinationen som användes, de kvalificerade lokala källorna, den faktiskt valda källan och den effektiva utgående vägen. Fyra rader räcker för att förklara nästan varje fall, och de kan jämföras mellan en fungerande och en felande värd utan att teorin debatteras igen. Använd operativsystemets egen stödda vy för urvalssteget i stället för ett namn från standarden, eftersom implementationer lägger till egna lokala preferenser.

När svaret fortfarande överraskar dig gör ordningen något som din mentala modell inte gör, och rättelsen är att ändra indata i stället för att gräla med algoritmen. Skriv de fyra observationerna i ärendet och nästa läsare kan återskapa din slutsats.

Relaterade artiklar