Dnsmasq : cache dns et filtrage des domaines douteux

DnsmasqDnsmasq est un outil multifonctions à utiliser idéalement sur une machine linux placée derrière un accès Internet et pour desservir un réseau local :

Les possibilités de Dnsmasq :

– cache DNS : il conserve localement les enregistrements DNS et va servir de DNS favori pour les PC du réseau local. Si Dnsmasq ne connait pas un nom de domaine, il passe la main au serveur DNS habituel et ajoute ensuite la nouvelle résolution dans son cache. A la prochaine requête sur ce domaine, Dnsmasq répondra directement au client.

-serveur DHCP : pour distribuer des adresses IP aux clients du réseau local.

– filtrage : Dnsmasq peut utiliser un fichier hosts additionnel pour filtrer l’accès aux domaines malveillants. Nous allons utiliser cette possibilité pour ajouter une blacklist de domaine à risques (malwares…).

Installation sous Ubuntu

Le paquet dnsmasq est présent sur les dépôts Ubuntu donc un simple :

# apt-get install dnsmasq

et c’est fini😉

Configuration de Dnsmasq

  • éditer le fichier /etc/dnsmasq.conf
  • renseigner l’interface qui écoute le LAN (eth0) et exclure l’interface qui est côté box Internet (eth1) :

strict-order
interface=eth0
except-interface=eth1
bind-interfaces

  • redémarrer le service dnsmasq

#/etc/init.d/dnsmasq restart

  • vérifier les ports DNS en écoute sur localhost et l’IP du réseau local

 netstat -pan|grep dnsmasq

tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      9217/dnsmasq
tcp        0      0 192.168.0.1:53          0.0.0.0:*               LISTEN      9217/dnsmasq
tcp6       0      0 ::1:53                  :::*                    LISTEN      9217/dnsmasq
udp        0      0 127.0.0.1:53            0.0.0.0:*                           9217/dnsmasq
udp        0      0 192.168.0.1:53          0.0.0.0:*                           9217/dnsmasq
udp6       0      0 ::1:53                  :::*                                9217/dnsmasq

Configuration des serveurs DNS à interroger dans le bon ordre

Par défaut, un client (notre machine Dnsmasq) connecté (eth1) à une box Internet en DHCP reçoit la liste de serveurs DNS à utiliser en même temps que son IP. Il s’agit des serveurs DNS du FAI définis sur la box.

Sur la machine Dnsmasq, les serveurs DNS sont renseignés automatiquement dans le fichier /etc/resolv.conf et toute modification manuelle de ce fichier est écrasée à chaque nouvelle requête DHCP.

Si on fait une requête DNS, on va alors interroger directement les DNS du FAI et notre Dnsmasq ne sert à rien. Il faut placer l’IP (192.168.0.1 sur eth0) de notre Dnsmasq en tête de liste, pour être certain de bénéficier du cache DNS.

Pour ce faire, il faut passer par le fichier dhclient.conf :

# vi /etc/dhcp3/dhclient.conf

et forcer l’ajout de notre IP en tête de liste par la commande :

prepend domain-name-servers 192.168.0.1;

Ensuite, renouveler le bail DHCP fourni par la box et vérifier le fichier resolv.conf

#dhclient

et vérifier les serveurs DNS présents dans resolv.conf

#cat /etc/resolv.conf

nameserver 192.168.0.1  # notre dnsmasq sur eth0
nameserver 192.168.1.1 # le serveur DNS et passerelle Internet (Box)

Test du cache Dnsmasq et mesure du temps de réponse

Une requête vers un site pas encore en cache :

#dig debian.org

vérifier la ligne ;; Query time: 51 msec et refaire la même requête

# dig debian.org

la réponse déjà en cache devrait être bien plus rapide

;; Query time: 1 msec

Pour que l’ensemble des machines du LAN bénéficient de Dnsmasq, il suffit de leur indiquer comme premier serveur DNS, l’adresse IP de eth0. Et voilà.

La suite : peaufiner l’installation avec une blacklist de sites malveillants

Pour aller plus loin…

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s