Adresse IP et nom de machine

Afin que la machine recevant les mails soit accessible de l'extérieur, il faut associer son adresse IP à un nom de machine (c'est le principe même du dns). Il nous faut donc déterminer quelle est l'adresse IP de notre machine et si possible faire en sorte qu'elle soit statique.

Si vous êtes en dégroupé ou avec une freebox, votre adresse IP est fixe. Sinon, ce n'est pas certain. Afin de garder une IP fixe, voilà la marche à suivre pour les non-dégroupés :

Allez sur la console d'administration de free, identifiez-vous et cliquez sur obtenir une ip fixe...

Pour connaître votre ip fixe, sur la même console d'administration, il suffit de cliquer sur Afficher mon Adresse IP

Cette adresse est importante, car elle sera le point d'accès à votre domaine. Afin de la trouver plus facilement, il faudra lui associer un nom de machine. Dans les exemples suivants, nous allons supposer que vous avez réservé le nom de domaine "mondomaine.net", que votre IP fixe est 123.123.123.123 et que vous voulez y associer le nom de machine : maison.mondomaine.net.

Configuration de bind

Bind est un serveur dns, ce qui veut dire qu'il est capable de résoudre un nom de domaine ou de machine en adresse(s) IP. Pour comprendre les bases de fonctionnement des dns, je vous conseille d'aller jeter un oeil ici.

Lors de l'installation, bind installe plusieurs fichiers différents :

  • /etc/named.conf : le fichier de configuration commun à tout le service
  • répertoire /var/named : répertoire qui va contenir tous les fichiers spécifiques à un domaine

named.conf

Voici la syntaxe par défaut du fichier named.conf

// Default named.conf generated by install of bind-9.2.4-16.EL4
options {
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
};
include "/etc/rndc.key";

On voit bien que le répertoire par défaut des fichiers est /var/named.

Nous allons le modifier quelque peu et je vais détailler le pourquoi du comment par la suite.

acl "trusted" {
        192.168.168.0/24;
      localhost; 
};
options {
        allow-recursion {
                "trusted";
                };
        forwarders {    212.27.53.252 port 53;
                212.27.53.253 port 53;
        };
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";

};

zone "mondomaine.com" {
        type master;
        file "db.mondomaine.com";
};      

include "/etc/rndc.key";

Bon. Là ça fait beaucoup. Analysons tout cela.

acl "trusted" {
        192.168.168.0/24;
      localhost; 
};

Là, je définis un groupe appelé trusted. Ce groupe contient ma propre machine (localhost) ainsi que toutes les machines de mon réseau local (192.168.168.0/24, à adapter en fonction de votre réseau). Pour le moment, je n'ai fait que définir un groupe, sans lui donner de droits spéciaux.

options {
        allow-recursion {
                "trusted";
                };
        forwarders {    212.27.53.252 port 53;
                212.27.53.253 port 53;
        };
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";

};

La directive allow_recursion permet aux membres du groupe (acl) trusted de faire des recherches récursives. Cela signifie que ces machines pourront interroger mon dns pour un domaine que la machine ne gère pas. Par exemple, pour google.fr et mon serveur dns lui répondra. Les machines ne faisant pas partie de ce groupe auront une fin de non recevoir. Ceci est très important. Votre serveur dns devra à terme être accessible de l'extérieur pour gérer votre nom de domaine. Si bous autorisez la récursivité pour tous, n'importe qui peut utiliser vote machine en tant que serveur dns et vous risquez de mettre votre machine à genoux en quelques heures...

C'est bien gentil tout ça, mais comment ma machine pourrait-elle répondre à une demande concernant un domaine qu'elle ne gère pas ?

