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 et versions ultérieures prennent en charge nativement le protocole
DNS-over-TLS. Pour le configurer, allez dans Paramètres → Réseau et Internet → Avancés → DNS privé et saisissez votre nom de domaine ici. - AdGuard for Android prend en charge
DNS-over-HTTPS,DNS-over-TLS,DNSCryptetDNS-over-QUIC. - Intra ajoute la prise en charge de
DNS-over-HTTPSà Android.
iOS
- iOS 14 et versions ultérieures prennent en charge
DNS-over-TLSetDNS-over-HTTPSnativement via des profils de configuration. Afin de faciliter les choses, AdGuard Home peut générer ces profils de configuration pour vous. Il vous suffit d'aller dans Guide d'installation → Confidentialité DNS et de faire défiler jusqu'à iOS. - AdGuard pour iOS prend en charge
DNS-over-HTTPS,DNS-over-TLS,DNSCryptetDNS-over-QUIC. - DNSCloak prend en charge
DNS-over-HTTPSmais pour le configurer afin d'utiliser votre propre serveur, vous devrez générer un DNS Stamp pour celui-ci.
Windows
- Windows 10 Build 19628 et versions ultérieures prennent en charge nativement
DNS-over-HTTPS. - AdGuard pour Windows prend en charge
DNS-over-HTTPS,DNS-over-TLS,DNSCryptetDNS-over-QUIC.
macOS
- macOS Big Sur et les versions ultérieures prennent en charge
DNS-over-TLSetDNS-over-HTTPSnativement via des profils de configuration. Afin de faciliter les choses, AdGuard Home peut générer ces profils de configuration pour vous. Il vous suffit d'aller dans Guide d'installation → Confidentialité DNS et de faire défiler jusqu'à iOS.
D'autres implémentations
- AdGuard Home lui-même peut être un client DNS sécurisé sur n'importe quelle plateforme.
- dnsproxy prend en charge tous les protocoles DNS sécuritaires connus.
- dnscrypt-proxy prend en charge
DNS-over-HTTPS. - Mozilla Firefox prend en charge
DNS-over-HTTPS.
La configuration de DNSCrypt
AdGuard Home peut fonctionner comme un serveur DNSCrypt. Cependant, cette fonctionnalité est uniquement disponible via le fichier de configuration et ne peut pas être configurée à l’aide de l’interface Web. Ce guide explique comment procéder.
La génération d’un fichier de configuration
Voici comment générer un fichier de configuration DNSCrypt et y faire pointer AdGuard Home :
Assurez-vous que vos paramètres TLS sont valides et que le chiffrement est activé.
-
Obtenez la dernière version de l’utilitaire
dnscryptpour votre système. Extrayez l’archive et accédez au répertoire résultant.-
Sous Unix, en utilisant un shell compatible POSIX :
(Ici et ci-dessous,
linux-amd64est utilisé comme exemple. Assurez-vous de télécharger et d'utiliser celui qui correspond à votre plateforme.)-
Extrayez les fichiers :
tar -f ./dnscrypt-linux-amd64-v2.2.3.tar.gz -v -x -zExemple de sortie :
linux-amd64/linux-amd64/README.mdlinux-amd64/LICENSElinux-amd64/dnscrypt -
Accédez au répertoire extrait :
cd ./linux-amd64/ -
Générez le fichier de configuration :
./dnscrypt generate --provider-name '2.dnscrypt-cert.example.org' --out ./dnscrypt.yamlExemple de sortie :
2022/01/02 12:34:56 [info] Generating configuration for 2.dnscrypt-cert.example.org2022/02/02 12:34:56 [info] Configuration has been written to ./dnscrypt.yaml2022/02/02 12:34:56 [info] Go to https://dnscrypt.info/stamps to generate an SDNS stamp2022/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
-
-
Sur Windows, avec PowerShell :
(Ici et ci-dessous,
windows-amd64est utilisé comme exemple. Assurez-vous de télécharger et d'utiliser celui qui correspond à l'architecture de votre processeur.)-
Extrayez les fichiers :
Expand-Archive -Path .\dnscrypt-windows-amd64-v2.2.3.zip -
Accédez au répertoire extrait :
Set-Location -Path .\dnscrypt-windows-amd64-v2.2.3\windows-amd64\ -
Générez le fichier de configuration :
.\dnscrypt.exe generate --provider-name '2.dnscrypt-cert.example.org' --out .\dnscrypt.yamlExemple de sortie :
2022/01/02 12:34:56 [info] Generating configuration for 2.dnscrypt-cert.example.org2022/02/02 12:34:56 [info] Configuration has been written to .\dnscrypt.yaml2022/02/02 12:34:56 [info] Go to https://dnscrypt.info/stamps to generate an SDNS stamp2022/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
-
Où
example.orgest le nom de votre hôte et./dnscrypt.yamlest le nom du fichier de sortie de configuration.Vous pouvez ajouter le chemin vers le binaire à votre
PATH/$env:PATH. -
-
Dans le fichier de configuration (généralement
AdGuardHome.yaml), ajoutez les lignes suivantes :'tls':# N.B. The encryption must be enabled.'enabled': true# …'port_dnscrypt': 5443'dnscrypt_config_file': './dnscrypt.yaml'Où
5443est le port de votre serveur DNSCrypt et./dnscrypt.yamlest le nom du fichier de configuration généré à l'étape 2.ImportantArrêtez AdGuard Home avant de modifier le fichier de configuration.
tipSous Windows, il est recommandé d'utiliser le chemin complet vers le fichier de configuration. Par exemple,
C:\Users\Me\Files\dnscrypt.yaml.
Génération d’un tampon DNSCrypt
Voici comment générer un tampon DNSCrypt et vérifier votre installation :
-
Saisissez les données de votre fichier de configuration DNSCrypt. La clé publique du fournisseur correspond à la valeur du champ
public_keydans votre fichier de configuration DNSCrypt.noteSaisissez l'hôte avec votre port personnalisé.
-
Vous avez maintenant un tampon qui ressemble à ceci :
sdns://AQcAAAAAAAAADTEyNy4wLjAuMTo0NDMg8R3bzEgX5UOEX93Uy4gYSbZCJvPeOXYlZp2HuRm8T7AbMi5kbnNjcnlwdC1jZXJ0LmV4YW1wbGUub3JnVérifiez votre installation en exécutant :
./dnscrypt lookup-stamp \--domain 'example.com' \--stamp 'sdns://AQcAAAAAAAAADTEyNy4wLjAuMTo0NDMg8R3bzEgX5UOEX93Uy4gYSbZCJvPeOXYlZp2HuRm8T7AbMi5kbnNjcnlwdC1jZXJ0LmV4YW1wbGUub3Jn' \--type 'a'Ou, sur Windows :
.\dnscrypt.exe lookup-stamp `--domain 'example.com' `--stamp 'sdns://AQcAAAAAAAAADTEyNy4wLjAuMTo0NDMg8R3bzEgX5UOEX93Uy4gYSbZCJvPeOXYlZp2HuRm8T7AbMi5kbnNjcnlwdC1jZXJ0LmV4YW1wbGUub3Jn' `--type 'a'Où
example.comest le nom de domaine à rechercher.
La configuration des appareils pour utiliser DNSCrypt
Toutes les plateformes
dnscrypt-proxy(implémentation de référence). DNSCrypt-Proxy est un proxy en ligne de commande pour Linux, BSD, Windows, macOS, Android, et plus encore.
Android
- AdGuard pour Android prend en charge DNSCrypt.
iOS
- AdGuard pour iOS prend en charge DNSCrypt.
- DNSCloak utilise
dnscrypt-proxyen interne et prend en charge DNSCrypt.
Windows
- AdGuard pour Windows prend en charge DNSCrypt.
- Simple DNSCrypt est un outil de gestion simple pour configurer et exécuter
dnscrypt-proxysur Windows.
Voir le site web DNSCrypt et la liste du projet de confidentialité DNS pour plus d'informations.