Installer et configurer un serveur DNS sous Gentoo / Calculate Linux



Présentation



BIND (Berkeley Internet Name Domain) est le serveur DNS le plus utilisé sur Internet, spécialement sur les systèmes de type Unix.


Installation



Dans le tuto, j'utiliserai le nom de domainelinuxtricks.lan

Pour installer le service DNS sur notre serveur, installer le paquet net-dns/bind.

L'installer à l'aide de la commande

Code BASH :
emerge -avq bind


La sortie produite est de cet ordre :

Code BASH :
[ebuild  N    ] net-dns/bind-9.10.1_p1  USE="berkdb caps dlz ipv6 ssl threads -doc -filter-aaaa -fixed-rrset -geoip -gost -gssapi -idn -json -ldap -mysql -nslint -odbc -postgres -python -rpz -seccomp (-selinux) -static-libs -urandom -xml" PYTHON_TARGETS="python2_7 -python3_3 -python3_4"
Would you like to merge these packages? [Yes/No]


Ne voulant pas le support LDAP :

echo "net-dns/bind -ldap" >> /etc/portage/package.use/custom

On peut installer aussi les utilitaires de tests de serveur DNS (nslookup etc...)

Code BASH :
emerge -avq bind-tools



Configuration du DNS




Configuration générale



L’installation nous a créé un fichier /etc/bind/named.conf .

Vérifier que les variables listen pour autoriser les autres ordinateurs du réseau à contacter le serveur DNS (indiquer any;) :

Code TEXT :
        listen-on-v6 { any; };
        listen-on { any; };


L'ACL "trusted" correspond aux ordinateurs qui pourront faire des requêtes à notre serveur DNS. Mettre un (ou des) sous réseau ou directement any pour tous.


Code TEXT :
acl "trusted" {
        127.0.0.0/8;
        10.21.27.0/24;
        192.168.216.0/24;
};


Code TEXT :
acl "trusted" {
        any;
};
 


On souhaite que notre DNS aille chercher ce qu'il ne sait pas résoudre vers les serveurs de Google.

Code TEXT :
        forward first;
        forwarders {
                8.8.8.8;                // Google Open DNS
                8.8.4.4;                // Google Open DNS
        };
 


On peut aussi activer le logging (la journalisation), c'est utile si on a des problèmes :

Code TEXT :
logging {
    channel default_log {
        file "/var/log/named/named.log" versions 5 size 50M;
        print-time yes;
        print-severity yes;
        print-category yes;
        //severity debug;
        severity info;
    };
 
    category default { default_log; };
    category general { default_log; };
    category update { default_log; };
        category update-security { default_log; };
        category security { default_log; };
 
};




Configuration de la zone Directe



Ensuite, on complète la configuration de bind (toujours dans /etc/bind/named.conf) en remplaçant les lignes //zone "YOUR-DOMAIN.TLD" { et suivantes par la configuration de notre domaine (ci-dessous, un exemple) :

Code TEXT :
zone "linuxtricks.lan" {
        type master;  
        file "/var/bind/pri/linuxtricks.lan.zone";
        allow-query { any; };
        allow-transfer { xfer; };
};
 


On créé le fichier /var/bind/pri/linuxtricks.lan.zone (dans mon exemple), mais plus généralement, celui qu'on a déclaré dans le /etc/bind/named.conf (ci-dessous, un exemple) :

Code TEXT :
$TTL 1W
@       IN      SOA     linuxtricks.lan. root.linuxtricks.lan.  (
                                      2008122601 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      604800     ; Expire - 1 week
                                      86400 )    ; Minimum
@               IN      NS      localhost.
@               IN      A       127.0.0.1
@               IN      A       192.168.1.11
oxygen          IN      A       192.168.1.11
www IN    A      192.168.1.15
routeur IN    A      192.168.1.254
@               IN      AAAA    ::1
 


On modifie le fichier /etc/resolv.conf du serveur pour lui forcer à utiliser le DNS installé.

Code TEXT :
# Generated by net-scripts for interface eth0
search linuxtricks.lan
nameserver 127.0.0.1


Sur Calculate Linux on peut directement utiliser l'outil "cl-setup-network" :
Code BASH :
cl-setup-network --dns 127.0.0.1



Lancement du service



Maintenant que notre DNS est installé et configuré, on lance le service :

Code BASH :
/etc/init.d/named start
 * Caching service dependencies ...
Service 'donutsd' needs non existent service 'mta'                                                           [ ok ]
 * Starting named ...
 * Checking named configuration ...                                                                          [ ok ]


Il nous reste plus qu'à ajouter le service named au démarrage du serveur :

Code BASH :
rc-update add named default
 * service named added to runlevel default



Bugs rencontrés



named failed to start



En lançant mon service après une mise à jour, j'ai eu cette erreur :

Code BASH :
/etc/init.d/named start -v
named              | * Starting named ...
named              | * Checking named configuration ...                                                                                                 [ ok ]
named              | * start-stop-daemon: fopen '/run/named/named.pid': No such file or directory
named              | * Detaching to start '/usr/sbin/named' ...
named              | *   start-stop-daemon: failed to start '/usr/sbin/named'                                                                           [ !! ]
named              | * ERROR: named failed to start
 


En fait, c'est un problème de droit sur le fichier named.conf qui se pose
Code BASH :
-rw-r----- 1 root root  3992 15 janv. 23:25 named.conf


Il suffit de remettre les bonnes permissions :
Code BASH :
cd /etc/bind
chown named:root named.conf
chmod 0600 named.conf


Ensuite tout démarre correctement

Code BASH :
/etc/init.d/named start -v
named              | * Starting named ...
named              | * Checking named configuration ...                                                                                                 [ ok ]
named              | * start-stop-daemon: fopen '/run/named/named.pid': No such file or directory
named              | * Detaching to start '/usr/sbin/named' ...  


Code BASH :
/etc/init.d/named status
 * status: started
Cette page a été vue 8409 fois