Le pourquoi du comment

Il y a plusieurs raisons pour lesquelles on peut vouloir utiliser son propre service DNS. Voici les avantages majeurs selon moi.

Éviter la censure

Et oui, comme le dit si bien Korben dans son article :

La censure via les DNS est maintenant une réalité en France. Cette censure est inefficace et surtout facilement contournable.

Et c'est totalement vrai. Lorsque monsieur ou madame tout-le-monde utilise son ordinateur avec tous les paramètres par défaut, les requêtes DNS sont faites aux serveurs de son FAI.

C'est à ce moment précis que s'applique la censure par DNS. Il suffit donc de ne pas utiliser ces serveurs censurés et le tour est joué.

Et puis, c'est bien connu, lorsqu'on empêche quelqu'un de faire quelque chose, il va essayer de trouver un moyen pour y arriver quand même ;-).
C'est d'ailleurs assez facile de le vérifier sur Google.

Maîtriser ses données

Si je vous demande :

Sans réfléchir, pouvez-vous me donner une adresse IP d'un DNS ?

Généralement, ceux qui auront une réponse à me donner me diront "8.8.8.8" ou "8.8.4.4". Ce sont les DNS les plus connus (source: moi), et possiblement les plus utilisés.
Ce sont aussi ceux de Google. Ils sont donc performants et sécurisés, mais ils récoltent aussi des données sur ceux qui les utilisent.

Important: We built Google Public DNS to make the web faster and to retain as little information about usage as we could, while still being able to detect and fix problems. Google Public DNS does not permanently store personally identifiable information.

Source : Google Public DNS "Your Privacy"

Pour ceux qui sont anglophobes, voici une petite traduction :

Important : Nous avons créé Google Public DNS pour rendre le Web plus rapide et conserver le moins d'informations possible sur l'utilisation, tout en pouvant détecter et corriger les problèmes. Google Public DNS ne stocke pas de façon permanente des informations personnelles identifiables.

En gros, ils récoltent des données concernant le fonctionnement du service, ainsi que certaines données sur les utilisateurs, qu'ils affirment supprimer sous "24 à 48 heures".

J'évoque le cas de Google, car c'est un des (le) plus gros et le plus connu. Mais c'est aussi le cas pour d'autres services, j'en suis convaincu. Et ce n'est pas pour autant que ceux-ci l'annoncent publiquement.

Gagner en temps de réponse

Lorsqu'on a une connexion moyenne (15 Mbps d'après le FAI, 1 Mbps en réel...), ou dans le but d'optimiser au mieux, l'utilisation d'un service DNS personnel est une bonne solution.

J'ai fait un test pour démontrer la chose en utilisant DNS Benchmark.

Le logiciel a testé la rapidité de plusieurs DNS et les affiche en fonction de leur temps de réponse. Il me dit aussi que les DNS de Google ont beaucoup plus de noms de domaine en cache que mon service local. Et c'est normal, car un nom de domaine peut rester en cache seulement un certain temps.

Au bout d'un temps défini, il doit être re-vérifié depuis le serveur DNS source. Dans le cas des DNS de Google, ils sont tellement utilisés, qu'un enregistrement DNS est sans cesse utilisé et n'a pas le temps d'expirer.

En revanche, le service DNS que j'ai déployé sur mon serveur dédié a quant à lui presque autant de cache que ceux de Google !

Mettre en place un service DNS

Sous Windows

L'article de Korben explique très bien comment installer un service DNS, pas à pas, avec des captures d'écran.

Pour ceux qui savent comment changer les adresses IP des serveurs DNS utilisés par Windows, il suffit de télécharger Unbound DNS et de l'installer.
Ensuite, dans les paramètres de votre carte réseau, il faut renseigner l'IP 127.0.0.1 en premier. Vous pouvez mettre une autre IP en second choix, au cas où le service local s'arrête.

Ce qui donne ceci :

configReseauWindows

Vous pouvez vérifier en tapant la commande suivant dans un terminal (Win+R puis cmd) :

nslookup blog.lmilcent.com  

Si tout fonctionne correctement, vous devriez avoir une réponse comme ci-dessous.

nslookup

Réponse ne faisant pas autorité veut simplement dire que le serveur qui a répondu n'est pas celui qui gère le domaine lmilcent.com.

Si ce n'est pas l'adresse IP 127.0.0.1 qui répond, c'est que le service Unbound n'est sûrement pas démarré. Vous pouvez le lancer manuellement (ou redémarrer l'ordinateur) en ouvrant le gestionnaire de services : Win+R, puis tapez services.msc.
Cherchez dans la liste Unbound DNS Validator, clique droit, puis Démarrer.

Avec docker

Vous pouvez aussi facilement héberger votre propre serveur DNS, en local ou sur une machine distante, avec docker.

Un petit tour sur le docker hub pour récupérer une image déjà fonctionnelle et le tour est joué.

Voilà mon script de lancement :

#!/bin/bash

echo " Mise à jour de l'image"  
docker pull andyshinn/dnsmasq:latest

echo " Suppression du conteneur actuel"  
docker stop dns-masq  
docker rm dns-masq

echo " Lancement"

docker run -d \  
  --name dns-masq \
  --restart unless-stopped \
  -p 53:53/udp \
  -p 53:53/tcp \
  -v /etc/localtime:/etc/localtime:ro \
  --cap-add=NET_ADMIN \
  andyshinn/dnsmasq:latest

Si vous avez une erreur du genre listen udp 0.0.0.0:53: bind: address already in use, c'est que vous avez déjà un service DNS qui tourne sur votre machine.
Si vous voulez utiliser le conteneur docker, il va falloir désactiver celui-ci.



J'espère que cet article vous aura été utile, n'hésitez pas à commenter pour faire part de vos expériences ou m'indiquer un problème dans la page !