WikiMiNET

La documentation technique et administrative

Outils pour utilisateurs

Outils du site


wiki:services:dns

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 :

  • minet.net.db.ALL-INT-COMMON : partie commune (via un include) a ALL et INT si vous voulez que votre serveur ait un DNS public
  • minet.net.db.ALL : Si vous voulez que seul les gens de l'extérieur et pas de l'int ait accès (en général pas utile)
  • minet.net.db.INT : Si vous voulez que seul les gens de l'int et pas de l'extérieur ait accès (site du type me etc …)

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 :

  • 1) se connecter au ns1 (ip: 192.168.102.55)
  • 2) aller dans le dossier /etc/bind/zones/minet/db
  • 3) positionnez-vous en suivant l'ordre alphabétique

Comment faire une entrée A:

  • 1) utiliser la syntaxe suivante en respectant l'indentation
  • 2) reponse IN A 192.168.1.42
  • 3) mettre à jour le numero de série
  • 4) vérifier qu'il n'y a pas d'erreur grace au script /etc/bind/checkzones.sh
  • 5) faite un reload de bind /etc/init.d/bind9 reload

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:

  • 1) se connecter au ns1 (ip: 192.168.102.55)
  • 2) aller dans le dossier /etc/bind/zones/minet/rev
  • 3) éditer le fichier minet.net.rev.102 si vous avez des ip dans le vlan 102, 100 si vous avez des ip dans le vlan 100 etc …
  • 4) éditer également le fichier minet.net.rev.public-vlan si vous avez des ip dans le vlan 2 et 3 (des adresses publiques en sommes ^^)

Comment faire une entrée reverse DNS:

  • 1) respecter l'ordre numérique, si votre ip est 42, placer votre entrée entre 41 et 43
  • 2) utiliser la syntaxe suivante en respectant l'indentation
  • 3) 42 IN PTR reponse.minet.net.
  • 4) ne surtout pas oublier le point ^^
  • 5) mettre à jour le numero de série
  • 6) vérifier qu'il n'y a pas d'erreur grâce au script /etc/bind/checkzones.sh
  • 7) faire un reload de bind /etc/init.d/bind9 reload

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 :

  • Remplacer la ligne type master; par type slave;
  • On lui dit qui c'est le patron : masters { 157.159.40.55;}; par exemple.

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
wiki/services/dns.txt · Dernière modification: 2018/11/09 22:21 par zteeed