Le Domain Name System (ou DNS, système de noms de domaine) est un service permettant de traduire un nom de domaine en informations de plusieurs types qui y sont associées, notamment en adresses IP de la machine portant ce nom.
BIND (pour Berkeley Internet Name Daemon, ou parfois Berkeley Internet Name Domain) est le serveur DNS le plus utilisé sur Internet, spécialement sur les systèmes de type UNIX et est devenu de facto un standard. La première version de BIND a été conçue par quatre étudiants diplômés de l’Université de Californie (Berkeley) sur la base du système d’exploitation BSD 4.3
Nous allons installer Bind sur un serveur CentOS 6.5 (configuration également testée sur un CentOS7 avec succès) nommé dns, ayant pour adresse IP 10.148.14.36 et pour domaine starmate.fr.
Installation:
yum -y install bind bind-utils
On modifie la configuration DNS du système pour que les requêtes DNS se fassent désormais vers le DNS local, pour cela on modifie le paramètre « nameserver » du fichier resolv.conf:
vi /etc/resolv.conf
search starmate.fr
nameserver 127.0.0.1
nameserver 10.148.14.36
On va maintenant configurer la zone.
La mise en place d’une zone, aussi appelé nom de domaine, se fait par la création d’un fichier dans /var/named/.
Ce fichier contiendra l’ensemble des enregistrements DNS du domaine. Ce sont ces informations qui seront envoyées lors d’une requête DNS. Ils donnent notamment les adresses IP de plusieurs services, les IP des sous-domaines, machines, le TTL, etc…
Pour une zone starmate.fr :
vi /var/named/starmate.fr.db
Et on mets ça dedans:
$TTL 604800
@ IN SOA dns.starmate.fr. root.starmate.fr. (
2 ; Serial
3600 ; Refresh [1h]
600 ; Retry [10m]
86400 ; Expire [1j]
600 ) ; Negative Cache TTL [1h]
;
@ IN NS dns.starmate.fr.
dns.starmate.fr. IN A 10.148.14.36
On créer la configuration de la zone inversé:
vi /var/named/10.148.14.zone.db
Et on y met ca:
$TTL 604800
@ IN SOA dns.starmate.fr. root.starmate.fr. (
2 ; Serial
3600 ; Refresh [1h]
600 ; Retry [10m]
86400 ; Expire [1j]
600 ) ; Negative Cache TTL [1h]
;
@ IN NS dns.starmate.fr.
36 IN PTR dns.starmate.fr.
il faut maintenant inclure cette zone dans la liste des domaines de bind
On va commencer par sauvegarder le fichier de configuration initial:
cp -p /etc/named.conf /etc/named.conf.sav
On va vider le fichier:
> /etc/named.conf
Maintenant le fichier est sauvegardé et vidé de son contenu, on y ajoute ça:
vi /etc/named.conf
options
{
directory "/var/named"; // "Working" directory
dump-file "data/cache_dump.db";
statistics-file "data/named_stats.txt";
memstatistics-file "data/named_mem_stats.txt";
listen-on port 53 { any; };
//listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { any; };
//listen-on-v6 port 53 { ::1; };
allow-query { any; };
allow-query-cache { any; };
recursion yes;
};
logging
{
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view "internal"
{
match-clients { localnets; };
recursion yes;
zone "." IN {
type hint;
file "/var/named/named.ca";
};
include "/etc/named.rfc1912.zones";
zone "starmate.fr" {
type master;
file "starmate.fr.db";
};
zone "14.148.10.in-addr.arpa" {
type master;
file "10.148.14.zone.db";
};
};
On vérifie que l’on a pas fait d’erreur de syntaxe:
named-checkzone starmate.fr /var/named/starmate.fr.db
named-checkzone starmate.fr /var/named/10.148.14.zone.db
Si pas d’erreur, on redémarre le service:
service named restart
Pour CentOS6, voici les règles iptables pour ouvrir le port DNS qu’il faut ajouter dans /etc/sysconfig/iptables :
vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
Ou via la commande iptables directement:
iptables -t filter -A OUTPUT -p tcp –dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp –dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp –dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp –dport 53 -j ACCEPT
Pour CentOS7, le mieux est de passer par la commande firewall-cmd:
firewall-cmd --permanent --add-port=53/tcp
firewall-cmd --permanent --add-port=53/udp
firewall-cmd --reload
Vérification de la résolution depuis un autre poste:
dig @10.148.14.36 dns.starmate.fr +short
10.148.14.36
Dig nous a bien retourné l’adresse IP correspondante au nom dns, « dns.starmate.fr »
Vérification de la résolution inversée depuis un autre poste:
dig @10.148.14.36 -x 10.148.14.36 +short
dns.starmate.fr.
Dig nous a bien retourné le nom DNS de la machine ayant l’adresse IP, « 10.148.14.36 »