LINUX - Monter un serveur DNS

Modérateur : Modérateurs

Répondre
Avatar du membre
earendil
Modérateur
Modérateur
Messages : 2357
Enregistré le : mar. 06 févr., 2007 19:37
Localisation : Dans la BAO...

LINUX - Monter un serveur DNS

Message par earendil »

On continue dans les tutos Linux : je vais maintenant essayer de vous montrer comment faire un serveur DNS. Il va de soit que cela n'est que la base et que l'on peut approfondir grandement ce tutoriel.

Comme dans le tutoriel précédent, je me base sur une Debian
les commandes commençant par # sont à taper en root, et celle commençant par § à taper en utilisateur normal

1. Pourquoi ?

Je sens venir la question du "Pourquoi un DNS alors que mon FAI m'en fournit un ?"
3 points à mes yeux :
* Vous avez votre propre domaine (il convient donc alors d'avoir un contrôleur si vous créez des hôtes différents pour vos services - SMTP/Pop, Web, FTP, ... - mais ce n'est pas obligatoire).
* Vous partagez votre connection internet entre plusieurs postes et vous souhaitez améliorer votre débit réseaux en mettant un cache DNS locale
* Votre FAI est un manche et n'est pas capable de fournir un serveur DNS stable digne de ce nom.

Pour cela, je vais expliquer les 3 domaines de configuration possible.

2. Installation

Le serveur DNS sous Linux s'appelle Bind (lien Wiki)
Pour l'installer, on tapera

Code : Tout sélectionner

# apt-get install bind9
/!\ ATTENTION : Si votre machine qui fait office de serveur DNS est directement relié à internet et qu'il n'y a pas de Firewall entre elle et internet, n'oubliez pas d'interdire les requêtes sur le serveur pour les IPs qui ne sont pas dans votre plage locale, ou bien de mettre en Firewall entre elle et internet, et de fermer le port 51.

3. Mode cache DNS simple
Dans ce mode là, on va tout simplement dire de chercher les adresses qui ne sont pas dans le cache chez le FAI.

Pour ce faire vous devez posséder les adresses des DNS de votre FAI (regarder bien sur vos papier, il a du vous les donner ;) )

Vous allez alors éditer le fichier /etc/bind/named.conf.options :
named.conf.options a écrit :options {
directory "/var/cache/bind";

forwarders {
111.111.111.111;
222.222.222.222;
};

auth-nxdomain no;
};
où 111.111.111.111 et 222.222.222.222 sont les adresses DNS de votre FAI.

ensuite, éditez le fichier /etc/resolv.conf :
resolv.conf a écrit :search liste_de_domaines_pour_les_noms_DNS_dont_le_domaine_n'est_pas_précisé
nameserver 127.0.0.1
nameserver 111.111.111.111
nameserver 222.222.222.222
normalement, maintenant, votre machine devrait prendre son DNS en locale.

Pour que d'autres machines de votre réseau utilisent ce DNS, indiquez l'adresse IP de la machine ayant le serveur DNS pour qu'elles lui demandent.

Et voilà normalement, ça marche ;)

4. Mode cache DNS avancé

Dans ce cas, vous allez vous affranchir des serveurs DNS de votre FAI. Je vous conseille de ne l'utiliser que si les serveurs DNS de votre FAI ont trop souvent tendance à tomber en panne ou sont extrêmement lent.

Pour le mettre en place, c'est facile : vous éditez le fichier named.conf.options et vous commentez les lignes écrites au dessus
named.conf.options a écrit :options {
directory "/var/cache/bind";

//forwarders {
// 111.111.111.111;
// 222.222.222.222;
//};

auth-nxdomain no;
};
et vous éditez le fichier resolv.conf (vous commentez les adresses du FAI - facultatif)
resolv.conf a écrit :search liste_de_domaines_pour_les_noms_DNS_dont_le_domaine_n'est_pas_précisé
nameserver 127.0.0.1
#nameserver 111.111.111.111
#nameserver 222.222.222.222
Normalement, maintenant, votre serveur DNS devrait directement faire les requêtes DNS auprès d'autres serveurs DNS.

4. Un serveur DNS primaire

Dans ce cas, vous avez votre nom DNS (si vous en avez pas, cela ne sert vraiment pas à grand chose... :whi:). Nous supposons que votre domaine s'appelle mondomaine.fr.

