PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Pierre-Alain Bandinelli : DNS local et filtrage DNS tout simplement

dimanche 8 septembre 2013 à 21:22

Il est très simple de mettre en place un petit DNS local dans un environnement domestique (ou professionnel de petite taille). Les avantages peuvent être nombreux : accélérer (un peu) la connexion à internet en gardant en cache les résultats des requêtes DNS les plus fréquentes (soyons toutefois réalistes, le gain restera modeste), attribuer des noms résolus à chacun de vos périphériques et... bloquer certains sites par filtrage DNS .

Le filtrage DNS a l'avantage de concerner tous les périphériques connectés au réseau et d'interdire également la connexion en HTTPS aux sites choisis, ce que le filtrage simple par URL ne permet pas en HTTPS. Ce type de filtrage pourra être pratique pour interdire l'accès à certains sites et couper certains serveurs de publicité. Il existe également des listes de sites aux contenus choquants en libre accès sur le net (souvent générées pour SquidGuard) que l'on pourra également réutiliser. Un utilisateur pourra bien sûr contourner ce filtrage en spécifiant des serveurs DNS différents ou en utilisant un proxy ou tunnel de son choix.

Pour la mise en place du filtrage DNS, déployons le logiciel dnsmasq qui est à la fois un serveur DHCP et un serveur DNS. Bien sûr, la fonction DHCP peut-être désactivée si elle est déjà réalisée par un autre service sur le réseau. Toutefois, notons que dnsmasq ne pourra alors pas automatiquement inclure dans les DNS les entrées correspondantes aux noms d'hôte des périphériques connectés (et auxquels une adresse a été attribuée par DHCP).

DNSMasq

Commençons par installer dnsmasq avec le sélecteur de paquet de son choix - l'exemple ci-dessous est valable pour Debian ou les distributions dérivées : aptitude install dnsmasq

Nous allons ensuite paramétrer le service dans /etc/dnsmasq.conf :

Paramétrage du DNS

no-resolv
no-hosts
server=8.8.8.8
server=8.8.4.4
address=/site-interdit.com/192.168.1.1
address=/autre-site-interdit.biz/192.168.1.1

Les 2 sites mentionnés seront donc résolus vers 192.168.1.1. On peut imaginer que 192.168.1.1 héberge un serveur web qui affichera une page signalant à l'utilisateur le blocage.

cache-size=500

500 requêtes sont donc toujours conservées en mémoire par dnsmasq. A modifier à votre volonté selon la RAM disponible et le nombre de requêtes reçues...

log-facility=/var/log/dnsmasq.log
log-queries

Paramétrage du DHCP

dhcp-range=192.168.1.5,192.168.1.199,255.255.255.0,12h
dhcp-host=00:00:ab:cd:ef:12,ordinateur1,192.168.1.5
dhcp-host=00:00:ab:cd:ef:34,ordinateur2,192.168.1.6
dhcp-option=option:router,192.168.a.b

Pour expliquer à tous les clients d'utiliser dnsmasq comme seul serveur DNS, on ajoutera finalement :

dhcp-option=6,192.168.c.d

en remplaçant bien sûr 192.168.c.d par l'adresse à laquelle dnsmasq répondra !

iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

Voilà votre petit serveur DHCP et DNS accessible sur votre réseau local avec les éventuels raccourcis ou filtrages de vos choix !

Gravatar de Pierre-Alain Bandinelli
Original post of Pierre-Alain Bandinelli.Votez pour ce billet sur Planet Libre.