Serveur de noms : Bind

Note : ça commence à faire un moment que je ne vous avais pas parlé d'auto-hébergement. Je manque un peu de temps pour bidouiller mon serveur, et je n'ai pas encore installé dessus un bon paquet de choses que je comptais y mettre au départ. Cependant, je suis loin d'avoir abandonné, et je continue petit à petit ; d'ailleurs, plusieurs événements sont en préparation à ce sujet, les lyonnais auront sans doute bientôt de mes nouvelles. Mais, dans l'immédiat, puisque je me suis enfin occupé de ma configuration DNS, voyons ça d'un peu plus près.



Si vous avez acheté votre propre nom de domaine, votre registraire vous fournit sans doute une interface permettant de gérer leurs affectations. Celle de Gandi est assez pratique à utiliser. Cependant, tant qu'à être auto-hébergé et à avoir son propre nom de domaine, autant gérer ça vraiment chez soi, non ? D'autant que ce n'est, en fait, pas franchement compliqué : passées les quelques manipulations d'installation, l'essentiel de ce que vous aurez à faire sur la durée tient en un seul fichier de configuration.

Mais commençons par le début : il faut installer un serveur DNS. Je n'ai pour une fois pas fait dans l'originalité, et j'ai pris Bind, qui est, de très loin, majoritaire (le paquet sur votre système s'appelera sans doute « bind9 », puisque nous utilisons essentiellement la neuvième version de ce logiciel).


Comme j'ai déjà eu l'occasion de vous en parler, le système de noms de domaines est assez central à notre utilisation du réseau : c'est lui qui fait le lien entre un nom intelligible (ou presque) comme « fadrienn.irlnc.org » et une véritable adresse, comme « 82.233.208.64 » (ou, encore mieux, une adresse IPv6, mais on verra ça un peu plus tard). Du coup, ça peut être intéressant de s'assurer que les informations que fournit le vôtre seront toujours accessibles même si, pour une raison ou pour une autre, votre machine n'est temporairement pas accessible.

Je vais donc vous expliquer directement les manipulations à effectuer pour vous permettre d'utiliser d'autres serveurs DNS pour répliquer le vôtre – ceux de vos amis eux-aussi auto-hébergés, ou ceux de votre registraire, par exemple. Dans mon cas, c'est Zergy, l'un des premiers membres du collectif IRLNC, qui se charge de cette réplication, et c'est aussi lui qui m'a apprit l'essentiel de ce que je vais vous retranscrire ici. Merci encore 😊


Donc, la configuration de Bind, une fois le logiciel installé, se trouve dans le répertoire « /etc/bind ». En premier lieu, c'est le fichier « named.conf.local » qui nous intéresse : c'est ici que vous allez indiquer à votre serveur de nom dans quel fichier se trouve la configuration pour les différentes zones que vous administrez. Ce que vous devez y ajouter doit ressembler à ça :

zone "exemple.tld" {
        type master;
        file "/etc/bind/db.exemple.tld";
        allow-transfer {
                IP1;
                IP2;
        };
        allow-update {
                IP1;
                IP2;
        };
};

En remplaçant « exemple.tld » par votre nom de domaine, et IP1, IP2, (etc.) par les adresses (v4 ou v6) des machines qui répliqueront votre configuration. Notez que, pour que les transferts fonctionnent, vous devrez rediriger le port 53 de votre box vers votre serveur en UDP et en TCP.


Maintenant, ce fichier « db.exemple.tld ». Ça va être à vous de le créer, et ce sera lui, et lui seul, qu'il faudra par la suite modifier chaque fois que vous voudrez ajouter ou retirer une machine du réseau. Zergy m'en a fourni un très bien commenté pour IRLNC, je lui laisse donc la parole :

$TTL    1d
@       IN      SOA     ns1.exemple.tld.  admin.exemple.tld. ( ; serveur primaire de la zone et mail de l'admin (au format adresse.domaine.tld)
        2013091501 ; serial (A incrémenter à chaque modif, au format YYYYMMDDrr, rr étant la révision si plusieurs modifs le même jour)
        1d         ; refresh (1 jour)
        2h         ; retry (2 heures)
        1w         ; expire (1 semaine)
        1w         ; minimum (1 semaine)
)