Nous allons modifier le fichier named.conf cette fois-ci :
/etc/bind/named.conf a écrit :// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local


include "/etc/bind/named.conf.options";

// prime the server with knowledge of the root servers
zone "." {
type hint;
file "/etc/bind/db.root";
};

// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912


zone "localhost" {
type master;
file "/etc/bind/db.local";
};

zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};

zone "0.in-addr.arpa" {
type master;
file "/etc/bind/db.0";
};

zone "255.in-addr.arpa" {
type master;
file "/etc/bind/db.255";
};

zone "mondomaine.com" {
type master;
file "/etc/bind/db.mondomaine";
};

zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.mondomaine.inv";
};


// zone "com" { type delegation-only; };
// zone "net" { type delegation-only; };

// From the release notes:
// Because many of our users are uncomfortable receiving undelegated answers
// from root or top level domains, other than a few for whom that behaviour
// has been trusted and expected for quite some length of time, we have now
// introduced the "root-delegations-only" feature which applies delegation-only
// logic to all top level domains, and to the root domain. An exception list
// should be specified, including "MUSEUM" and "DE", and any other top level
// domains from whom undelegated responses are expected and trusted.
// root-delegation-only exclude { "DE"; "MUSEUM"; };


include "/etc/bind/named.conf.local";
PS : (en gras ce qu'il faut rajouter)

ensuite, vous créez le fichier db.mondomaine :
/etc/bind/db.mondomaine a écrit :$TTL 604800
@ IN SOA janine.mondomaine.fr. root.domaine.fr. (
20070212 ; Serial -> N° de série à incrémenter à chaque modif
; de ce fichier. Ce n° est utilisé par les
; serveurs esclaves pour lui indiquer qu'il
; doit mettre à jour sa base. Par commodité
; ce n° est une date à l'envers.

604800 ;Refresh -> A l'expiration du délai Refresh exprimé en
; secondes, le serveur esclave va entrer en
; communication avec le maitre et si il ne
; le trouve pas, il fera une nouvelle
; tentative au bout du délai Retry et si au
; bout du délai Expire il considera que le
; serveur n'est plus disponible.

86400 ; Retry
2419200 ; Expire
604800 ) ; Minimum -> Durée de vie minimum du cache en secondes


;** Les 3 lignes suivantes permettent au serveur de se retrouver lui même

NS janine.mondomaine.fr. ;Nom du serveur
name A 192.168.1.1 ;Adresse IP du serveur de noms (en locale)
debian HINFO "Présentation..." "Nom de la mchine..." ;Info complémentaire

;** Les lignes suivantes définissent la table entre les noms et les IPs
janine A 192.168.1.1
bidochon A 192.168.1.24
gertrude A 192.168.1.25

;** Les lignes suivantes sont des alias entre des noms et des autres noms
www CNAME bidochon
ldap CNAME gertrude[/color]
Les alias permettent de définir l'adresse à renvoyer quand on demande un service (par exemple, [url=http:///]www.mondomaine.com[/url] indiquera qu'il faut envoyer la requête à bidochon...)

On va également faire le fichier inverse (même s'il n'est pas vitale pour le fonctionnement) :
/etc/bind/db.mondomaine.inv a écrit :$TTL 604800
@ IN SOA server.mondomaine.com. root.mondomaine.com. (
20070212
604800
86400
2419200
604800 )

NS server.mondomaine.com.

1 PTR server
24 PTR bidochon
25 PTR gertrude
N'oubliez pas, il faut que votre serveur soit accessible de toute les personnes qui voudront faire des requêtes sur votre domaine (donc le rendre accessible d'internet si nécessaire).


Après cela, n'oubliez pas que globalement, les serveurs DNS représentes des vulnérabilités souvent utilisés lors d'attaques réseaux. Donc, si les 2 premiers choix ne posent pas de problème de sécurité si vous avez un routeur / Firewall, le 3ème l'est beaucoup plus
Modifié en dernier par earendil le jeu. 28 févr., 2008 20:59, modifié 2 fois.
Image

le x264 vaincra
Avatar du membre
Underground78
Administrateur
Administrateur
Messages : 11272
Enregistré le : mar. 06 févr., 2007 21:54
Localisation : France
Contact :

Message par Underground78 »

Bien tout ça ! :)
Répondre