
DNS e cifratura
di Tino Privati
Ecco perché cifrare i DNS
Quando navighi, ogni dominio che digiti viene risolto tramite DNS. Se usi DNS “in chiaro”, queste richieste possono essere intercettate dal provider, da reti Wi-Fi pubbliche o da intermediari di rete. La cifratura DNS riduce tracciamento, filtraggio e manipolazione delle richieste (DNS spoofing / hijacking).
Le tecnologie oggi rilevanti sono due:
DoT (DNS over TLS) — cifrato su porta 853
DoH (DNS over HTTPS) — incapsulato in HTTPS su porta 443
Su Linux puoi implementarle in modo pulito con systemd-resolved, Unbound, dnscrypt-proxy o stubby. Questa guida copre le soluzioni solide e mantenute.
Verifica prima la situazione attuale
Controlla se il sistema usa systemd-resolved:
Vedi quali DNS stai usando:
Verifica se le richieste passano in chiaro:
visita
https://dnscheck.tools/oppurehttps://browserleaks.com/dnsse vedi resolver del tuo ISP → DNS non cifrati
se vedi “DoH/DoT” o resolver della VPN → probabilmente già cifrati
Se la VPN ha opzione “block outside DNS / encrypted DNS”, abilitala e fermati qui.
Opzione 1 — systemd-resolved con DNS-over-TLS (soluzione semplice e integrata)
Funziona su Ubuntu, Debian recenti, Fedora, Arch e derivate.
1) Abilita la modalità stub locale
2) Imposta resolver DoT affidabili
Apri il file di configurazione:
Dentro la sezione [Resolve] imposta ad esempio:
Salva e riavvia:
3) Verifica
Dovresti vedere DNS Over TLS: yes.
Test online con i siti citati sopra. Se i DNS restano in chiaro, un browser o la VPN potrebbe sovrascrivere i resolver.
Opzione 2 — Unbound come resolver locale + DoT (più controllo, privacy avanzata)
Unbound risolve i domini direttamente dai root-servers (no forwarders), con validazione DNSSEC. Aggiungendo DoT verso forwarder selezionati ottieni un setup molto robusto.
1) Installa Unbound
Debian/Ubuntu:
Arch:
2) Configurazione base sicura
Inserisci:
Riavvia:
3) Punta il sistema al resolver locale
Modifica /etc/resolv.conf (o usa NetworkManager) per usare:
4) Test
Poi verifica online se il traffico risulta cifrato (DoT).
Opzione 3 — dnscrypt-proxy (DoH + DoT + filtri opzionali)
Flexibile, supporta molteplici upstream e blacklist. Ideale se vuoi DoH.
1) Installazione
Debian/Ubuntu:
2) Configurazione essenziale
File:
Impostazioni utili:
Riavvia:
Imposta 127.0.0.1 come DNS del sistema e verifica.
Integrazione con NetworkManager
Se il desktop sovrascrive i DNS:
Ripeti per IPv6 se necessario oppure disabilitalo se non lo usi.
Evitare perdite DNS (DNS leaks)
Controlla questi punti:
La VPN non forza propri DNS in parallelo.
Il browser non usa un DoH interno diverso (Firefox/Chrome possono farlo).
Nessun servizio locale bypassa il resolver (alcuni sandbox o container).
/etc/resolv.confnon viene rigenerato dal DHCP ad ogni connessione — se succede, configuraignore-auto-dnscome sopra.
Per testare a riga di comando:
Oppure strumenti online di leak-test.
Scelta dei resolver: aspetti di privacy
Resolver raccomandati e noti per policy trasparenti:
Quad9 — sicurezza + privacy, no logging identificabile, basato in CH
Cloudflare 1.1.1.1 — privacy-first, audit esterni
Mullvad DNS — ideale se già usi Mullvad
NextDNS — configurabile (account opzionale)
Evita resolver opachi o senza policy pubblica.
Hardening opzionale
Blocca il traffico DNS in chiaro verso porta 53 (tranne localhost):
Abilita DNSSEC dove possibile.
Abilita qname-minimisation (già presente in Unbound).
Quando NON usare DNS cifrati separati
La tua VPN gestisce già DNS cifrati e blocca quelli esterni.
Usi una VPN aziendale con policy di sicurezza interne.
In contesti dove la risoluzione locale rompe servizi interni.
In questi casi lascia che sia la VPN a gestire tutto il percorso DNS.
Troubleshooting rapido
Risoluzione lenta → riduci
cache-min-ttl, verifica latenza dei resolver.Alcuni domini non risolvono → disabilita temporaneamente DNSSEC e riprova; se dipende dal dominio, è un errore di configurazione lato autoritativo.
Il browser ignora i DNS → disattiva DoH interno del browser o allinealo allo stesso resolver.
VPN + DoT in conflitto → rimuovi i resolver locali quando la VPN è attiva, oppure configura la VPN perché non sovrascriva
/etc/resolv.conf.
Conclusione
Cifrare i DNS su Linux è una misura concreta di privacy di rete, ma ha senso solo quando la tua VPN non cifra o non gestisce lei stessa il traffico DNS. La soluzione più semplice è systemd-resolved con DoT; per maggiore controllo usa Unbound o dnscrypt-proxy. Dopo la configurazione, verifica sempre con test di leak che tutte le richieste DNS passino dal resolver cifrato scelto.







