Questo articolo è un’aggiunta al mio precedente post sull’importanza delle VPN ed è dedicato a chi si collega a un servizio VPN usando il software Network Manager.
Il DNS è un servizio alla base di Internet. Si tratta di un server a cui il nostro computer chiede l’indirizzo IP di un sito. Infatti, i siti web sono identificati da un nome di dominio (per esempio www.andrealazzarotto.com) ma questo va tradotto in un indirizzo numerico, affinché il computer si possa collegare.
Funziona così (per semplificare):
Computer: Ciao! C’è qui il mio utilizzatore che vorrebbe visitare Google.com, mi dai l’IP?
Server DNS: Certamente, è 173.194.112.33!
In genere, il nostro router gestisce le richieste DNS verso il server che ci dà il nostro fornitore di accesso a Internet. I nostri computer fanno invece una richiesta DNS al router, quindi collegandosi ad un indirizzo tipo 192.168.0.1 (o comunque l’indirizzo del router) ed è il router che poi si arrangia a trovare la risposta prima di restituirla.
Se usiamo una VPN con Network Manager, si verifica un problema di DNS leak (è stato segnalato come bug), cioè le richieste DNS del nostro computer passano fuori dalla VPN e non sono protette! Questo diagramma spiega la situazione:
Le connessioni a siti esterni (in rosso) sono protette e passano in modo criptato attraverso la VPN, che poi le fa uscire verso Internet. Però le richieste DNS sono (di default) rivolte verso il router, che ha un indirizzo di rete interna e perciò passa fuori dalla VPN.
Il router, di conseguenza, effettua una richiesta DNS al server (in blu) e quindi di fatto permette di lasciare una traccia sui siti che presumibilmente abbiamo visitato (se c’è una richiesta DNS, ci sarà un motivo…). Senza contare che, in alcuni luoghi, i DNS potrebbero essere configurati per impedirci di visualizzare determinati siti (per esempio Facebook o Youtube).
Quello che vorremmo noi, invece, è che le richieste DNS fossero protette (e quindi passassero nella VPN, non tramite il router). In attesa che il bug venga risolto, vi consiglio due metodi: uno è più facile e si può fare per ogni connessione, l’altro è globale ma leggermente più complicato.
Metodo 1: modificare le connessioni singolarmente
In attesa che il bug venga risolto, un metodo facile che ho trovato per risolvere il problema è impostare i server DNS manualmente nelle impostazioni della connessione VPN (va fatto per ogni server). Per esempio, potremmo impostare i server DNS di Google così:
Le impostazioni vanno fatte sicuramente per IPv4, che è ancora la versione di IP più utilizzata. Se siete su una rete che utilizza IPv6, dovrete configurare anche dei DNS per questa versione del protocollo.
Metodo 2: forzare i DNS per tutte le VPN
Si può anche fare una modifica globale al sistema che induca tutte le connessioni VPN a usare un certo DNS.
Per ottenere il risultato che vogliamo, dobbiamo modificare un file di sistema relativo alle interfacce di rete. Quando ci colleghiamo in VPN, si attiva un’interfaccia di rete virtuale chiamata tun0
. Noi imposteremo i DNS su questa interfaccia.
Dovete innanzitutto aprire il file come amministratori, per esempio su Ubuntu potete usare Gedit con il comando:
sudo gedit /etc/network/interfaces
Procedete quindi ad aggiungere, in fondo al file, le righe:
# Forza i server DNS su ogni connessione VPN iface tun0 inet manual dns-nameservers 8.8.8.8 8.8.4.4
Salvate e uscite. Tenete presente che questa è una configurazione solo per IPv4, non per IPv6. A questo punto dovete riavviare il sistema. Non basta chiudere la connessione, bisogna proprio riavviare.
Questa modifica ha il vantaggio che non richiede assolutamente di cambiare le impostazioni delle singole connessioni, ha un effetto globale su tutte le VPN che avvierete sul vostro computer. Inoltre, se volete cambiare i server DNS vi basta modificare un solo file e riavviare.
Attenzione: se usate anche VPN aziendali, badate che potrebbe darvi dei malfunzionamenti. Casomai testate e eventualmente annullate la modifica.
Passo finale: cambiare i DNS della connessione
Dopo alcuni test, ho verificato quanto riportato anche da altri: il semplice cambio DNS sulla VPN non previene il leak al 100%, specialmente se usate la funzione Connessione VPN automatica nelle impostazioni, per accedere automaticamente alla VPN quando si attiva il Wi-Fi o la rete cablata.
Per essere sicuri il più possibile, vi consiglio di modificare la connessione che usate sempre a casa (wireless o cablata) e impostare anche lì i DNS statici, mettendo la rete in modalità Automatico (DHCP) solo indirizzi. I parametri per la connessione saranno molto simili a quelli visti nel Metodo 1 per la VPN.
A questo punto, la combinazione di uno dei due metodi visti prima con quest’ultimo passo vi dovrebbe dare una copertura adeguata in tutte le situazioni. 😉 Quando il bug verrà risolto, tutto ciò non sarà più necessario.
Qualsiasi metodo adottiate, trovate un’ottima lista di server DNS su DuckDuckGo tra cui poter scegliere. Una volta attivata la modifica, la situazione sarà così:
La richiesta DNS (in verde) è sempre contenuta dentro al collegamento criptato della VPN (l’ho disegnata a parte solo per far capire la dinamica) e quindi il router non la riceve né la rimanda al server DNS. La richiesta non viene svelata né può essere dirottata o bloccata dal router.
Con questo, ho praticamente finito. Non mi resta altro da fare che ricordarvi che è buona norma attivare la VPN automaticamente quando si accede a determinate reti (per esempio il Wi-Fi di casa) in modo da essere sempre protetti. 😉
Vi auguro una buona e sicura navigazione!
Aggiornamento 14/01/2016: l’articolo è stato integrato con l’aggiunta dell’impostazione statica dei DNS nella connessione usata abitualmente.
Ciao Andrea
grazie per la guida
purtroppo vedo che il problema non è risolto
utilizzo windscribevpn (a cui sono collegato in questo momento)
ho modificato il file
/etc/network/interfaces
aggiungendo le righe da te suggeriteNelle “Impostazioni IPv4” delle singole connessioni ho messo “Automatico (VPN) solo indirizzi”
tuttavia, se faccio dei test (con ipleak-net o dnsleaktest-com) mi ritrovo, fra gli altri, anche i DNS di Telecom
I test informano che:
Ci sono accorgimenti ulteriori da adottare secondo te?
Avrebbe senso far gestire la connessione da un programma diverso da network-manager (momento non saprei quale ma si può cercare…)
Anzi, scusa, ecco cosa dice uno dei test che ho fatto (ipleak-org)
E in effetti, come detto, trovo i dns di Telecom (85-37-17-51)
Non è che, per caso, la VPN ti si è attivata su una interfaccia diversa dalla
utun0
?ciao, grazie di avermi risposto
ma temo di non capire cosa vuoi dire…
come posso verificare quello che mi chiedi?
L’esempio di codice è relativo all’interfaccia
utun0
, visto che sono passati 4 anni ecc magari la VPN sul tuo sistema si attiva su un’altra interfaccia. Dovrai usare il comandoip addr
per controllare su quale interfaccia si è attivata la VPN. 🙂Vedi anche questa guida:
https://www.howtogeek.com/657911/how-to-use-the-ip-command-on-linux/
ciao Andrea, la guida era stata utilissima per capire e risolvere! grazie ))
comunque oggi ho aggiornato alla 20.04 e il problema non si presenta più anche senza fare nulla. Mi dispiace di aver perso il webinar sulla digital forensics…
Ottimo!
Se vuoi puoi guardarlo online qui. 🙂
https://www.youtube.com/playlist?list=PL6ffpYHPyGKvipCOpJdQceNhCdqBaHw9s