Installer un serveur DNS

Samba Mountages en tout genre
Configuration réseau

Présentation

Installation et configuration

Lancement automatique

Tests de fonctionnement

Présentation

Un DNS (Domain Name System) sert à faire la correspondance entre l'adresse IP et le nom de la machine, on parle de résolution de noms (to resolve en anglais). Plus concrètement sans DNS vous seriez obligé de taper directement les adresses IP des machines sur lequel vous voulez accéder (sur le web, ftp, telnet et autres). Si vous êtes connecté à un fournisseur d'accès internet (FAI) de façon intermittente par PPP, ADSL ou autres, c'est généralement les serveurs DNS de votre FAI qui assurent la résolution des noms, ils vont généralement par pair, on trouve un serveur DNS primaire et un secondaire qui est là en cas de défaillance du premier.
Maintenant pourquoi configurer un serveur DNS sur un poste isolé, voire même sur un petit réseau de machines, parce qu'il peut servir à résoudre un certain nombre de problèmes fort génants qu'on rencontre essentiellement en mode off-line (non connecté au FAI) dont:
- lancement interminable de netscape voire blocage au boot (d'une durée de 3min),
- envoi des mails dans le répertoire d'attente de sendmail qui dure plus d'une minute.

On suppose que votre machine linux, se nomme mamachine et a pour adresse IP 192.168.13.10 (sur votre domaine privé et non attribuée par le FAI) et votre domaine privé mondomaine.fr.  Les arborescences présentées (notamment au niveau du démarrage automatique) sont celles d'une Mandrake 6.1 (donc a priori aussi d'une RedHat 6.1).
Je ne rentrerai pas dans les détails des fichiers de configuration pour cela vous avez le DNS-Howto  (section linux puis HOW-TO)qui constitue une bonne introduction. Cette page n'a pas pour objet de se substituer à ce dernier document, elle réalise une synthèse pour installer un serveur de DNS rapidement, pour des explications détaillées voir le HOWTO. Elle est surtout destinée à un poste isolé voire à un petit réseau connecté de manière non permanente à internet.

Installation et configuration

La mise en place d'un serveur DNS nécessite l'installation de deux outils bind et named. Sur une mandrake 6.1, on installe d'abord bind-8.2.1-7mdk.i586.rpm et caching-nameserver-6.0-3mdk.noarch.rpm qu'on peut trouver sur le CD-ROM d'install. On les intalle en tapant simplement et dans l'ordre:

rpm -ivh bind-8.2.1-7mdk.i586.rpm
rpm -ivh caching-nameserver-6.0-3mdk.noarch.rpm

L'installation a créé un fichier /etc/named.conf dont voici le contenu:

// generated by named-bootconf.pl

         directory "/var/named";
        /*
         * If there is a firewall between you and nameservers you want
         * to talk to, you might need to uncomment the query-source
         * directive below.  Previous versions of BIND always asked
         * questions using port 53, but BIND 8.1 uses an unprivileged
         * port by default.
         */
        // query-source address * port 53;
};

//
// a caching only nameserver config
//
zone "." {
        type hint;
        file "named.ca";
};

zone "0.0.127.in-addr.arpa" {
        type master;
        file "named.local";
};

On va le modifier pour lire:

options {
        directory "/var/named";
        /*
         * If there is a firewall between you and nameservers you want
         * to talk to, you might need to uncomment the query-source
         * directive below.  Previous versions of BIND always asked
         * questions using port 53, but BIND 8.1 uses an unprivileged
         * port by default.
         */
        // query-source address * port 53;
        // ici vous mettez les adresses IP du serveur primaire et secondaire de votre FAI
        // vous pouvez éventuellement supprimer les 4 prochaines lignes
        // pour savoir à quoi ça sert voir le DNS-HOWTO
        forward first;
        forwarders {
                194.149.160.9
                194.149.160.1
        };
};

//
// a caching only nameserver config
//
zone "." {
        type hint;
        file "named.ca";
};

zone "0.0.127.in-addr.arpa" {
        type master;
        file "named.local";
};

zone "mondomaine.fr" {
        notify no;
        type master;
        file "mondomaine.fr";
};

L'installation a créé un répertoie /var/named contenant named.local

