Crittografia DNS
AdGuard Home gestisce tutti i moderni protocolli di crittografia DNS pronto all'uso:
AdGuard Home gestisce sia DNSCrypt lato client che lato server. Scopri come configurare AdGuard Home come server DNSCrypt.
Questa guida spiega come configurare un server DNS crittografato con AdGuard Home.
Installazione server
Lo scopo di mettere al sicuro il traffico DNS è metterlo al sicuro dalle terze parti che potrebbero analizzarlo o modificarlo, ad es. da ISP.
Significa che avrai bisogno di un server con un indirizzo IP pubblico dedicato. Esistono molti provider di server cloud economici: DigitalOcean, Vultr, Linode, ecc. Scegline semplicemente uno, crea lì un server cloud e installa AdGuard Home sul tuo server.
Registra un nome di dominio
Prima di tutto, ti serve un nome di dominio. Se non ne hai mai registrato uno, ecco una istruzione semplice che ti aiuterà.
Ottieni un certificato SSL
Sia DNS-over-HTTPS che DNS-over-TLS si basano sulla crittografia TLS, quindi avrai bisogno di un certificato SSL per usarli.
Un certificato SSL può essere acquistato da un'autorità di certificazione (CA), un'azienda considerata affidabile dai browser e dai sistemi operativi per la registrazione dei certificati SSL per i domini.
In alternativa, puoi ottenere il certificato gratuitamente da Let's Encrypt CA, un'autorità di certificazione gratuita sviluppata dall'Internet Security Research Group (ISRG).
Questa guida spiega come ottenere un certificato da loro.
Usare CertBot
Certbot è un client facile da usare che recupera un certificato da Let’s Encrypt.
- Vai su certbot.eff.org e scegli il software Nessuna delle opzioni precedenti e il tuo sistema operativo.
- Segui le istruzioni di installazione e fermati prima di raggiungere la sezione Per iniziare.
Ottieni un certificato usando la verifica DNS
Hai un nome di dominio, usare la verifica DNS è il modo più semplice per ottenere un certificato.
Esegui questo comando e segui le istruzioni di certbot:
sudo certbot certonly --manual --preferred-challenges=dns --preferred-chain="ISRG Root X1"
Alla fine, otterrai due file:
fullchain.pem: il tuo certificato SSL con codifica PEMprivkey.pem: la tua chiave privata codificata PEM
Entrambi saranno necessari per configurare AdGuard Home.
Dovrai usare la stessa identica procedura per rinnovare il certificato esistente.
Usare Lego
C’è anche un’alternativa a CertBot davvero valida e facile da usare chiamata LEGO.
- Installalo usando un metodo appropriato.
- Scegli il tuo fornitore DNS dalla lista e segui le istruzioni per ottenere un certificato.
Inoltre, ecco un semplice codice che puoi usare per automatizzare la generazione e il rinnovo dei certificati.
Configura AdGuard Home
Apri l'interfaccia web di AdGuard Home e vai in Impostazioni.
Scegli la sezione Crittografia.

