DNS
| Serveur | |
|---|---|
| Protocole | udp |
| Port | 53 |
| Configuration Iptables | iptables -I INPUT 2 -p udp --dport 53 -j ACCEPT |
Préparation
Dans un premier temps, il faudra avoir une connexion à Internet et utiliser un "autre" serveur DNS.
Pour ceux qui aurait manqué des étapes voici les étapes à suivre:
Une fois ces étapes effectuées, entrons dans le vif du sujet !
Installation
Tout d'abord il faut installer les paquetages suivants:
# yum -y install bind bind-utils
- bind → c'est le serveur DNS (Berkeley Internet Name Daemon)
- bind-utils → des utilitaires pour s'assurer que le serveur est correctement configuré (nslookup, dig, ...)
Configuration du serveur
Point de départ
L'essentiel de la configuration se déroule dans le fichier /etc/named.conf Ci-dessous un exemple de fichier de base:
options {
# Adresse d'écoute pour IPv4
listen-on port 53 { 127.0.0.1; };
# Adresse d'écoute pour IPv6
listen-on-v6 port 53 { ::1; };
# Emplacement des fichiers de zones
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";
# Réseaux auxquels BIND répondra
allow-query { localhost; };
# Autorise les recherches récursives
recursion yes;
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";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
Déclarations
Les déclarations suivantes peuvent être utilisées:
- acl → configure une liste de contrôle d'accès
- any → correspond à toutes les adresses IP
- localhost → correspond aux IP du système local
- localnets → correspond aux adresses IP utilisées par le système aux travers d'interfaces
- none → correspond à aucune adresse IP
Exemples
acl
La déclaration acl permet de rassembler plusieurs réseaux ensemble:
acl authorized {
192.168.0.0/24;
10.0.1.0/24;
192.168.50.0/24;
};
acl unauthorized {
192.168.60.0/24;
}
On pourra ensuite remplacer avantageusement la ligne suivante:
allow-query { localhost; };
Par:
allow-query { authorized; };
Cela sera plus propre de rassembler les déclarations en début de fichier et de ne plus avoir à parcourir l'intégralité du fichier pour apporter une modification !
none
On pourra remplacer la ligne suivante:
listen-on-v6 port 53 { ::1; };
Par:
listen-on-v6 port 53 { none; };
localnets
On pourra remplacer la ligne suivante:
listen-on port 53 { 127.0.0.1; };
Par:
listen-on port 53 { localnets; };
Démarrage
Au premier démarrage, le démon named génére les clés RNDC:
# service named start Generating /etc/rndc.key: [ OK ] Démarrage de named : [ OK ]
Vérification de l'écoute
On peut utiliser la commande netstat pour s'assurer que named écoute sur les interfaces désirées
# netstat -aunp | grep named udp 0 0 127.0.0.1:53 0.0.0.0:* 10787/named udp 0 0 ::1:53 :::* 10787/named
Test de résolution
Utilisons nslookup pour s'assurer que notre serveur fonctionne en lui demandant l'adresse de google.fr
# nslookup google.fr 127.0.0.1 Server: 127.0.0.1 Address: 127.0.0.1#53 Non-authoritative answer: Name: google.fr Address: 173.194.41.23 Name: google.fr Address: 173.194.41.24 Name: google.fr Address: 173.194.41.31
Il ne nous reste plus qu'à déclarer une zone !
Ajout d'une zone de recherche directe
Le fichier de zone
Les fichiers de zones se trouvent dans le répertoire /var/named et respecte la syntaxe suivante, pour un réseau tala.informatique.fr ayant comme plan d'adressage 192.168.200.0/24:
- le fichier de recherche directe: tala-informatique.fr / tala-informatique.fr.db
- le fichier de recherche inverse: 200.168.192.in-addr.arpa
Le contenu du fichier tala-informatique.fr est le suivant:
; Précise au client que la durée de validité des informations de noms
$TTL 86400
; Début de la déclaration State Of Autority (SOA)
tala-informatique.fr. IN SOA dns.tala-informatique.fr. root.tala-informatique.fr. (
0 ; serial
21600 ; refresh after 6 hours
3600 ; retry after 1 hour
604800 ; expires after 1 week
86400 ) ; minimum TTL of 1 day
; NS pour les serveurs de nom
IN NS dns.tala-informatique.fr.
; MX pour les serveurs de mails, on indique également un poid / priorité
IN MX 10 mail.tala-informatique.fr.
IN MX 20 mail2.tala-informatique.fr.
; Enregistrement direct
dns.tala-informatique.fr. IN A 192.168.200.253
; Enregistrement direct
mail.tala-informatique.fr. IN A 192.168.200.252
; Enregistrement direct
mail2.tala-informatique.fr. IN A 192.168.200.251
; Alias mx <=> mail <=> 192.168.200.252
mx.tala-informatique.fr. IN CNAME mail.tala-informatique.fr.
; Alias mx2 <=> mail2 <=> 192.168.200.251
mx2.tala-informatique.fr. IN CNAME mail2.tala-informatique.fr.
Déclaration dans la configuration de named
Maintenant que le fichier de recherche directe est créé, il faut indiquer à named de quoi il retourne. A la fin du fichier /etc/named.conf ajoutons les lignes suivantes:
zone "tala-informatique.fr" IN {
; Le serveur est maître pour cette zone
type master;
; On indique le fichier de zone
file "tala-informatique.fr";
; On précise si on autorise les mises à jours (ici non, parce que le serveur est maître)
allow-update { none; };
};
Test
Toujours avec nslookup
# nslookup dns.tala-informatique.fr 127.0.0.1 Server: 127.0.0.1 Address: 127.0.0.1#53 Name: dns.tala-informatique.fr Address: 192.168.200.100
Pour s’affranchir d'avoir à ajouter le nom de domaine, il faut modifier la configuration du client dns
Ajout d'un zone de recherche inverse
Le fichier de zone
$TTL 86400 200.168.192.in-addr.arpa. IN SOA dns.tala-informatique.fr. root.tala-informatique.fr. ( 0 ; serial 21600 ; refresh after 6 hours 3600 ; retry after 1 hour 604800 ; expire after 1 week 86400 ) ; minimum TTL of 1 day IN NS dns.tala-informatique.fr. IN MX 10 mail.tala-informatique.fr. IN MX 20 mail2.tala-informatique.fr. 253 IN PTR dns.tala-informatique.fr. 252 IN PTR mail.domain.com. 251 IN PTR mail2.domain.com.