DHCP & DDNS

Ce tutoriel fait suite à une erreur rencontrée sur un service ISC-dhcpd OpenBSD et un service bind9 à mettre en corrélation, l’erreur d’origine était:

dhcpd: Unable to add forward map "not found"

Dans un réseau avec adresses IP dynamiques, il est intéressant d’utiliser des noms DNS afin de retrouver les machines. Ces noms doivent évoluer avec la configuration du réseau. Il existe une mécanique interne à named (bind) et isc-dhcpd permettant de relier le DHCP et le DNS afin que les mises à jour soient faites entre les 2 services/hôtes.

Cette mécanique utilise le principe du RNDC, qui est une clé partagée, et permet ainsi d’assurer l’authentification des services entre eux.

Dans ce tutoriel nous partirons du principe que chaque machine est à la fois DHCP et DNS.

Génération de la clé partagée

Sur chaque hôte ayant besoin de la clé partagée, tapez:

rndc-confgen -a
cat /etc/rndc.key

Voici le contenu de /etc/rndc.key

key "rndc-key" {
        algorithm hmac-md5;
        secret "vf1uTu6d33PnjMaVTv9++A==";
};

Vous pouvez copier ce fichier (en faisant attention à préserver les droits root et le mod 600 !) sur les différents hôtes si vous souhaitez utiliser une seule clé, et renommer rndc-key en autre chose, my-key par exemple.

Configuration d’ISC-dhcpd

Deux éléments sont nécessaires à ISC-dhcpd afin de pouvoir se relier au(x) DNS:

  • La clé partagée
  • Les zones DNS et serveurs DNS associés

La première étape est d’ajouter la ligne suivante à votre fichier /etc/dhcpd.conf permettant d’ajouter la clé au DHCP

include "/etc/rndc.key";

La seconde étape consiste à déclarer les zones DNS au DHCP (ici la zone et un reverse associé):

zone domain.tld. {
        secondary 10.1.1.3;
        primary 10.1.1.2;
        key my-key;
}

zone 50.10.in-addr.arpa. {
        secondary 10.1.1.3;
        primary 10.1.1.2;
        key my-key;
}

On déclare le serveur primaire DNS 10.1.1.2 et le serveur secondaire 10.1.1.3, ceci permettra de garder une synchronisation des enregistrements entre les différents DNS.

Configuration de named (bind9)

Ouvrez votre named.conf et ajoutez les lignes suivantes:

key "my-key" {
        algorithm hmac-md5;
        secret "vf1uTu6d33PnjMaVTv9++A==";
};

controls {
       inet 10.117.1.2 port 953
               allow { 10.117.1.2; 10.117.1.3; 127.0.0.1; } keys { "my-key"; };
};

Ces lignes vont dire à named d’écouter sur une interface (port TCP 953) et de n’autoriser que certains hôtes (lui même en localhost et adresse externe, ainsi que le second DHCP) avec la clé my-key à venir mettre à jour le DNS.

Maintenant éditez les zones afin de permettre les mises à jour (named.conf):

zone "domain.tld." IN {
        type master;
        file "master/db.domain.tld";
        allow-update {
                key my-key;
                127.0.0.1;
                10.1.1.2;
                10.1.1.3;
                10.50.0.0/16;
        };
        notify yes;
};

zone "50.10.in-addr.arpa" {
        type master;
        file "master/db.10.50";
        allow-update {
                key my-key;
                127.0.0.1;
                10.1.1.2;
                10.1.1.3;
                10.50.0.0/16;
        };
        notify yes;
};

On autorise la clé et les deux serveurs à mettre à jour la zone, ainsi que les adresses IP des clients, car Windows n’utilise pas les mécaniques conventionnelles et vient lui même mettre à jour le DNS (et c’est important que ce soit le cas, si vous voulez mettre en place un annuaire ActiveDirectory, autorisez le à mettre à jour le DNS avant d’installer le service !!)

Pour terminer, veillez au éléments suivants:

  • Le répertoire contenant les fichiers de zone doit appartenir à l’utilisateur et groupe named et avoir les droits 755
  • Les fichiers de zone doivent appartenir à l’utilisateur et groupe named doivent être en droits 644

Désormais vous avez un DHCP et un DNS dynamiques multi serveurs !