Copia/incolla il contenuto del file
fullchain.pemper immettere il campo sotto Certificati o specifica il percorso al file.Copia/incolla i contenuti del file
privkey.pemper immettere il campo sotto Chiave privata oppure specifica il percorso del file.Inserisci il nome del tuo dominio in Nome del server.
Ottieni i messaggi di convalida e clicca Salva impostazioni.
AdGuard Home ricaricherà automaticamente i certificati e/o le chiavi private specificati dal percorso del file quando cambiano. Un ricaricamento può anche essere attivato da un segnale SIGHUP.
Uso con proxy inverso
Abbiamo già una guida sulla configurazione di un server proxy inverso per accedere all'interfaccia web di AdGuard Home.
AdGuard Home è in grado di limitare le richieste DNS-over-HTTPS provenienti da server proxy non inclusi nell'elenco dei server "attendibili". Di default, è configurato per accettare richieste provenienti da indirizzi di loopback IPv4 e IPv6.
Per consentire ad AdGuard Home di gestire le richieste DNS-over-HTTPS provenienti da un server proxy inverso, impostare il parametro trusted_proxies nel file AdGuardHome.yaml sull'indirizzo IP del server proxy. Se disponi di più server proxy, puoi utilizzare un CIDR anziché un semplice indirizzo IP.
Proxy inverso Nginx
Per configurare AdGuard Home in modo che accetti richieste dal server proxy inverso Nginx, assicurati che il server proxy inverso stesso sia configurato correttamente.
Il file nginx.conf deve contenere le direttive appropriate per aggiungere alla richiesta le intestazioni di inoltro supportate, ovvero X-Real-IP o X-Forwarded-For. Questo può essere ottenuto con ngx_http_realip_module. In breve, il modulo preleva l'indirizzo IP reale del client e lo scrive nell'intestazione della richiesta HTTP. AdGuard Home riceve e interpreta il valore di questa intestazione come l'indirizzo del cliente reale. Viene ricevuto anche l'indirizzo del server proxy inverso, che viene anche controllato rispetto all'elenco dei proxy "affidabili".
Un'altra intestazione che si potrebbe voler proxyare è l'intestazione Host, necessaria per far sì che AdGuard Home riconosca le richieste provenienti da client che hanno un ClientID nei loro nomi di host.
Ad esempio, se la configurazione del server proxy inverso contiene le seguenti direttive:
location /dns-query {
# …
proxy_set_header Host $host;
proxy_set_header X-Real-IP '1.2.3.4';
proxy_bind 192.168.1.2;
# …
}
AdGuard Home utilizzerà l'indirizzo 192.168.1.2 come indirizzo del tuo server proxy e lo controllerà con l'elenco trusted_proxies. La versione 1.2.3.4 sarà controllata dalle impostazioni di accesso nel caso in cui il proxy sia considerato "affidabile".
Cloudflare CDN
La rete dedicata di distribuzione dei contenuti di Cloudflare agisce come proxy inverso aggiungendo i [propri intestazioni][intestazioni cloudflare] alle richieste inoltrate, che sono CF-Connecting-IP e True-Client-IP. Questi sono supportati anche da AdGuard Home, quindi gli [indirizzi][indirizzi cloudflare] dei server proxy inversi possono essere inseriti direttamente nell'elenco trusted_proxies. Vedi la referenza ufficiale di Cloudflare sul ripristino dell’IP originale del visitatore.
Altre intestazioni
In futuro, AdGuard Home potrebbe supportare altre intestazioni HTTP. Tuttavia, qualunque richiesta di funzione relativa alle intestazioni dovrebbe prima essere tentata di essere risolvi configurando il proxy inverso stesso.
Ad esempio, per modificare il meccanismo HTTP Strict Transport Security per includere la direttiva sperimentale preload, potrebbe essere utilizzato qualcosa come il seguente frammento di configurazione:
location /dns-query {
# …
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
# …
}
Configurare i dispositivi
Android
- Android 9 e versioni successive supportano nativamente
DNS-over-TLS. Per configurarlo, vai su Impostazioni → Rete e Internet → Avanzate → DNS privato e inserisci il tuo nome di dominio. - AdGuard per Android supporta
DNS-over-HTTPS,DNS-over-TLS,DNSCrypteDNS-over-QUIC. - Intra aggiunge il supporto
DNS-over-HTTPSad Android.
iOS
- iOS 14 e versioni successive supportano nativamente
DNS-over-TLSeDNS-over-HTTPStramite profili di configurazione. Per semplificare le cose, AdGuard Home può generare automaticamente questi profili di configurazione. Basta andare su Guida alla configurazione → DNS Privacy e scorrere su iOS. - AdGuard per iOS supporta
DNS-over-HTTPS,DNS-over-TLS,DNSCrypteDNS-over-QUIC. - DNSCloak supporta 'DNS-sopra-HTTPS' ma per configurarlo per usare il tuo server dovrai generare un DNS Stamp per esso.
Windows
- Windows 10 Build 19628 e versioni successive supportano nativamente
DNS-over-HTTPS. - AdGuard per Windows supporta
DNS-over-HTTPS,DNS-over-TLS,DNSCrypteDNS-over-QUIC.
macOS
- macOS Big Sur e versioni successive supportano
DNS-over-TLSeDNS-over-HTTPSin modo nativo tramite profili di configurazione. Per semplificare le cose, AdGuard Home può generare automaticamente questi profili di configurazione. Basta andare su Guida alla configurazione → DNS Privacy e scorrere su iOS.
Altre implementazioni
- AdGuard Home può essere un client DNS sicuro su qualsiasi piattaforma.
- dnsproxy gestisce tutti i protocolli DNS sicuri noti.
- dnscrypt-proxy supporta
DNS-over-HTTPS. - Mozilla Firefox supporta
DNS-over-HTTPS.
Configurare DNSCrypt
AdGuard Home è in grado di funzionare come server DNSCrypt. Tuttavia, questa funzionalità è disponibile solo tramite file di configurazione e non può essere impostata tramite l'interfaccia web. Questa guida spiega come fare.
Generazione di un file di configurazione
Ecco come generare un file di configurazione DNSCrypt e indicare ad AdGuard Home di utilizzarlo:
Assicurati che le impostazioni TLS siano valide e che la crittografia sia abilitata.
Scarica l'ultima versione dell'utilità
dnscryptper il tuo sistema. Estrai l'archivio e accedi alla cartella risultante.Su Unix, utilizzando una shell compatibile con POSIX:
(Qui e di seguito,
linux-amd64viene utilizzato come esempio. Assicurati di scaricare e utilizzare la versione compatibile con la tua piattaforma.)Estrai i file:
tar -f ./dnscrypt-linux-amd64-v2.2.3.tar.gz -v -x -zEsempio di output:
linux-amd64/
linux-amd64/README.md
linux-amd64/LICENSE
linux-amd64/dnscryptAccedere alla cartella estratta:
cd ./linux-amd64/Genera il file di configurazione:
./dnscrypt generate --provider-name '2.dnscrypt-cert.example.org' --out ./dnscrypt.yamlEsempio di output:
```none
2022/01/02 12:34:56 [info] Generating configuration for 2.dnscrypt-cert.example.org
2022/02/02 12:34:56 [info] Configuration has been written to ./dnscrypt.yaml
2022/02/02 12:34:56 [info] Go to https://dnscrypt.info/stamps to generate an SDNS stamp
2022/02/02 12:34:56 [info] You can run a DNSCrypt server using the following command:
2022/02/02 12:34:56 [info] dnscrypt server -c ./dnscrypt.yaml -f 8.8.8.8
```
Su Windows, utilizzando PowerShell:
(Qui e di seguito,
windows-amd64viene utilizzato come esempio. Assicurati di scaricare e utilizzare la versione compatibile con l'architettura della tua CPU.)Estrai i file:
Expand-Archive -Path .\dnscrypt-windows-amd64-v2.2.3.zipAccedere alla cartella estratta:
Set-Location -Path .\dnscrypt-windows-amd64-v2.2.3\windows-amd64\Genera il file di configurazione:
.\dnscrypt.exe generate --provider-name '2.dnscrypt-cert.example.org' --out .\dnscrypt.yamlEsempio di output:
2022/01/02 12:34:56 [info] Generating configuration for 2.dnscrypt-cert.example.org
2022/02/02 12:34:56 [info] Configuration has been written to .\dnscrypt.yaml
2022/02/02 12:34:56 [info] Go to https://dnscrypt.info/stamps to generate an SDNS stamp
2022/02/02 12:34:56 [info] You can run a DNSCrypt server using the following command:
2022/02/02 12:34:56 [info] dnscrypt server -c .\dnscrypt.yaml -f 8.8.8.8
Dove
example.orgè il nome del tuo host e./dnscrypt.yamlè il nome del file di output della configurazione.Puoi aggiungere il percorso al file binario nel tuo
PATH/$env:PATH.Nel file di configurazione (tipicamente
AdGuardHome.yaml), aggiungi le seguenti righe:'tls':
# N.B. The encryption must be enabled.
'enabled': true
# …
'port_dnscrypt': 5443
'dnscrypt_config_file': './dnscrypt.yaml'Dove
5443è la porta del tuo server DNSCrypt e./dnscrypt.yamlè il nome del file di configurazione generato al passaggio 2.ImportanteFerma AdGuard Home prima di modificare il file di configurazione.
tipSu Windows, si consiglia di utilizzare il percorso completo del file di configurazione. Ad esempio,
C:\Utenti\Io\File\dnscrypt.yaml.
Generazione di un stamp DNSCrypt
Ecco come generare un stamp DNSCrypt e verificare l'installazione:
Vai su https://dnscrypt.info/stamps/.
Inserisci i dati dal tuo file di configurazione DNSCrypt. La chiave pubblica del provider è il valore del campo
public_keynel tuo file di configurazione DNSCrypt.noteInserisci l'host con il port personalizzato.
Ora hai un stamp che assomiglia a qualcosa del genere:
sdns://AQcAAAAAAAAADTEyNy4wLjAuMTo0NDMg8R3bzEgX5UOEX93Uy4gYSbZCJvPeOXYlZp2HuRm8T7AbMi5kbnNjcnlwdC1jZXJ0LmV4YW1wbGUub3JnVerifica l'installazione eseguendo il seguente comando:
./dnscrypt lookup-stamp \
--domain 'example.com' \
--stamp 'sdns://AQcAAAAAAAAADTEyNy4wLjAuMTo0NDMg8R3bzEgX5UOEX93Uy4gYSbZCJvPeOXYlZp2HuRm8T7AbMi5kbnNjcnlwdC1jZXJ0LmV4YW1wbGUub3Jn' \
--type 'a'Oppure, su Windows:
.\dnscrypt.exe lookup-stamp `
--domain 'example.com' `
--stamp 'sdns://AQcAAAAAAAAADTEyNy4wLjAuMTo0NDMg8R3bzEgX5UOEX93Uy4gYSbZCJvPeOXYlZp2HuRm8T7AbMi5kbnNjcnlwdC1jZXJ0LmV4YW1wbGUub3Jn' `
--type 'a'Dove
example.comè il nome di dominio da cercare.
Configurazione dei dispositivi per l'utilizzo di DNSCrypt
Tutte le piattaforme
dnscrypt-proxy(implementazione di riferimento). DNSCrypt-Proxy è un proxy da riga di comando per Linux, BSD, Windows, macOS, Android e altro.
Android
- AdGuard per Android supporta DNSCrypt.
iOS
- AdGuard per iOS supporta DNSCrypt.
- DNSCloak utilizza internamente
dnscrypt-proxye supporta DNSCrypt.
Windows
- AdGuard per Windows supporta DNSCrypt.
- Simple DNSCrypt è un semplice strumento di gestione per configurare ed eseguire
dnscrypt-proxysu Windows.
Vedi il sito web DNSCrypt e la lista del progetto riservatezza DNS per ulteriori informazioni.