Résoudre la lenteur de DnsCrypt
Que ce soit sur Windows ou Linux, j’utilise DnsCrypt depuis plusieurs années maintenant, associé au cache DNS Open Source unbound. Ce logiciel Open Source permet de chiffrer mes requêtes DNS, avec la garantie qu’elles ne soient pas consignées au niveau du serveur utilisé.
Installation de DnsCrypt sur Windows
Après avoir décompressé la dernière version de DnsCrypt dans le répertoire de votre choix (C:\Program Files (x86)\dnscrypt-proxy\bin dans l’exemple ci-dessous), vous devez à partir de la ligne de commande installer le logiciel. Les noms des services que vous pouvez utiliser sont consignés dans le fichier dnscrypt-resolvers.csv. Dans l’exemple ci-dessous, j’ai choisi dnscrypt.org-fr qui a l’avantage de pointer vers une machine française et de ne pas loguer vos requêtes DNS.
dnscrypt-win32.exe -R dnscrypt.org-fr --install
L’exécution de la commande ci-dessus inscrit dnscrypt-proxy sur votre système Windows dans la liste des services.
Le paramétrage du fonctionnement du service se réalise à partir des informations lues dans la clé de registre HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\dnscrypt-proxy\Parameters.
Le souci de cette méthode est que le service DnsCrypt doit alors lire le fichier dnscrypt-resolvers.csv, ce qui semble considérablement ralentir les requêtes DNS.
Paramétrage manuel du service DnsCrypt
A partir de la documentation fournie sur le site du projet et du fichier dnscrypt-resolvers.csv, j’ai modifié les paramètres de lancement du service DnsCrypt comme suit :
Les requêtes DNS s’exécutent désormais bien plus vite !
Unbound : la cerise sur le gâteau
De manière à accélérer davantage mes requêtes DNS, j’installe Unbound, un cache DNS Open Source possédant d’immenses possibilités de réglages. Après l’avoir installé en tant que service, vous devrez ensuite procéder à quelques modifications du fichier de configuration pour pouvoir le coupler à DnsCrypt. Elles se réalisent, sous Windows, à partir du fichier C:\Program Files (x86)\Unbound\service.conf.
forward-zone: name: "." #Port de DnsCrypt forward-addr: 127.0.0.1@40 forward-first: yes
Changement de port dans DnsCrypt
Le fait d’avoir deux services DNS concurrents qui s’exécutent sur le même port (udp/53 en l’occurrence) m’a amené à devoir changer le port utilisé par DnsCrypt. Dans l’exemple ci-dessous, j’utilise le port 40 au niveau du paramètre LocalAddress.
Configuration réseau
Au niveau de la configuration IPv4 de votre carte réseau dans le centre réseau et partage, indiquez l’adresse 127.0.0.1 comme serveur DNS. Désormais, vos logiciels utiliseront Unbound qui redirigera vos requêtes vers le proxy DnsCrypt !
Redémarrage des services
Vous pouvez le faire à partir de la console services.msc, à partir de la ligne de commande ou à l’aide d’un fichier CMD et de ces quelques commandes :
net stop unbound net stop dnscrypt-proxy net start dnscrypt-proxy net start unbound