Chiffrement DNS
AdGuard Home prend en charge tous les protocoles de chiffrement DNS modernes prêts à l'emploi :
AdGuard Home prend en charge à la fois DNSCrypt côté client et côté serveur. Apprenez à configurer AdGuard Home comme serveur DNSCrypt.
Ce guide explique comment configurer un serveur DNS chiffré avec AdGuard Home.
Installation du serveur
L'objectif de la sécurisation du trafic DNS est de le protéger contre les tiers qui pourraient l'analyser ou le modifier, par exemple les fournisseurs d'accès à Internet.
Cela signifie que vous aurez besoin d'un serveur doté d'une adresse IP publique et dédiée. Il existe de nombreux fournisseurs de serveurs cloud bon marché�: DigitalOcean, Vultr, Linode, etc. Choisissez-en un, créez-y un serveur cloud, et Installer AdGuard Home sur votre serveur.
Enregistrer un nom de domaine
Tout d’abord, vous avez besoin d’un nom de domaine. Si vous n'en avez jamais enregistré, voici une [instruction simple][enregistrement de nom de domaine] qui vous aidera.
Obtenir un certificat SSL
DNS-over-HTTPS et DNS-over-TLS reposent tous deux sur le chiffrement TLS, vous aurez donc besoin d un certificat SSL pour les utiliser.
Un certificat SSL peut être acheté auprès d'une autorité de certification (CA), une entreprise à laquelle les navigateurs et les systèmes d'exploitation font confiance pour enregistrer les certificats SSL des domaines.
Vous pouvez également obtenir le certificat gratuitement auprès de la CA Let’s Encrypt, une autorité de certification gratuite développée par l’Internet Security Research Group (ISRG).
Ce guide explique comment obtenir un certificat auprès d'eux.
L'utilisation de CertBot
Certbot est un client facile à utiliser qui récupère un certificat auprès de Let’s Encrypt.
- Accédez à certbot.eff.org et choisissez Aucun des éléments ci-dessus pour le logiciel et votre système d’exploitation.
- Suivez les instructions d’installation et arrêtez-vous avant d’atteindre la section Démarrer.
Obtenez un certificat via DNS challenge
Vous avez un nom de domaine, l'utilisation de DNS challenge est le moyen le plus simple d'obtenir un certificat.
Exécutez cette commande et suivez les instructions de certbot :
sudo certbot certonly --manual --preferred-challenges=dns --preferred-chain="ISRG Root X1"
Au final, vous obtiendrez deux fichiers :
fullchain.pem: votre certificat SSL encodé au format PEMprivkey.pem: votre clé privée encodée au format PEM
Les deux seront nécessaires pour configurer AdGuard Home.
Vous devrez utiliser exactement la même procédure pour renouveler le certificat existant.
L'utilisation de Lego
Il existe également une alternative très agréable et facile à utiliser à CertBot appelée LEGO.
- Installez-le en utilisant une méthode appropriée.
- Choisissez votre fournisseur DNS dans la liste et suivez les instructions pour obtenir un certificat.
Voici également un script simple que vous pouvez utiliser pour automatiser la génération et le renouvellement des certificats.
Configurer AdGuard Accueil
Ouvrez l’interface Web d’AdGuard Home et accédez aux Paramètres.
Choisissez la section Cryptage.

