Serveurs DNS primaire et secondaire avec named

Date: 7/05/2008 | Catégories: Open-source,Reseau,Systeme | Tags:

Si vous êtes votre propre héberger, le service DNS est une des premières brique à mettre en place sur votre réseau. Nous allons dans ce billet décrire l’installation d’une architecture DNS avec deux serveurs (un primaire et un secondaire).

Pour illustrer ce billet nous allons prendre l’exemple du réseau suivant:

  • Adressage privée en 192.168.1.0/24
  • Adressage public en 80.80.80.0/24
  • Adresse du serveur primaire: 80.80.80.1 avec comme nom ns1
  • Adresse du serveur secondaire: 192.168.1.1 avec comme nom ns2
  • Nom de votre domaine: monboreseau.com

Installation des serveurs DNS

Nous allons nous baser sur l’implémentation ISC Bind pour nos serveurs DNS. Le processus à lancer s’appelle named, il doit logiquement être présent sur votre système GNU/Linux ou BSD.

Pour vérifier que named est bien installé et que vous avez une version à jour:

# named -v

BIND 9.4.

Le site officiel pour vérifier la version est ici.

Configuration du serveur primaire

C’est le serveur maître qui doit être accessible depuis Internet sur le port TCP/53.

La configuration est centralisé dans le répertoire /etc/namedb.

Nous commençons par éditer le fichier named.conf:

# vi /etc/namedb/named.conf

options {

directory “/etc/namedb”;

query-source address * port 53;

};

logging {

channel lames {

file “/var/log/named.run”;

severity debug;

};

category default { lames; };

};

zone “.” {

type hint;

file “named.root”;

};

zone “0.0.127.IN-ADDR.ARPA” {

type master;

file “localhost.rev”;

};

// Zone MONBORESEAU.COM

zone “monboreseau.com” {

type master ;

file “master/monboreseau.com” ;

} ;

// Zone 192.168.1.0

zone “0.1.168.192.in-addr.arpa” {

type master ;

file “master/0.1.168.192.in-addr.arpa” ;

} ;

// Zone 80.80.80.0

zone “0.80.80.80.in-addr.arpa” {

type master ;

file “master/0.80.80.80.in-addr.arpa” ;

} ;

Il faut ensuite remplir les fichiers des zones avec vos machines. Nous commençons par la zone primaire (qui donne l’adresse IP en fonction du nom):

# vi /etc/namedb/master/monboreseau.com

$ORIGIN .

$TTL 86400 ; 1 day

alcasat.net IN SOA ns1.monboresau.com. support.monboreseau.com. (

2008042902 ; serial

21600 ; refresh (6 hours)

3600 ; retry (1 hour)

604800 ; expire (1 week)

86400 ; minimum (1 day)

)

NS ns1.monboreseau.com.

NS ns2.monboreseau.com.

MX 10 mail.monboreseau.com.

$ORIGIN monbeaureseau.com.

ns1 A 80.80.80.1

machine1 A 80.80.80.2

ns2 A 192.168.1.1

machine2 A 192.168.1.2

Puis par les zones reverses (qui donne le nom par rapport à l’adresse IP):

# vi /etc/namedb/master/0.80.80.80.in-addr.arpa

$ttl 86400

@ IN SOA ns1.monboreseau.com. support.monboreseau.com. (

2008040101 ;

21600 ;

3600 ;

604800 ;

86400 ) ;

@ IN NS ns1.monboreseau.com.

@ IN NS ns2.monboreseau.com.

1 IN PTR ns1.monboreseau.com.

2 IN PTR machine1.monboreseau.com.

# vi /etc/namedb/master/0.1.168.192.in-addr.arpa

$ttl 86400

@ IN SOA ns1.monboreseau.com. support.monboreseau.com. (

2008040101 ;

21600 ;

3600 ;

604800 ;

86400 ) ;

@ IN NS ns1.monboreseau.com.

@ IN NS ns2.monboreseau.com.

1 IN PTR ns2.monboreseau.com.

2 IN PTR machine2.monboreseau.com.

Vous pouvez maintenant lancer votre serveur DNS primaire:

Sous GNU/Linux:

# /etc/init.d/named start

Sous BSD:

# /etc/rc.d/named start

Pour valider que le serveur marche bien, il faut se mettre sur une machine de votre réseau et utiliser la commande dig:

# dig @80.80.80.1 machine1.monboreseau.com

;; ANSWER SECTION:

machine1.monboreseau.com. 86400 IN A 80.80.80.1

Configuration du serveur secondaire

Vous voilà donc avec un serveur primaire en état de marche, pour des raisons de fiabilité et/ou de performanace, il peut être utile de disposer d’un second serveur dit secondaire sur votre réseau.

La encore nous allons utiliser le daemon named avec une configuration spécifique:

On commence par le fichier de configuration:

# vi /etc/namedb/named.conf

options {

directory “/etc/namedb”;

query-source address * port 53;

notify yes;

version “Bind”;

};

server 80.80.80.1 {

transfer-format many-answers ;

};

logging {

channel lames {

file “/var/log/named.run”;

severity debug;

};

category default { lames; };

};

zone “.” {

type hint;

file “named.root”;

};

zone “0.0.127.in-addr.arpa” IN {

type master;

file “localhost.rev”;

};

// Zone MONBORESEAU.COM

zone “monboreseau.com” {

type slave ;

file “slave/monboreseau.com” ;

masters { 80.80.80.1 ; } ;

} ;

// Zone 192.168.1.0

zone “0.1.168.192.in-addr.arpa” {

type slave ;

file “slave/0.1.168.192.in-addr.arpa” ;

masters { 80.80.80.1 ; } ;

} ;

// Zone 80.80.80.0

zone “0.80.80.80.in-addr.arpa” {

type slave ;

file “slave/0.80.80.80.in-addr.arpa” ;

masters { 80.80.80.1 ; } ;

} ;

Le téléchargement des fichiers de zones entre le serveur primaire et le serveur secondaire se fera automatiquement au démarrage du daemon named.

Vous pouvez maintenant lancer votre serveur DNS secondaire:

Sous GNU/Linux:

# /etc/init.d/named start

Sous BSD:

# /etc/rc.d/named start

Il faut d'abord vérifier que les fichiers de zones sont bien présent dans le répertoire /etc/namedb/slave/, puis pour valider que le serveur marche bien, il faut se mettre sur une machine de votre réseau et utiliser la commande dig:

# dig @192.168.29.1 machine1.monboreseau.com

;; ANSWER SECTION:

machine1.monboreseau.com. 86400 IN A 80.80.80.1

Vous voilà maintenant avec une belle architecture DNS sur votre réseau. Il ne faut pas oublier de mettre à jour régulièrement le daemon named et aussi mettre en place une sauvegarde de vos zone primaire (au cas ou...).

  • je connais pas le schéma du réseau sur lequel tu te bases, mais si le serveur secondaire n’a pas d’adresse publique, il ne servira qu’en local, et ne pourra pas suppléer à une panne du dns primaire, non?

  • Fazer

    Et comme nous a appris un sage : quand tu modifies un fichier de configuration de zone, n’oublie pas de modifier le serial !