DNS


DNS / DHCP / Nagios / Gammu / Asterisk / MusicPlayerDaemon / Arduino RaspberryPI / OpenVPN | Créer son image pour Raspberry PI | DJI Fade | Reolink Timelapse | K8S on Raspberry Pi


Installation d’un serveur DNS sur Raspberry Pi

L’objectif est de se passer du serveur DNS de la boxe, il y a plusieurs raisons à cela : 1. Amélioration de la vitesse de surf avec gestion d’un cache de résolution local 2. Résoudre ses machines internes par son DNS 3. Effectuer de la résolution dans un VPN 4. Pouvoir provoquer un raffraichissement du cache sans avoir a rebooter la box internet

Bref, il n’y a que des avantages et c’est assez simple à mettre en place, par contre attention pour que votre DNS soit pris en compte il est souvent aussi nécessaire d’installer son propre serveur DHCP puisque souvent les FAI ne permettent pas de pousser une configuration DNS autre que la leur dans la configuration du DHCP de leur boxe. De toute facon c’est plutôt une bonne idée de reduire la boxe du FAI uniquement à la fonction router (Et encore le mode bridge est encore mieux et il faut alors gérer sois même son firewall, mais cela fera l’objet d’un autre post)

Mise à jour de debian

$> apt-get update

Installation des packages DNS bind9

$> apt-get install bind9 bind9utils

Configuration des fichiers dans /etc/bind

Se placer dans le répertoire /etc/bind, il va falloir créer au moins deux fichiers et modifier deux fichiers de la configuration de bind. 1. Création du fichier de résolution de votre zone privée. 2. Création du fichier de résolution inverse de votre zone privée. 3. Référencer son fichier de résolution de zone dans le fichier named.conf.local-zones 4. Référencer son fichier de résolution inverse de zone dans le fichier named.conf.local-zones

Création du fichier de résolution de votre zone privée.

Dans mon cas le domaine concerné est boxadmin.com, il faut bien sur adapter en conséquence et posseder un nom de domaine.

vi db.local.boxadmin.com.zone
$TTL 3600
$ORIGIN local.boxadmin.com.
@   IN  SOA ns0.local.boxadmin.com. dns0.local.boxadmin.com (
    2019112101  ;   serial
    21600       ;   refresh 6 hours
    3600        ;   retry 1 hour
    2419200     ;   expire (4 weeks)
    3600        ;   minumum 1 hour
    ) ;

@       IN  NS  ns0.local.boxadmin.com.
ns0     IN  A   192.168.0.251
dns0    IN  A   192.168.0.251

dhcp0   IN  A   192.168.0.252
toto    IN  A   192.168.0.5

Attention dans ce fichier il faut penser à adapter : 1. le nom de domaine que vous allez résoudre, moi c’est boxadmin.com 2. adapter les IP, personnellement mes éléments réseau (DNS, DHCP, ASTERIK … sont en ip fixe, le reste est en ip dynamique) 3. Pour résoudre de nouvelles entrées ajouter des pointeurs A comme la dernière ligne qui résoud toto sur 192.168.0.5 4. Attention au serial, il faut penser à l’incrémenter a chaque modification de la configuration cela va indiquer a bind de recharger la zone quand vous lui demandez d’effectuer un reload, le format est AAAAMMJJXX avec AAAA : Année sur 4 digits, MM mois sur 2 digits, JJ jour sur deux digits et XX un compteur qu’on incrémente si on effectue plusieurs modifications sur une même journée.

Création du fichier de résolution inverse de votre zone privée.

vi db.0.168.192.in-addr.arpa.zone

Attention le format de ce fichier est l’inverse de l’adresse ip du réseau à résoudre.

$TTL 3600
$ORIGIN 0.168.192.in-addr.arpa.
@   IN  SOA ns0.local.boxadmin.com. dns0.local.boxadmin.com (
    2019112102  ;   serial
    21600       ;   refresh 6 hours
    3600        ;   retry 1 hour
    2419200     ;   expire (4 weeks)
    3600        ;   minumum 1 hour
    ) ;

@   IN  NS  ns0.local.boxadmin.com.
251 IN  PTR ns0.local.boxadmin.com.
252 IN  PTR dhcp0.local.boxadmin.com.
5   IN  PTR toto.local.boxadmin.com.

On retrouve le meme principe que le fichier précédent avec le serial, ici on indique la méthode de résolution inverse c’est à dire avoir le nom depui une ip. Comme le fichier porte les 3 premiers digits de l’ip dans son nom, on retrouve juste la quatrième digit qui est le dernier nombre de l’adresse ip, suivi de IN PTR et le nom DNS.

Référencer son fichier de résolution de zone et son fichier inverse dans le fichier named.conf.local-zones

vi named.conf.local-zones
zone "local.boxadmin.com" {
    type master;
    file "/etc/bind/db.local.boxadmin.com.zone";
};

zone "0.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/db.0.168.192.in-addr.arpa.zone";
};

Démarrage

$> /etc/init.d/bind9 stop
$> /etc/init.d/bind9 start

Vérification dans les logs que tout se passe bien

$> cd /var/log/bind
$> cat global.log

Vous devriez voir le chargement de vos fichiers de zone avec leur serial passer dans le log

03-Jan-2020 10:57:26.222 general: info: zone 0.168.192.in-addr.arpa/IN: loaded serial 2019112102
03-Jan-2020 10:57:26.227 general: info: zone local.boxadmin.com/IN: loaded serial 2019112101

Vérification du fonctionnement

Se placer sur une autre machine du réseau, modifier le fichier /etc/resolv.conf pour lui demander d’effectuer les résolutions depuis le serveur DNS que nous venons d’installer, et effectuer une résolution.

Ici 192.168.0.251 est l’ip fixe de mon serveur DNS.

$> cat /etc/resolv.conf
domain local.boxadmin.com
nameserver 192.168.0.251

Effectuer une résolution de nom sur le réseau interne.

$ host dhcp0 
dhcp0.local.boxadmin.com has address 192.168.0.252

Effectuer une résolution inverse sur le réseau interne.

$ host 192.168.0.252
252.0.168.192.in-addr.arpa domain name pointer dhcp0.local.boxadmin.com.

DNS / DHCP / Nagios / Gammu / Asterisk / MusicPlayerDaemon / Arduino RaspberryPI / OpenVPN | Créer son image pour Raspberry PI | DJI Fade | Reolink Timelapse | K8S on Raspberry Pi