Table des matières

Serveur DNS

Le DNS permet la traduction de nom en adresse IP (et inversement). Par exemple bindon.fr en 192.168.81.54. C'est un service essentiel au fonctionnement de MiNET.

Si vous voulez un peu plus de théorie c'est ici.

À MiNET

Minet possède deux serveurs DNS, un master (ns1.minet.net) et un en esclave sur le premier (ns2.minet.net).

les ip du DNS master sont:

    157.159.40.55
    172.16.0.55
    192.168.14.10
    192.168.16.4
    192.168.102.55
    192.168.103.55 

les ip du DNS esclave sont:

    157.159.40.54
    172.16.0.54
    192.168.14.6
    192.168.16.5
    192.168.102.54
    192.168.103.54 

Le serveur DNS utilisé à minet est ​BIND9.

Nous hébergeons chez nous la zone minet.net. Elle sert à la fois à la vitrine pour le monde entier et les adhérents, ainsi que pour nous, à l'administration des machines. Cette dualité est gérée par des vue sur le DNS : la réponse est différente suivant qu'on interroge le serveur à partir du monde entier ou à partir d'un VLAN d'administration.

Ainsi, par exemple, pour une machine du VLAN d'admin, le vpn1 est 192.168.102.19 alors que pour le reste du monde c'est 157.159.40.19. C'est un peu comme si il y avait deux DNS en un ! Cette pratique conduit à des problèmes de compréhension de l'infrastructure par les membres qui pensent magique l'utilisation du nom de domain minet.net. Par ailleurs, cela empêche l'utilisation de certain service avec la résolution DNS derrière le VPN sans specifier de port. Cela a donc changé.

Comment rajouter une entrée au DNS

Git c'est le bien

Nous utilisons git pour garder un historique de notre configuration DNS. Ainsi, si vous travaillez directement sur ns1 pensez à faire ceci une fois vos modifications faites :

# On ajoute les modifications qu'on a faite au git...
git commit -am "Un message expliquant ce que vous avez fait"
# On les envoie sur gitlab
git push origin master

Et honnêtement, c'est mille fois mieux si vous le faites sur votre PC !!! Une fois que vous avez récupéré le projet, il ne vous reste plus qu'à faire vos modifications, puis à les envoyer sur gitlab. Connectez vous ensuite sur ns1 et récupérez les modification que vous avez faites :

git pull origin master

Si git n'est pas votre fort …

Considérations globales

Dans tous les cas vous ne devez modifier que les fichiers de configurations présents sur ns1, le serveur ns2 est esclave de ns1 et téléchargera automatiquement les modifications.

Syntaxe pour le numéro de série :

Le numéro de série comprend la date de la dernière modification qui a été effectué suivi du nombre de modification qui ont été effectuées ce jour là <datedevotremodification><nombredemodificationseffectuées>

Le numéro de série est de la forme

YYYMMDDxx
   YYYY: année
   MM: mois (toujours sur 2 chiffres!)
   DD: jour
   xx: numéro de révision 01, 02, 03...

Si vous mettez à jours, pensez à utiliser cette syntaxe.

S'occuper de la résolution de nom

Les ressources records A permettent de traduire ns1.minet.net en 157.159.40.55. La zone minet possède plusieurs vues, i.e. les réponses du DNS sont fonctions de l'endroit où vous vous trouvez.

Si vous voulez que le DNS réponde lorsque vous êtes dans le vlan 102 c'est ce fichier qu'il faut éditer

minet.net.db.102 : Données pour le vlan 102

De même pour les ips d'administration du vlan de développement :

minet.net.db.103 : Données pour le vlan 103

De même pour les ips d'administration du wifi :

minet.net.db.14 : Données pour le vlan 14

Si vous voulez que le DNS réponde lorsque vous êtes soit à l'INT soit à l'extérieur c'est ces fichiers qu'il faut éditer :

La logique veut que si vous éditer ALL-INT-COMMON vous ne devez éditer ALL et INT que pour modifier le numéro de série, ALL et INT incluent ALL-INT-COMMON.

Où placer vos records :

Comment faire une entrée A:

S'occuper de la résolution de nom inverse

La résolution de nom inverse permet de traduire une adresse comme 157.159.40.55 en ns1.minet.net. Les résolutions inverses sont très rarement utilisées par les êtres humains mais assez souvent par les serveurs :

lorsque vous vous connectez en ssh, le serveur fait une résolution de nom inverse sur votre ip pour mettre dans les logs qui vous êtes vraiment. L'architecture mails de MiNET utilise souvent le DNS inverse.

Où placer vos records:

Comment faire une entrée reverse DNS:

Un peu plus loin dans la conf

Configuration des views

Dans le fichier named.conf nous définissons nos view. Par exemple :

view "all" {
	match-clients { any; };

	include "/etc/bind/named.conf.minet.all";

	notify-source 157.159.40.55 port 53;
};

La vue s'appelle all, s'applique par défaut, on donne le fichier qui lui correspond, ainsi que la source.

Comment avoir un DNS esclave ?

Tout d'abord, les fichiers dans /etc/bind doivent être édité sur les deux DNS : ns1 et ns2. La synchronisation entre maître et esclave ne porte que sur le contenu des zones.

Dans les vues de ns2 il faut :

Il faut ensuite autoriser les transferts ainsi que les notifications de changement entre ns1 et ns2. Sur chacun d'entre eux :

Dans named.conf.options:

  allow-transfer { dns-minet; dns-admin-minet; dns-int; dns-xname; };
  allow-notify { dns-minet; dns-admin-minet; dns-int; dns-xname; };

Les trucs entre { } sont des ACLs (groupe d'utilisateurs) définis plus haut, par exemple :

acl dns-int {
	157.159.10.12;
	157.159.10.13;
};

En IPv6

On ajoute dans /etc/bind/named.conf.options :

    listen-on-v6 {
                2001:660:3203:422::A54;
    };

Après le listen (ipv4). Et on ajoute les ipv6 de l'INT :

    acl int {
            157.159.0.0/16;
            2001:660:3203::/48;
    };

Pour ajouter une entrée :

    smtp                 IN AAAA 2001:660:3203:422::A18