; Pour les nom de machines, soit donner le nom complet (hostname.FQDN) AVEC UN POINT FINAL (fadrienn.irlnc.org.)
; soit donner le nom d'hôte uniquement SANS POINT (fadrienn), le domaine (irnlc.org) sera ajoute automatiquement par absence de point.
; A : Adresse IPv4
; AAAA : Adresse IPv6
; CNAME : Alias (surmon) d'une machine)
; MX : Serveur de mai
; NS : Serveur DNS
; SRV : Autres services

; Nom des serveur DNS de la zone.
@       IN      NS      ns1.exemple.tld.
@       IN      NS      ns2.exemple.tld.

; Adresses des serveurs DNS de la zone.
; Remplacer les adresses des enregistrement A et AAAA de ns1 par celles de fadrienn
ns1             IN      A       IPv4_machine1
ns2             IN      A       IPv4_machine2
ns1             IN      AAAA    IPv6_machine1
ns2             IN      AAAA    IPv6_machine2

; Liste des serveurs de mail de la zone.
machine1.exemple.tld.     IN      MX      10      machine1
; Listes des serveur XMPP de la zone, les deux lignes sont nécessaire pour chaque serveurs.
;_xmpp-client._tcp       7200    IN      SRV     10 0 5222       machine2
;_xmpp-server._tcp       7200    IN      SRV     10 0 5269       machine2

; Adresse des autres machines de la zone
machine1        IN      A       IPv4_machine1
machine2        IN      A       IPv4_machine2
machine1        IN      AAAA    IPv6_machine1
machine2        IN      AAAA    IPv6_machine2

; Surnoms
www             IN      CNAME   machine1
www.machine1    IN      CNAME   machine1
irc             IN      CNAME   machine2
irc.machine2    IN      CNAME   machine2

Vous noterez que les lignes caractères « ; » délimitent des commentaires (le reste de la ligne n'est pas lu). Une fois encore, remplacez « exemple.tld » par votre nom de domaine, et indiquez les différentes IP et noms de machines de vos domaines. Je pense que c'est assez clair comme ça, mais si vous avez besoin de davantage d'explications, n'hésitez pas à demander 😊

(Note, concernant XMPP : j'ai laissé les choses en l'état, sans rien activer, et mon compte Jabber fonctionne très bien. Ça doit servir pour des trucs plus avancés).


Le point essentiel est de bien penser, à chaque fois que vous ferez une modification sur ce fichier, de bien modifier le serial (sur la troisième ligne) : il sert à identifier l'état de la configuration, et si le serial ne change pas, le reste du monde aura l'impression que votre configuration n'a pas changé, quelles que soient les modifications que vous auriez pu apporter.

Et après chaque modification de ce fichier, y compris la toute première, quand vous venez de le créer, vous n'aurez qu'à lancer (en root) la commande « service bind9 reload » pour que tout soit pris en compte.



Bon, ça, c'est votre configuration locale. Il reste quand même à prévenir votre registraire que c'est désormais vous qui gérez votre DNS : la manière de procéder sera sans doute différent d'un registraire à l'autre, mais vous devez indiquer, dans les « glue records », les différentes adresses IPs correspondant à vos machines ns1, ns2, etc. ; puis indiquer ces « nsX.exemple.tld » comme serveurs DNS, le vôtre en tête. Il faudra un petit moment pour que le réseau prenne en compte les modifications, mais ça ne devrait pas trop tarder 😊



Note : je n'ai, volontairement, abordé ici que la configuration de base. Ça suffit amplement pour que votre nom de domaine réponde, mais vous aurez peut-être envie d'aller plus loin, en activant quelques trucs pour la sécurité, notamment. Je vous renvoie pour cela à la documentation Debian, ou au blog de Zergy. Et puis, au passage, quelques mots de Bortzmeyer, toujours utiles.

Vus : 740
Publié par Elzen : 138