4. Installer votre beau BIND tout neuf

Vous devez aussi savoir que, si vous avez déjà installé BIND, par exemple en utilisant un paquet RPM, vous devrez probablement le désinstaller avant d'installer votre nouvelle version. Sur un système Red Hat, cela implique probablement de désinstaller les paquets bind et bind-utils, et peut-être aussi bind-devel et caching-nameserver, si vous les avez.

Vous devriez sauvegarder une copie du script d'init (en général /etc/rc.d/init.d/named), s'il y a en un, avant la désinstallation ; ce sera utile plus tard.

Si vous réalisez une mise à jour depuis une ancienne version de BIND, tel que BIND 8, vous devriez lire le document de migration contenu dans le fichier doc/misc/migration du paquet source de BIND. Ce document ne traite pas du tout de la migration ; il part simplement de l'hypothèse que vous remplacez une installation existante et fonctionnelle de BIND 9.

4.1. Installer les binaires

C'est la partie facile :-) Lancez juste make install et laissez-le tout faire pour vous. Et voilà, c'est aussi simple que cela.

4.2. Mise en place du script d'init

Si vous avez un script d'init provenant de votre distribution, le mieux serait probablement de simplement le modifier pour exécuter le nouveau binaire, avec les paramètres appropriés. Les paramètres sont… (roulement de tambour s'il vous plaît…)

  • -u named, pour exécuter BIND avec l'utilisateur named , plutôt que root.

  • -t /chroot/named, pour que BIND s'exécute dans l'environnement restreint que nous avons mis en place.

  • -c /etc/named.conf, pour que BIND trouve sa configuration à l'intérieur de la prison.

Ce qui suit est le script d'init que j'utilise avec mon système Red Hat 6.0. Comme vous pouvez voir, il est presque identique à celui livré par Red Hat. Je n'ai pas encore essayé la commande rndc, mais je ne vois pas pour quelle raison elle ne fonctionnerait pas.

#!/bin/sh
#
# named   Le rôle de ce script est de démarrer et d'arrêter
#         named (serveur DNS BIND).
#
# chkconfig: 345 55 45
# description: named (BIND) est le serveur de nom (DNS) \
# utilisé pour résoudre les noms de domaines en adresses IP.
# probe: true

# Lecture de la bibliothèque de fonctions.
. /etc/rc.d/init.d/functions

# Lecture des paramètres réseau.
. /etc/sysconfig/network

# Vérifie que le réseau fonctionne.
[ ${NETWORKING} = "no" ] && exit 0

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

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

# En fonction de ce qui est appelé.
case "$1" in
  start)
	# Démarrer le démon.
        echo -n "Démarrage de named : "
        daemon /usr/local/sbin/named -u named -t /chroot/named \
                                     -c /etc/named.conf
        echo
        touch /var/lock/subsys/named
        ;;
  stop)
        # Arrêter le démon.
        echo -n "Arrêt de named : "
        killproc named
        rm -f /var/lock/subsys/named
        echo
        ;;
  status)
        status named
        exit $?
        ;;
  restart)
        $0 stop
        $0 start
        exit $?
        ;;
  reload)
        /usr/local/sbin/rndc reload
        exit $?
        ;;
  probe)
        # named sait comment redémarrer intelligemment ;
        # nous ne voulons pas que linuxconf nous propose
        # de le redémarrer à chaque fois
        /usr/local/sbin/rndc reload >/dev/null 2>&1 || echo start
        exit 0
        ;;

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

exit 0

Comme pour syslogd, à partir de la version 7.2 de Red Hat, ce processus est devenu encore plus simple. Il existe maintenant un fichier nommé /etc/sysconfig/named dans lequel il est possible d'ajouter des paramètres pour syslogd. Cependant, dans la distribution Red Hat 7.2, la version par défaut de /etc/rc.d/init.d/named, vérifie l'existence de /etc/named.conf avant de lancer BIND. Vous devrez corriger ce chemin.

Sur les systèmes OpenLinux de Caldera, vous avez juste besoin de modifier les variables définies au début et le script s'occupera apparemment du reste pour vous :

NAME=named
DAEMON=/chroot/named/bin/$NAME
OPTIONS="-t /chroot/named -u named -g named"

Et sous FreeBSD 4.3, vous pouvez éditer le fichier rc.conf et y ajouter les lignes suivantes :

named_enable="YES"
named_program="chroot/named/bin/named"
named_flags="-u named -t /chroot/named -c /etc/namedb/named.conf"

4.3. Changement de configuration

Vous devrez aussi ajouter ou modifier quelques options dans votre named.conf pour que vos divers répertoires soient correctement définis. En particulier, vous devrez ajouter (ou changer, si vous les avez déjà) les directives suivantes dans la section options :

directory "/etc/namedb";
pid-file "/var/run/named.pid";
statistics-file "/var/run/named.stats";

Ce fichier étant lu par le démon named, tous les chemins sont relatifs à l'environnement restreint. Au jour de la rédaction de ce document, BIND 9 ne permettait pas d'utiliser nombre des fichiers de statistiques et de vidage qu'il était possible d'utiliser avec la version précédente. Présumons que les prochaines le pourront ; si vous exécutez de telles configurations, vous devrez ajouter des entrées additionnelles pour forcer BIND à également écrire ces fichiers dans le répertoire /var/run.