{{indexmenu_n>20}} # Installation du serveur DNS principal On va commencer par mettre en place un serveur DNS de référence pour Picasoft. Celui-ci se trouve, pour le moment, sur Alice. Cette configuration n'est qu'à faire une seule fois! ## Préambule J'utilise la terminologie *principal/secondaire* au lieu de *maître/esclave* quand le contexte le permet. Nous utilisons le logiciel [[https://fr.wikipedia.org/wiki/BIND|BIND]] comme serveur DNS. BIND est un serveur DNS de référence. Il est très puissant. En revanche, sa configuration est assez pénible à prendre en main. Des alternatives modernes, plus facilement configurables et tout aussi efficaces existent, comme [Knot DNS](https://en.wikipedia.org/wiki/Knot_DNS). Nous pourrions l'utiliser dans le futur et en profiter pour mettre en place [DNSSEC](https://docs.gandi.net/fr/noms_domaine/utilisateurs_avances/dnssec.html#comment-installer-dnssec-sur-votre-nom-de-domaine-avec-des-serveurs-dns-externes), la procédure étant largement simplifiée grâce à Knot. La notion de DNS principal est purement interne à la configuration de BIND. De l'extérieur, les serveurs sont indifférenciés. La configuration principal/secondaire permet de modifier les enregistrements DNS sur le principal, et d'appliquer les changements aux secondaires automatiquement. Toutes les commandes sont à faire en `root`. ## Installation de BIND Il suffit d'un simple ``` apt install bind9 ``` ## Configuration Les fichiers de configuration de BIND sont versionnés sur [ce dépôt](https://gitlab.utc.fr/picasoft/projets/zonefile-picasoft). Il est privé (on ne souhaite pas forcément que quelqu'un puisse avoir connaissance de tous nos sous-domaines). On commence par cloner le dépôt dans `/etc/bind/picasoft.net` : ``` git clone https://gitlab.utc.fr/picasoft/projets/zonefile-picasoft /etc/bind/picasoft.net ``` On va ensuite configurer BIND pour utiliser ces fichiers de configuration. Dans `/etc/bind/named.conf`, on remplace le contenu du fichier par : ``` include "/etc/bind/named.conf.options"; include "/etc/bind/picasoft.net/named.conf.local"; include "/etc/bind/named.conf.default-zones"; ``` Les fichiers de configuration de BIND par défaut conviennent très bien. Le seul fichier que l'on va modifier, versionné sur Git, est `named.conf.local`. ## Démarrer le serveur DNS ``` systemctl enable --now bind9 systemctl status bind9 ``` On vérifie que les logs ne produisent aucune erreur. On pourra vérifier que le serveur tourne bien en l'interrogeant depuis un poste client : ``` dig +short picasoft.net @ ``` Si on a une réponse, alors le serveur tourne correctement. ## Explication de configuration L'idée n'est pas de documenter la syntaxe de configuration de BIND, mais voici un extrait possible du fichier `named.conf.local` pour comprendre : ``` zone "picasoft.net" { # Serveur principal type master; # Chemin du fichier de zone file "/etc/bind/picasoft.net/db.picasoft.net"; # On autorise le transfert aux serveurs secondaires allow-transfer{91.224.148.85; 51.158.76.113;}; }; ``` On dit à notre serveur BIND qu'il va être amené à gérer la zone `picasoft.net`, et que les **enregistrements DNS** se trouvent dans le fichier `db.picasoft.net`. Un enregistrement DNS est composé d'un **type**, d'une **clé** et d'une **valeur**. Lorsque l'on fait une requête à un serveur DNS, on spécifie généralement le type et la clé. Par exemple : quel est la valeur de l'enregistrement de type `A` ayant la clé `team.picasoft.net` ? Sachant qu'un enregistrement de type `A` met en relation un nom de domaine et une adresse IP. Il en existe [beaucoup d'autres](https://fr.wikipedia.org/wiki/Liste_des_enregistrements_DNS), utiles pour les serveurs mails, les IPv6, les alias... On indique ensuite les IP des serveurs secondaires, qui sont autorisés à recevoir l'intégralité des enregistrements DNS pour le domaine `picasoft.net`, communément appelée **zone**.