igloo

Serveur DNS local avec BIND sous Gentoo
serveur esclave sous Fedora

"One Ring to rule them all, One Ring to find them,
One Ring to bring them all and in the darkness BIND them"

DNS (pour Domain Name System) est un service qui permet de traduire les noms de domaine internet en adresse IP.

BIND (pour Berkley Internet Name Daemon ou Domain) est le serveur DNS le plus utilisé sur le net, spécialement sur les systèmes de type UNIX et est devenu un standard.

Serveur maître:

Installer bind et bind-tools :

# emerge -a bind
# emerge -a bind-tools

ajouter le démon au démarrage, il s'appelle named, puis le lancer :

# rc-update add named default
# rc-service named start

Si ce n'est pas le cas, attribuer un nom à votre machine en éditant /etc/conf.d/hostname (ici, gentoo-server) :

hostname="gentoo-server"

ajouter les lignes suivantes au fichier /etc/conf.d/net avec un nom de domaine pour l'interface réseau (ici, vm.lan et enp0s3):

dns_servers="127.0.0.1"
dns_domain_enp0s3="vm.lan"

éditer /etc/hosts :

127.0.0 .1gentoo-server.vm.langentoo-server

éditer /etc/bind/named.conf :

! Attention, (presque) chaque ligne doit finir par un ' ;'

ajouter votre réseau au groupe 'trusted', l'adresse IP de la machine dans les options et modifier le chemin du fichier pid

acl "trusted" {
       127.0.0.0/8;
       192.168.0.0/24; ← votre réseau
};

options {
       directory "/var/bind";
       pid-file "/var/run/named/named.pid"; ← chemin complet
       listen-on-v6 { none; };
       listen-on port 53 { 127.0.0.1; 192.168.0.160; }; ← IP

allow-query {
trusted;
};

allow-query-cache {
trusted;
};

allow-transfer {
none;
};

allow-update {
none;
};

dé-commenter la section 'forwarders' et modifier les dns si besoin

forwarders {
192.168.0.1;// Ma box
                   //124.124.124.124;// Your ISP NS
4.2.2.1;// Level3 Public DNS
4.2.2.2;// Level3 Public DNS
8.8.8.8;// Google Open DNS
8.8.4.4;// Google Open DNS
                   };

dé-commenter la section logging

logging {
         channel default_log {
                file "/var/log/named/named.log" versions 5 size 50M; print-time yes;
                print-severity yes;
                print-category yes;
             };
             category default { default_log; };
             category general { default_log; };
};
include "/etc/bind/rndc.key";
controls {
        inet 127.0.0.1 port 953 allow { 127.0.0.1/32; } keys { "rndc-key"; };
};

ajouter la zone locale, il faudra également créer le fichier (ici, 'vm.lan.internal')

view "internal" {
          match-clients { 192.168.0.0/24; localhost; };
          recursion yes;

          zone "vm.lan" {
                 type master;
                 file "pri/vm.lan.internal";
          };
};

création du fichier log.

# mkdir -p /var/log/named/
# chmod 770 /var/log/named/
# touch /var/log/named/named.log
# chmod 660 /var/log/named/named.log
# chown -R named /var/log/named/
# chgrp -R named /var/log/named/

création du fichier /var/bind/pri/vm.lan.internal

# cd /var/bind/pri
# touch vm.lan.interal

;vm.lan.internal
$TTL 2d
@        IN      SOA         gentoo-server.vm.lan.         root.vm.lan. (
      2018061701; serial
      3h; refresh
      1h; retry
      1w; expiry
      1d  ); minimum
@IN NSgentoo-server.vm.lan.
Gentoo-serverIN A192.168.0.160
boxIN A 192.168.0.1
C-3POIN A 192.168.0.2
R2-D2IN A 192.168.0.5

vérification des fichiers de configuration et redémarrage du service

Serveur esclave :

Gentoo:

éditer le fichier /etc/bind/named.conf et ajouter l'adresse IP du serveur esclave :

allow-transfer {
192.168.0.153;
};

puis le fichier /var/bind/pri/vm.lan.internal, mettre à jour le 'serial' et ajouter une entrée pour le serveur esclave :

>$TTL 2d
@    IN SOA     gentoo-server.vm.lan.   root.vm.lan. (
    2018062301; serial ← (à mettre à jour)
    3h; refresh
    1h; retry
    1w; expiry
    1d ); minimum
@IN NSgentoo-server.vm.lan.
IN NSfedora.vm.lan.
gentoo-serverIN A192.168.0.160
fedoraIN A192.168.0.153
boxIN A192.168.0.1
C-3POIN A192.168.0.2
R2-D2IN A192.168.0.5

# rc-service named restart

Fedora:

vérifier et éditer si besoin les fichiers suivants :

/etc/hosts

127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4
::1localhostlocalhost.localdomainlocalhost6localhost6.localdomain6
192.168.0.153fedora.vm.lanfedora

/etc/hostname

fedora.vm.lan

/etc/NetworkManager/NetworkManager.conf (pour l'empêcher d'écraser le fichier resolv.conf à chaque redémarrage de l'interface réseau) :

[main]
#plugins=ifcfg-rh,ibft
dns=none # ← ajouter cette option dans la section [main]

/etc/resolv.conf

domain vm.lan
nameserver 127.0.0.1

installation de Bind

# dnf install bind

ajouter les lignes suivantes à la fin de /etc/named.conf:

>zone "vm.lan" IN {
      type slave;
      masters { 192.168.0.160; };
      file "slaves/vm.lan.wan";
      notify no;
};

relancer le service et l'ajouter au démarrage :

# systemctl restart named
# systemctl enable named