Copiez/collez le contenu du fichier
fullchain.pemdans le champ sous Certificats ou spécifiez le chemin d'accès au fichier.Copiez/collez le contenu du fichier
privkey.pemdans le champ sous Clé privée ou spécifiez le chemin d'accès au fichier.Saisissez votre nom de domaine dans Nom du serveur.
Recevez les messages de validation et cliquez sur Enregistrer les paramètres.
AdGuard Home rechargera automatiquement les certificats et/ou les clés privées spécifiés par le chemin d'accès au fichier lorsqu'ils seront modifiés. Un rechargement peut également être déclenché par un signal SIGHUP.
L'utilisation avec proxy inverse
Nous avons déjà un guide sur la configuration d�'un serveur proxy inverse pour accéder à l�'interface utilisateur Web d�'AdGuard Home.
AdGuard Home est en mesure de restreindre les requêtes DNS-over-HTTPS qui proviennent du serveur proxy non inclus dans la liste "de confiance". Par défaut, il est configuré pour accepter les requêtes provenant d'adresses de bouclage IPv4 et IPv6.
Pour permettre à AdGuard Home de gérer les requêtes DNS sur HTTPS provenant d'un serveur proxy inverse, définissez le paramètre trusted_proxies dans AdGuardHome.yaml sur l'adresse IP du serveur proxy. Si vous disposez de plusieurs serveurs proxy, vous pouvez utiliser un CIDR au lieu d'une simple adresse IP.
Proxy inverse Nginx
Pour configurer AdGuard Home dans le but qu'il accepte les requêtes provenant du serveur proxy inverse Nginx, assurez-vous que ce dernier soit configuré correctement.
Le fichier nginx.conf doit contenir les directives appropriées pour ajouter les en-têtes de transfert pris en charge à la requête, à savoir X-Real-IP ou X-Forwarded-For. Ceci peut être réalisé avec ngx_http_realip_module. En résumé, le module récupère l'adresse IP réelle du client et l'inscrit dans l'en-tête de la requête HTTP. AdGuard Home recevra et interprétera la valeur de cet en-tête comme l'adresse réelle du client. L'adresse du serveur proxy inverse sera également reçue et vérifiée par rapport à la liste des serveurs proxy "de confiance".
Un autre en-tête que vous pourriez vouloir faire transiter est l'en-tête Host, qui est nécessaire pour qu'AdGuard Home reconnaisse les requêtes provenant de clients dont le nom d'hôte contient un identifiant ClientID.
Par exemple, si la configuration du serveur proxy inverse contient les directives suivantes :
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 récupérera l'adresse 192.168.1.2 comme adresse de votre serveur proxy et la comparera à la liste trusted_proxies. La version 1.2.3.4 sera contrôlée par les paramètres d'accès si le proxy est considéré "fiable".
Cloudflare CDN
Le réseau de distribution de contenu (CDN) de Cloudflare agit comme un proxy inverse ajoutant ses propres en-têtes cloudflare-headers aux requêtes transférées, qui sont CF-Connecting-IP et True-Client-IP. Ceux-ci sont également pris en charge par AdGuard Home, de sorte que les adresses des serveurs proxy inverses peuvent être insérées directement dans la liste trusted_proxies. Consultez la référence officielle de Cloudflare sur la restauration de l'adresse IP originelle du visiteur.
Autres en-têtes
D'autres en-têtes HTTP pourraient être pris en charge à l'avenir par AdGuard Home. Toutefois, toute requête de fonctionnalité relative aux en-têtes doit d'abord être résolue en configurant le proxy inverse lui-même.
Par exemple, pour modifier le mécanisme HTTP Strict Transport Security afin d'inclure la directive expérimentale preload, on pourrait utiliser une configuration similaire à celle-ci :
location /dns-query {
# …
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
# …
}
Configuration des appareils
Android
- Android 9 and above supports
DNS-over-TLSnatively. To configure it, go to Settings → Network & internet → Advanced → Private DNS and enter your domain name there. - AdGuard for Android supports
DNS-over-HTTPS,DNS-over-TLS,DNSCryptandDNS-over-QUIC. - Intra adds
DNS-over-HTTPSsupport to Android.
iOS
- iOS 14 and above support
DNS-over-TLSandDNS-over-HTTPSnatively via configuration profiles. In order to make things easier, AdGuard Home can generate these configuration profiles for you. Just head to Setup Guide → DNS Privacy and scroll to iOS. - AdGuard for iOS supports
DNS-over-HTTPS,DNS-over-TLS,DNSCryptandDNS-over-QUIC. - DNSCloak supports
DNS-over-HTTPSbut in order to configure it to use your own server, you’ll need to generate a DNS Stamp for it.
Windows
- Windows 10 Build 19628 and higher support
DNS-over-HTTPSnatively. - AdGuard for Windows supports
DNS-over-HTTPS,DNS-over-TLS,DNSCryptandDNS-over-QUIC.
macOS
- macOS Big Sur and higher support
DNS-over-TLSandDNS-over-HTTPSnatively via configuration profiles. In order to make things easier, AdGuard Home can generate these configuration profiles for you. Just head to Setup Guide → DNS Privacy and scroll to iOS.
Other implementations
- AdGuard Home itself can be a secure DNS client on any platform.
- dnsproxy supports all known secure DNS protocols.
- dnscrypt-proxy supports
DNS-over-HTTPS. - Mozilla Firefox supports
DNS-over-HTTPS.
Configuring DNSCrypt
AdGuard Home is able to work as a DNSCrypt server. However, this feature is only available via configuration file, and can’t be set up using the Web UI. This guide explains how to do this.
Generating a configuration file
Here is how to generate a DNSCrypt configuration file and point AdGuard Home to it:
Make sure that your TLS settings are valid and encryption is enabled.
Get the latest version of the
dnscryptutility for your system. Extract the archive and navigate to the resulting directory.On Unix, using a POSIX-compatible shell:
(Here and below,
linux-amd64is used as an example. Make sure to download and use the one for your platform.)Extract the files:
tar -f ./dnscrypt-linux-amd64-v2.2.3.tar.gz -v -x -zOutput example:
linux-amd64/
linux-amd64/README.md
linux-amd64/LICENSE
linux-amd64/dnscryptNavigate to the extracted directory:
cd ./linux-amd64/Generate the configuration file:
./dnscrypt generate --provider-name '2.dnscrypt-cert.example.org' --out ./dnscrypt.yamlOutput example:
```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
```
On Windows, using PowerShell:
(Here and below,
windows-amd64is used as an example. Make sure to download and use the one for your CPU architecture.)Extract the files:
Expand-Archive -Path .\dnscrypt-windows-amd64-v2.2.3.zipNavigate to the extracted directory:
Set-Location -Path .\dnscrypt-windows-amd64-v2.2.3\windows-amd64\Generate the configuration file:
.\dnscrypt.exe generate --provider-name '2.dnscrypt-cert.example.org' --out .\dnscrypt.yamlOutput example:
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
Where
example.orgis the name of your host and./dnscrypt.yamlis the name of the configuration output file.You may add the path to the binary into your
PATH/$env:PATH.In the configuration file (typically
AdGuardHome.yaml), add the following lines:'tls':
# N.B. The encryption must be enabled.
'enabled': true
# …
'port_dnscrypt': 5443
'dnscrypt_config_file': './dnscrypt.yaml'Where
5443is the port for your DNSCrypt server and./dnscrypt.yamlis the name of the configuration file generated in step 2.ImportantStop AdGuard Home before changing the configuration file.
tipOn Windows, it is recommended to use the full path to the configuration file. For example,
C:\Users\Me\Files\dnscrypt.yaml.
Generating a DNSCrypt stamp
Here is how to generate a DNSCrypt stamp and check your installation:
Enter the data from your DNSCrypt configuration file. The Provider public key is the value of the
public_keyfield in your DNSCrypt configuration file.noteEnter the host with your custom port.
Now you have a stamp that looks something like this:
sdns://AQcAAAAAAAAADTEyNy4wLjAuMTo0NDMg8R3bzEgX5UOEX93Uy4gYSbZCJvPeOXYlZp2HuRm8T7AbMi5kbnNjcnlwdC1jZXJ0LmV4YW1wbGUub3JnCheck your installation by running:
./dnscrypt lookup-stamp \
--domain 'example.com' \
--stamp 'sdns://AQcAAAAAAAAADTEyNy4wLjAuMTo0NDMg8R3bzEgX5UOEX93Uy4gYSbZCJvPeOXYlZp2HuRm8T7AbMi5kbnNjcnlwdC1jZXJ0LmV4YW1wbGUub3Jn' \
--type 'a'Or, on Windows:
.\dnscrypt.exe lookup-stamp `
--domain 'example.com' `
--stamp 'sdns://AQcAAAAAAAAADTEyNy4wLjAuMTo0NDMg8R3bzEgX5UOEX93Uy4gYSbZCJvPeOXYlZp2HuRm8T7AbMi5kbnNjcnlwdC1jZXJ0LmV4YW1wbGUub3Jn' `
--type 'a'Where
example.comis the domain name to lookup.
Configuring devices to use DNSCrypt
All platforms
dnscrypt-proxy(reference implementation). DNSCrypt-Proxy is a command-line proxy for Linux, BSD, Windows, macOS, Android, and more.
Android
- AdGuard for Android supports DNSCrypt.
iOS
- AdGuard for iOS supports DNSCrypt.
- DNSCloak uses
dnscrypt-proxyinternally and supports DNSCrypt.
Windows
- AdGuard for Windows supports DNSCrypt.
- Simple DNSCrypt is a simple management tool to configure and run
dnscrypt-proxyon Windows.
See the DNSCrypt website and DNS privacy project’s list for more.