Justement grâce à la partie forwarders des options : on y met le serveur de dns de notre fai (qui lui, justement, est ouvert et permet la récursivité, au moins pour ses clients). Ainsi, si notre machine ne sait pas répondre, dans notre cas, elle va interroger le serveur 212.27.53.252 (puis l'autre si besoin) afin de faire suivre la réponse.

Le reste des options est tiré du fichier original.

Répertoire /var/named

Nous avons vu que nous avons rajouté dans le named.conf une section de zone :

zone "mondomaine.com" {
        type master;
        file "db.mondomaine.com";
};      

Cela signifie qu'il faut créer dans le répertoire /var/named un fichier appelé db.mondomaine.com qui va gérer la zone mondomaine.com

Voici le contenu du fichier à mettre, les explications arrivent par la suite

$TTL 86000
@       IN      SOA     maison.mondomaine.com. root.mondomaine.com. (
                        2006113004
                        3600
                        3600
                        1209600
                        10800 )
                IN      NS      maison.mondomaine.com.
                IN      NS      NS7.GANDI.NET.
                IN      NS      CUSTOM2.GANDI.NET.
;
mondomaine.com.    IN      MX      10 maison.mondomaine.com.
;
maison          IN      A       123.123.123.123

Pour ce qui est des premières lignes :

$TTL 86000
@       IN      SOA     maison.mondomaine.com. root.mondomaine.com. (
                        2006113004
                        3600
                        3600
                        1209600
                        10800 )

Ce sont des valeurs par défaut, qui définissent entre autres pas mal de choses nécessaires. En voici un détail rapide :

  • $TTL 86000 : c'est le Time To Live, en secondes. En gros, quand un serveur interrogera votre machine, il gardera en cache le résultat pendant $TTL secondes. Plus ce délai est long, plus il allège la charge réseau, mais plus il rallonge la prise en compte d'un changement dans la zone.
  • @ IN SOA maison.mondomaine.com. root.mondomaine.com. : commence un enregistrement SOA (Start Oh Authority).
  • 2006113004 : numéro de série. Ce numéro est mis en cache lors du démarrage de bind. S'il n'a pas changé, les zones ne sont par rechargées. Il est donc important de le faire évoluer vers une valeur supérieure lors d'un changement de configuration de la zone (ajout, modification ou suppression d'un hôte). Pour ma part, j'utilise la syntaxe YYYYMMDDSS, avec SS étant un sérial commençant à 01, pour le cas où je fais plusieurs modifications dans la même journée.
  • 3600 (le premier) : 'time to refresh' (en secondes) : dit à tout serveur secondaire le temps qu'il faut attendre avant de demander au maître si des changements on été effectués
  • 3600 (le second) : 'time to retry' (en secondes) : dit au serveur esclave le temps qu'il faut attendre avant de réinterroger le serveur maître s'il n'a pas répondu la fois précédente
  • 1209600 : time to expire : si le serveur maître ne répond pas à ses secondaires pendant ce laps de temps, les secondaires décident qu'il ne font plus autorité sur cette zone
  • 10800 : minimum Time To Live : on demande aux serveurs de mettre en cache pendant au moins cette valeur (en secondes)

Les valeurs entrées ici sont des valeurs par défaut, il est en général inutile de les modifier.

Allez, la suite :

                IN      NS      maison.mondomaine.com.
                IN      NS      NS7.GANDI.NET.
                IN      NS      CUSTOM2.GANDI.NET.

Là, nous définissons les machines listées comme étant des autorités sur le domaine. L'ordre n'a pas d'importance. Cela signifie que chacune de ces trois machines est capable de répondre pour le domaine mondomaine.com. Pour les machines gandi, je ne les ai pas mises au hasard, mais j'ai trouvé leurs noms sur mon interface de gestion gandi.

mondomaine.com.    IN      MX      10 maison.mondomaine.com.

Là, je définis un MX (serveur de messagerie). En clair je lui dis que le mail à destination de mondomaine.com sera géré par la machine maison.mondomaine.com. Dans le cas où on a plusieurs serveurs (des secondaires de secours), la préférence va à celle qui a le chiffre le plus bas. Si elle est inaccessible, on va à celle qui la chiffre le plus bas après celle là, etc....

maison          IN      A       81.56.253.123

Là je dis simplement que la machine maison.mondomaine.com a l'adresse 123.123.123.123 On peut mettre autant d'hôtes que l'on veut (par exemple, on peut faire un www.mondomaine.com, etc...) Si plusieurs machines partagent la même ip, on peut faire un CNAME :

www          IN      CNAME       maison

Cela signifie donc que la machine www.mondomaine.com aura la même ip que maison.mondomaine.com

Une fois tous ces renseignements entrés, on devrait pouvoir redémarrer le serveur named :

service named restart

et passer à la suite....