Configuration de named

Nous allons commencer par ouvrir une fenêtre de terminal et nous connecter en root :

MacBook:~ Remi$ sudo su - root
Password:********

Ensuite, la première étape est de créer le fichier de clé /Private/etc/rndc.conf qui va servir à authentifier les accés au démon named.

MacBook:~ root# rndc-confgen -a
wrote key file "/private/etc/rndc.key

Vérifier que ce fichier ne soit en rw que pour root.

Nous allons maintenant éditer le fichier /etc/named.conf afin de lui indiquer les forwarders, c'est à dire les adresses IP des serveurs DNS à utiliser lorsque notre serveur ne saura pas résoudre les réquêtes tout seul. Les forwarders doivent être mis dans la section options comme ceci :

MacBook:~ root# vi /etc/named.conf

options {
        directory "/var/named";
        forwarders {
               8.8.8.8;
               8.8.4.4;
        };
};

Note : ici nous utilisons les adresses IP des serveurs DNS de Google qui sont censés être parmi les plus rapides.

Il faut maintenant créer les fichiers qui vont servir au démarrage automatique du démon named. Ces fichiers se trouvent dans le répertoire /System/Library/StartupItems/BIND :

MacBook:~ root# mkdir -p /System/Library/StartupItems/BIND
MacBook:~ root# vi /System/Library/StartupItems/BIND/BIND

#!/bin/sh
. /etc/rc.common
if [ "${DNSSERVER}" = "-YES-" ]; then
    /usr/sbin/named
fi

On rend le fichier exécutable :

MacBook:~ root# chmod +x /System/Library/StartupItems/BIND/BIND

Dans le même répertoire, créer le fichier suivant :

MacBook:~ root# vi /System/Library/StartupItems/BIND/StartupParameters.plist

{
    Description = "DNS Server";
    Provides = ("DNS Server");
    OrderPreference = "None";
    Messages =
    {
        start = "Starting BIND…";
        stop = "Stopping BIND…";
    };
}

Pour que le serveur DNS se lance au boot de la machine, il faut modifier le fichier de configuration suivant en modifiant ou en ajoutant la ligne DNSSERVER :

MacBook:~ root# vi /etc/hostconfig

DNSSERVER=-YES-

Maintenant on peut lancer le serveur DNS soit en rebootant la machine, soit en le lancant manuellement pour une première utilisation avec la commande :

MacBook:~ root# /System/Library/StartupItems/BIND/BIND

BIND doit maintenant avoir démarré. Pour voir si c'est la cas, vérifier avec la commande :

MacBook:~ root# ps aux | grep named

root 23404 0.0 0.2 2440208 3532 ?? Ss Fri03PM 00:08.35 /usr/sbin/named

Une ligne qui ressemble à celle ci-dessus doit apparaitre.

On peut aussi lancer quelques requêtes DNS pour vérifier que celui-ci fonctionne bien :

MacBook:~ root# nslookup
> server 127.0.0.1
Default server: 127.0.0.1
Address: 127.0.0.1#53
>
www.antiseches.net
Server: 172.16.204.5
Address: 172.16.204.5#53>
Non-authoritative answer:
www.antiseches.net canonical name = blogs.vip.gandi.net.
blogs.vip.gandi.net canonical name = blogs-users.vip.gandi.net.
Name: blogs-users.vip.gandi.net
Address: 217.70.184.34

Utilisation de serveur

Maintenant que le serveur BIND fonctionne, il faut paramèter la partie cliente du mac pour qu'elle l'utilise. Pour ce faire, aller dans le menu Préférences Système / Réseau, puis sélectionner la carte réseau utilisée (wifi, ethernet,...). Cliquer sur le bouton Avancé et aller dans l'onglet DNS. Remplacer alors les DNS courants par 127.0.0.1 puis valider.

Pour vérifier que le système utilise bien l'adresse 127.0.0.1 comme DNS, taper la commande suivante :

MacBook:~ root# scutil --dns

On doit voir apparaitre les infos suivantes :

DNS configuration
resolver #1
domain : config
nameserver[0] : 127.0.0.1
order   : 200000
....

On voit que le serveur utilisé est l'adresse de localhost, 127.0.0.1.

Note importante : Si vous utilisez le terminal, vous devez savoir que certaines commandes comme nslookup ou dig n'utiliseront pas notre serveur DNS, mais les informations inscritent dans le fichier /etc/resolv.conf. Le fichier /etc/resolv.conf devra donc être modifié à la main pour y mettre notre fameux 127.0.0.1 comme serveur DNS.

Utile...

Si on a besoin de faire des tests de serveur DNS, il peut être utilise de vider le cache :

MacBook:~ root# rndc -p 54 flush && dscacheutil -flushcache

Ici, on a utilisé les serveurs DNS de Google. En voiçi d'autres :

OpenDNS : 208.67.222.222 & 208.67.220.220

Norton DNS : 198.153.192.1 & 198.153.194.1

OpenNIC : 92.243.8.139 (pour la France)

VivilProject DNSTest : http://80.247.230.136/dns.htm