Ces derniers temps, je me suis trouvée confrontée à une gestion de plus en plus difficile du fichier /etc/hosts que je partage entre ma machine physique et mes serveurs virtuels.
J’ai donc décidé de configurer un DNS (Domain Name Server), Serveur de Nom de Domaine en français.
A quoi sert un DNS ? En l’occurrence à ne pas avoir besoin de retenir des adresses IP insipides pour accéder à des serveurs. Il est tout de même plus facile de pointer http://www.google.fr/ que http://173.194.67.94/ !
Configuration du fichier /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { 127.0.0.1; 192.168.56.120; }; /* Ici, l'adresse IP sur laquelle écoutera
votre DNS */
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; 192.168.56.0/24; }; /* Ici, la plage d'adresses
qui sera servie */
/*
- If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
- If you are building a RECURSIVE (caching) DNS server, you need to enable
recursion.
- If your recursive DNS server has a public IP address, you MUST enable access
control to limit queries to your legitimate users. Failing to do so will
cause your server to become part of large scale DNS amplification
attacks. Implementing BCP38 within your network would greatly
reduce such attack surface
*/
recursion no; /* Très important !! Votre serveur est local ! */
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone"nice" IN { /* Votre nom de domaine. Pour moi c'est ".nice" */
type master;
file "/var/named/nice.fwd.zone"; /* Votre zone de forward nom --> IP */
allow-update { none; };
};
zone"56.168.192.in-addr.arpa" IN { /* Uniquement les 3 premiers nombres en ordre inverse avec
in-addr.arpa pour fermer la chaîne de caractère du reverse */
type master;
file "/var/named/nice.rev.zone"; /* Votre zone reverse IP --> nom */
allow-update { none; };
};
######
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
Votre fichier named.conf est désormais prêt.
Fichier forward /var/named/nice.fwd.zone
Ce fichier contient le mapping entre un nom de machine et son IP. C’est une cartographie de votre domaine.
Attention ! Le nom de domaine se termine par un point ! Il est obligatoire. C’est un élément de syntaxe.
$TTL 86400 ; Ca ne s'invente pas... Ainsi que tout ce qui est dans cette section
@ IN SOA masterdns.nice. root.nice. (
2015060901 ; serial
3600 ; refresh
1800 ; retry
604800 ; expire
86400 ) ; minimum
; Name server. Le nom du serveur de domaine
@ IN NS masterdns.nice.
; Résolution nom de serveur vers IP
@ IN A 192.168.56.120
; Ensemble des machines du domaine avec leur résolution IP
masterdns IN A 192.168.56.120
wp-fedora IN A 192.168.56.102
ora11gr212cr1 IN A 192.168.56.103
cldcnt IN A 192.168.56.104
ora12cr1rac1 IN A 192.168.56.105
ora12cr1rac2 IN A 192.168.56.106
ora11gr2rac1 IN A 192.168.56.107
ora11gr2rac2 IN A 192.168.56.108
postgresql01 IN A 192.168.56.111
postgresql02 IN A 192.168.56.112
La dernière section doit donc contenir toutes vos machines. Il va de soi que ces noms de machines doivent correspondre aux noms réels des machines si vous voulez ne pas vous y perdre.
Fichier reverse /var/named/nice.rev.zone
Ce fichier contient le mapping entre une IP et un nom de machine. C’est la cartographie inverse de votre domaine.
$TTL 86400 ; Ca ne s'invente pas... Ainsi que tout ce qui est dans cette section
@ IN SOA masterdns.nice. root.nice. (
2015060901 ; serial
3600 ; refresh
1800 ; retry
604800 ; expire
86400 ) ; minimum
NS @
A 192.168.56.120
PTR masterdns.nice. ; Attention à ces 3 derniers paramètres.
; Ils définissent le DNS en reverse
; Serveur de nom en reverse
@ IN NS masterdns.nice.
; Serveur de nom en résolution nom vers IP
masterdns IN A 192.168.56.120
; Liste des machines du domaine. Seuls le dernier nombre est renseigné puisque
; les 3 premiers font partie de la résolution inverse.
; Le nom de chaque machine est exprimé avec son domaine complet agrémenté du point.
120 IN PTR masterdns.nice.
102 IN PTR wp-fedora.nice.
103 IN PTR ora11gr212cr1.nice.
104 IN PTR cldcnt.nice.
105 IN PTR ora12cr1rac1.nice.
106 IN PTR ora12cr1rac2.nice.
107 IN PTR ora11gr2rac1.nice.
108 IN PTR ora11gr2rac2.nice.
111 IN PTR postgresql01.nice.
112 IN PTR postgresql02.nice.
A ce point, le serveur DNS dispose de tout ce dont il a besoin pour démarrer.
Changement de groupe des deux fichiers de configuration pour named
chgrp named /var/named/nice.fwd.zone chgrp named /var/named/nice.rev.zone
Test et validation des fichiers de configuration
named-checkconf /etc/named.conf named-checkzone masterdns.nice /var/named/nice.fwd.zone named-checkzone masterdns.nice /var/named/nice.rev.zone
Ces instructions valident définitivement la bonne syntaxe de votre configuration.
Activation et démarrage de named
systemctl enable named systemctl start named
Mise à jour du fichier /etc/resolv.conf
Le fichier /etc/resolv.conf est souvent maintenu par le système. Je ne rentrerai donc pas dans le détail des opérations à réaliser, elles sont très dépendantes de votre paramétrage réseau.
Dans mon cas, utilisant Network Manager, j’ai dû jouer avec la configuration de chaque carte réseau afin d’obtenir ma liste de DNS dans le bon ordre, à savoir « nameserver 192.168.56.120 » en premier serveur de domaine.