{{indexmenu_n>10}} # Changer les enregistrements DNS (ajout d'un domaine...) Cette page détaille la procédure pour ajouter un sous domaine dans une zone DNS. La procédure vaut pour tous les types d'enregistrements, on prend juste un exemple. ## Emplacement du fichier de zone Le **fichier de zone** (pour `picasoft.net`) est un fichier qui contient tous les enregistrements DNS relatifs au domaine `picasoft.net`. Le fichier de zone est un fichier de configuration important qui évolue dans le temps. Nous avons fait le choix de le versionner avec //Git// de manière à retracer son évolution et à avoir une sauvegarde. \\ Après une modification il convient donc de //commit// et //push// la modification, accompagnée d'un **message de //commit// clair**. Il se trouve dans un [dépôt privé](https://gitlab.utc.fr/picasoft/projets/zonefile-picasoft). Pour garder un historique propre, on fait les modifications en local sur sa machine, puis on les pousse sur le dépôt. ## Syntaxe du fichier de zone C'est un format un peu spécifique (et très laid), on retiendra surtout que les commentaires s'écrivent avec le caractère '';''. Il est important de bien commenter ce fichier, un fichier de zone mal commenté c'est au mieux très désagréable à lire et au pire inutilisable. En haut du fichier se trouve un morceau de configuration particulier, qui définit le fonctionnement des DNS pour la zone. Voici un extrait de `db.picasoft.net` : ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;; SOA record ;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; $TTL 7200 ; TTL - 2H - Durée expiration cache DNS client @ IN SOA ns01.picasoft.net. contact.picasoft.net. ( 2017121901 ; Serial - Format AAAAMMJJXX où XX est incrémenté de 01 à 99 300 ; Refresh - 5 minutes - Fréquence d'actualisation des DNS secondaires 3600 ; Retry - 1 heure - Fréquence de nouvel essai quand actualisation DNS échoue 2419200 ; Expire - 28 Jours - Durée après laquelle les DNS secondaire non actualisés expirent 10800 ; Negative Cache TTL - 3 heures - TTL de l'information de non présence d'un enregistrement dans le domaine ) La configuration est largement commentée, la ligne la plus importante étant celle du //serial// (ici ''2017121901''). Le //serial// est une sorte de version du fichier de zone. **Il est primordial que ce numéro s'incrémente à chaque modification et ne se décrémente jamais**. Pour cela son format reprend la date du jour (au format ''AAAAMMJJ'') suivi de 2 chiffres que l'on incrémente en cas de multiples modifications dans la même journée. Se suivent ensuite différentes parties de la configuration permettant de configurer nos serveurs DNS, les IPs de nos machines et surtout les IPs de nos services. ## Procédure d'ajout d'un sous-domaine ### Modification du fichier de zone Pour ajouter un nouveau sous-domaine il suffit d'ajouter une ligne pour celui-ci. Par exemple ''pica01'' est une machine virtuelle qui a pour adresse ''pica01.picasoft.net'' et ayant l'IP publique ''91.224.148.57''. On va donc dans la partie de la configuration qui correspond aux machines virtuelles (''VM'') (ce n'est pas obligatoire mais c'est important pour garder un fichier lisible) et on ajoute la ligne : ``` pica01 IN A 91.224.148.57 ; Pica01 ``` C'est-à-dire: - le sous-domaine (''pica01'') - le type d'enregistrement (''IN A'' pour une adresse IP) - la valeur de l'enregistrement (l'IP de la machine, ici ''91.224.148.57'') - un petit commentaire pour expliquer à quoi correspond l'enregistrement On prend soin d'ajouter une seconde ligne, quasiment identique, avec comme type d'enregistrement ''IN AAAA'' et comme valeur l'adresse IPv6 de la machine (ici ''2a03:7220:8080:3900::1''). Ceci permet aux personnes disposant d'une connectivité IPv6 d'utiliser les services de Picasoft directement via ce protocole, plus récent. Les enregistrements de type `A` sont utilisés pour la résolution d'un nom de domaine en une IPv4, et les enregistrements `AAAA` pour la résolution d'un nom de domaine en une IPv6. Vérifier que le sous-domaine qu'on cherche à ajouter [[https://en.wikipedia.org/wiki/Hostname#Restrictions_on_valid_hostnames | est valide]], c'est à dire, qu'il ne contient que les lettres de 'a' à 'z' (majuscules ou minuscules), les chiffres de '0' à '9' et le signe moins '-'. Les enregistrements de type `CNAME` servent à indiquer un alias, c'est à dire qu'on utilisera l'adresse IP d'un autre domaine quand on souhaite accéder au domaine souhaité. On préfère les utiliser pour les services car ils permettent de changer facilement l'IP d'une machine sans devoir changer chacun des enregistrements. Pour un nouveau service appelé `form` qui tourne sur `pica01`, on écrira par exemple : ``` form IN CNAME pica10 ; Service de formulaire (Yakforms) ``` Une fois le sous-domaine ajouté, il faut **modifier le //serial//** en entête du fichier. Comme vu au dessus, celui-ci a un format spécifique. On lui met la **date du jour** au format ''AAAAMMJJ'' **suivi de 2 chiffres** pour permettre plusieurs modifications dans une journée (on commence chaque nouvelle journée à ''01''). Vérifier que le //serial// a le bon format, car celui-ci doit toujours s'incrémenter dans le temps. Une erreur (par exemple l'ajout d'un digit en trop) peu provoquer des soucis techniques assez ennuyeux à gérer, par exemple une désynchronisation des serveurs secondaires. Toutes ces modifications sont à synchroniser avec le dépôt en utilisant git. ### Redémarrage du serveur DNS Sur la machine faisant tourner le [[technique:adminsys:dns:principal|serveur principal]], à ce jour Alice, en tant que `root` : ``` cd /etc/bind/picasoft.net git pull systemctl restart bind9 ``` On vérifie qu'il n'y a pas d'erreur dans les logs : ``` systemctl status bind9 ``` ### Vérification de l'enregistrement La prise en compte du nouvel enregistrement peut prendre un certain temps. DNS est un système distribué avec un système de cache, il faut le temps que l'information soit répliquée en fonction de la configuration des serveurs DNS de votre machine. On peut néanmoins forcer l'interrogation de notre propre serveur DNS depuis notre poste client : ``` dig +short @ ``` * `` est le nouveau sous-domaine * `` l'adresse du serveur principal Si on obtient une réponse, c'est que tout a bien fonctionné et qu'il n'y a plus qu'à attendre la réplication.