@       IN      SOA     localhost. root.localhost.  (
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
              IN      NS      localhost.

1       IN      PTR     localhost.

On le modifiera pour lire:

@       IN      SOA     mamachine.mondomaine.fr. root.mamachine.mondomaine.fr.  (
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
              IN      NS      mamachine.mondomaine.fr.

1       IN      PTR     localhost.

On créera sous /var/named un fichier mondomaine.fr contenant:

@       IN      SOA     mamachine.mondomaine.fr. root.mondomaine.fr.  (
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
                                TXT             "mondomaine.fr mon ch'tit domaine"
                NS      mamachine
                                NS              mamachine.mondomaine.fr.
                                MX              10 mamachine
                                MX              20 mamachine.mondomaine.fr.
 

localhost               A               127.0.0.1
mamachine            A               192.168.13.10

Pour info MX correspond au serveur SMTP donc à votre machine si vous y faites tourner sendmail.

Maintenant dans le fichier /etc/nsswitch.conf on doit avoir à la ligne hosts:

hosts: files dns

Le DNS-HOWTO demande la création d'un fichier /etc/host.conf contenant

order hosts,bind

Je ne sais pas si c'est absolument nécessaire, ça me paraît redondant par rapport à nsswitch.conf, mais au cas où.

Pour terminer le /etc/resolv.conf:

search mondomaine.fr
nameserver 127.0.0.1
nameserver 194.149.160.9
nameserver 194.149.160.1

Les deux dernières adresses IP sont évidemment celles de votre FAI favori.

Lancement automatique de named

Par défaut l'install de bind et named génère automatiquement les fichiers de démarrage, à tout hasard en voici le détail. Vous trouverez sous /etc/rc.d/init.d un fichier named qui a le contenu suivant:

#!/bin/sh
#
# named           This shell script takes care of starting and stopping
#                 named (BIND DNS server).
#
# chkconfig: 345 55 45
# description: named (BIND) is a Domain Name Server (DNS) \
# that is used to resolve host names to IP addresses.
# probe: true

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

[ -f /usr/sbin/named ] || exit 0

[ -f /etc/named.conf ] || exit 0

# See how we were called.
case "$1" in
  start)
        # Start daemons.
        echo -n "Starting named: "
        daemon named
        echo
        touch /var/lock/subsys/named
        ;;
  stop)
        # Stop daemons.
        echo -n "Shutting down named: "
        killproc named
        rm -f /var/lock/subsys/named
        echo
        ;;
  status)
        /usr/sbin/ndc status
        exit $?
        ;;
  restart)
        /usr/sbin/ndc restart
        exit $?
        ;;
 reload)
        /usr/sbin/ndc reload
        exit $?
        ;;
  probe)
        # named knows how to reload intelligently; we don't want linuxconf
        # to offer to restart every time
        /usr/sbin/ndc reload >/dev/null 2>&1 || echo start
        exit 0
        ;;

  *)
        echo "Usage: named {start|stop|status|restart}"
        exit 1
esac

exit 0

Vous devez ensuite créer les liens suivants:

ln -s /etc/rc.d/init.d/named /etc/rc.d/rc0.d/K45named
ln -s /etc/rc.d/init.d/named /etc/rc.d/rc1.d/K45named
ln -s /etc/rc.d/init.d/named /etc/rc.d/rc2.d/K45named
ln -s /etc/rc.d/init.d/named /etc/rc.d/rc3.d/S55named
ln -s /etc/rc.d/init.d/named /etc/rc.d/rc4.d/S55named
ln -s /etc/rc.d/init.d/named /etc/rc.d/rc5.d/S55named
ln -s /etc/rc.d/init.d/named /etc/rc.d/rc6.d/K45named

Pour relancer named (après une modification de fichier), vous devez taper:

/etc/rc.d/init.d/named restart

Les autres arguments étant start, stop, status et restart.

Tests de fonctionnement

Tapez nslookup dans un shell, les commandes à taper apparaîssent en italique:

Default Server:  localhost
Address:  127.0.0.1

> set q=any
> mondomaine.fr
Server:  localhost
Address:  127.0.0.1

mondomaine.fr       preference = 10, mail exchanger = mamachine.mondomaine.fr
mondomaine.fr       preference = 20, mail exchanger = mamachine.mondomaine.fr
mondomaine.fr       nameserver = mamachine.mondomaine.fr
mondomaine.fr       text = "mondomaine.fr mon ch'tit domaine"
mondomaine.fr
        origin = mamachine.mondomaine.fr
        mail addr = root.mondomaine.fr
        serial = 1997022700
        refresh = 28800 (8H)
        retry   = 14400 (4H)
        expire  = 3600000 (5w6d16h)
        minimum ttl = 86400 (1D)
mondomaine.fr       nameserver = mamachine.mondomaine.fr
mamachine.mondomaine.fr internet address = 192.168.13.10
> mamachine
Server:  localhost
Address:  127.0.0.1

mamachine.mondomaine.fr internet address = 192.168.13.10
mondomaine.fr       nameserver = mamachine.mondomaine.fr
mamachine.mondomaine.fr internet address = 192.168.13.10
>exit

Si vous n'avez pas ce type de sortie, c'est que vous avez un problème au niveau de votre configuration.

Retour haut de la page