Hvorfor en VPN-landetikett ikke er adressen du går ut fra
Et felt i listen, en rutet adresse og en apps mening kan være uenige. Finn ut hvilken av dem du leser før du kaller utgangen feilmerket.
Du velger et land, kobler til, og et nettsted ønsker deg velkommen i et annet. Etiketten i listen har aldri lovet noe om adressen du ville gå ut fra: det er et felt noen har publisert, utledet med en metode du ikke har sett. Å behandle det feltet som en adresse er der forvirringen begynner.
Tre separate ting bærer en landverdi, og de kan være uenige uten at noen lyver. Å skille dem gjør avviket diagnostiserbart i stedet for mystisk.
Tre forskjellige ting bærer en landetiket
Den første er katalogens eget felt, som kan være selvrapportert av operatøren, utledet fra en adressedatabase eller rett og slett kopiert da oppføringen ble opprettet. Den andre er selve adressen, som tilhører nettverket som annonserer den, og det er dette et geolokasjonsoppslag svarer på ved å bruke publiserte kartdata i den formen som er beskrevet i RFC 8805. Den tredje er det en applikasjon bestemmer seg for å vise, som kan komme fra en annen database, en kontoinnstilling eller en tillatelse du ga på enheten. Bare den andre er et nettverksfaktum, og selv det er et oppslag snarere enn en observasjon.
Sammenheng mellom de tre ville være hyggelig og kreves ingen steder. Et avvik er bevis på at de ble utledet forskjellig, ikke noe mer.
Sjekk adressen, ikke flagget
Det nyttige spørsmålet er hvilken offentlig adresse trafikken din faktisk forlater. Det kan besvares fra klienten, og det avhenger ikke av noe listefelt. Sammenlign svaret med prefikset du forventet og med hva et geolokasjonsoppslag sier om det, og hold de to resultatene atskilt i notatene dine. Et gap mellom det forventede landet og oppslaget er et ruting- eller databasespørsmål, mens et gap mellom oppslaget og applikasjonens mening igjen er et databasespørsmål.
Gjør sjekken to ganger hvis tjenesten har flere utganger i regionen. En adressepool kan dele ut forskjellige adresser ved påfølgende tilkoblinger, og én prøve beskriver bare én av dem.
Nærhet på et kart er ikke nærhet på nettverket
Et nærliggende land kan være en lengre vei enn et fjernt, fordi fiberruten ikke følger grensen. Å velge en node etter latens betyr å måle destinasjonen du bryr deg om i stedet for å velge det nærmeste flagget. Samme logikk gjelder for kapasitet, siden en lett belastet utgang to land unna kan slå en mettet nabo. Mål først, bestem deretter, og noter timen fordi begge tallene beveger seg.
Plassering sier heller ingenting om lagring eller om hvem som driver endepunktet. Det trenger sine egne bevis, som en landkolonne ikke kan romme.
Bekreft utgangsadressen selv
Spør klienten og en ekstern tjeneste hvordan adressen din ser ut, og spør deretter den lokale rutetabellen hvordan den ruten ble valgt. Kommandoene nedenfor gjør alle tre, og den tredje er den folk hopper over. Erstatt grensesnittnavnet med din egen tunnelenhet.
curl -sS https://api.ipify.org; echo
curl -sS --interface tun0 https://api.ipify.org; echo
ip route get 1.1.1.1
ip -6 addr show dev tun0
De to første linjene bør stemme, og når de ikke gjør det, er ruten du tror du har ikke ruten som bærer trafikken din. Ruteoppslaget navngir grensesnittet og kildeadressen kjernen ville bruke for en destinasjon, og det er mekanismen bak utgangsadressen. IPv6-linjen betyr noe fordi en maskin kan holde en tunnel for én familie og en direkte vei for den andre. En landetiket dekker ingen av disse tilfellene av seg selv.
Skriv den observerte adressen, databasens mening og applikasjonens visning som tre separate notater. Da blir det neste avviket du møter lett å tilskrive.