Perché l’etichetta di paese di una VPN non è l’indirizzo da cui esci
Un campo dell’elenco, un indirizzo instradato e l’opinione di un’app possono non essere d’accordo. Stabilisci quale dei tre stai leggendo prima di definire l’uscita etichettata male.
Scegli un paese, ti connetti, e un sito web ti accoglie in un altro. L’etichetta nell’elenco non ha mai promesso nulla sull’indirizzo da cui saresti uscito: è un campo che qualcuno ha pubblicato, derivato con un metodo che non hai visto. Trattare quel campo come un indirizzo è dove comincia la confusione.
Tre cose distinte portano un valore di paese, e possono non essere d’accordo senza che nessuno menta. Distinguerle rende la discrepanza diagnosticabile invece che misteriosa.
Tre cose diverse portano un’etichetta di paese
La prima è il campo proprio dell’elenco, che può essere dichiarato dall’operatore, dedotto da un database di indirizzi o semplicemente copiato quando la voce è stata creata. La seconda è l’indirizzo stesso, che appartiene alla rete che lo annuncia, ed è ciò a cui risponde una ricerca di geolocalizzazione usando dati di mappatura pubblicati nella forma descritta dal RFC 8805. La terza è ciò che un’app decide di mostrare, che può venire da un altro database, da un’impostazione dell’account o da un permesso concesso sul dispositivo. Solo la seconda è un fatto di rete, e anche quella è una ricerca invece che un’osservazione.
La coerenza fra quelle tre sarebbe piacevole e non è richiesta da nessuna parte. Una discrepanza è la prova che sono state derivate in modi diversi, niente di più.
Controlla l’indirizzo, non la bandiera
La domanda utile è da quale indirizzo pubblico esce davvero il tuo traffico. Si può rispondere dal client, e non dipende da alcun campo dell’elenco. Confronta la risposta con il prefisso che ti aspettavi e con ciò che una ricerca di geolocalizzazione dice al riguardo, tenendo i due risultati separati nelle tue note. Una differenza fra il paese atteso e la ricerca è una questione di instradamento o di database, mentre una differenza fra la ricerca e l’opinione dell’app è di nuovo una questione di database.
Fai il controllo due volte se il servizio ha diverse uscite nella regione. Un pool può assegnare indirizzi diversi su connessioni successive, e un campione ne descrive solo uno.
La vicinanza su una mappa non è vicinanza sulla rete
Un paese vicino può essere un percorso più lungo di uno lontano, perché la rotta in fibra non segue il confine. Scegliere un nodo per la latenza significa misurare la destinazione che ti interessa invece di prendere la bandiera più vicina. La stessa logica vale per la capacità, perché un’uscita poco caricata a due paesi di distanza può battere una satura a fianco. Misura prima, decidi dopo, e annota l’ora perché entrambi i numeri si muovono.
La posizione non dice nulla nemmeno sulla conservazione né su chi gestisce il punto finale. Servono prove proprie, che una colonna di paese non può contenere.
Conferma tu stesso l’indirizzo di uscita
Chiedi al client e a un servizio esterno che aspetto ha il tuo indirizzo, poi chiedi alla tabella di instradamento locale come è stata scelta quella rotta. I comandi qui sotto fanno tutte e tre le cose, e la terza è quella che la gente salta. Sostituisci il nome dell’interfaccia con il tuo dispositivo tunnel.
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
Le prime due righe dovrebbero coincidere, e quando non lo fanno la rotta che credi di avere non è quella che porta il tuo traffico. La ricerca di rotta indica l’interfaccia e l’indirizzo di origine che il kernel userebbe per una destinazione, ed è il meccanismo dietro l’indirizzo di uscita. La riga IPv6 conta perché una macchina può tenere un tunnel per una famiglia e un percorso diretto per l’altra. Un’etichetta di paese non copre nessuno di questi casi da sola.
Scrivi l’indirizzo osservato, l’opinione del database e la visualizzazione dell’app come tre note separate. La prossima discrepanza che incontrerai sarà allora facile da attribuire.