Outils pour utilisateurs

Outils du site


issue105:c_c

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue105:c_c [2016/02/07 10:14] d52frissue105:c_c [2016/02/09 15:15] (Version actuelle) andre_domenech
Ligne 12: Ligne 12:
  
 This will initiate a Vagrantfile that uses the ubuntu/wily64 box from above. If you haven’t added the box using the box add command, it should work anyway (as this is an official image). If not, you may need to supply the URL (see the Further Reading section for a link to the webpage).** This will initiate a Vagrantfile that uses the ubuntu/wily64 box from above. If you haven’t added the box using the box add command, it should work anyway (as this is an official image). If not, you may need to supply the URL (see the Further Reading section for a link to the webpage).**
 +
 +Après les vacances de Noël, c'est habituellement le moment pour moi de faire le bilan de mon équipement de travail (ordinateurs et serveurs) et voir ce que je peux faire pour me faciliter la vie pendant que je suis encore en vacances. Cette fois-ci, je voulais configurer un serveur DNS interne Bind9 de façon à utiliser des domaines internes pour accéder aux serveurs, machines virtuelles, NAS, autres ordinateurs et plus. Parce que ma zone de test est Ubuntu 15.10 sur Vagrant, je couvrirai toutes les étapes (y compris les étapes pour Vagrant).
 +
 +Étape 0 : Configurer la boîte Vagrant
 +
 +Si vous installez un DNS Bind sur une machine isolée, ou sur une machine virtuelle qui est déjà configurée, vous pouvez passer cette étape. Personnellement, je pense que Vagrant est un moyen formidable de tester des configurations, mais je migrerai le serveur DNS Bind9 sur Intel NUC une fois que les modèles Skylake seront disponibles.
 +
 +vagrant box add ubuntu/wily64
 +
 +Cette commande ajoute la boîte officielle Vagrant Wily Werewolf 64-bit à votre système. Vous pouvez sauter ceci et aller directement à l'initialisation, mais je préfère avoir des copies locales de certaines boîtes de base, car je fais tourner beaucoup de boîtes Vagrant.
 +
 +vagrant init ubuntu/wily64
 +
 +Ceci initialisera une Vagrantfile qui utilise la Boîte Vagrant du dessus. Si vous n'avez pas ajouté la boîte en utilisant la commande box add, cela devrait marcher quand même (car c'est une image officielle). Sinon, vous devez au besoin fournir l'URL (voir la rubrique Pour aller plus loin pour un lien vers la page Web).
  
 **You’ll also want to set up a private network IP (if you plan to actually use the DNS). To do so, edit the Vagrantfile, and edit the line that reads ‘config.vm.network “private_network”’. The IP can be pretty much anything you’d like (provided it isn’t already in use). If you’re going to use the DNS outside the host computer, you’ll need to instead set up a public_network. Since this is a VM, I stuck with a host-only network, as, if my computer isn’t running, neither is the VM (nor do I need to have access to the test DNS from anywhere else). **You’ll also want to set up a private network IP (if you plan to actually use the DNS). To do so, edit the Vagrantfile, and edit the line that reads ‘config.vm.network “private_network”’. The IP can be pretty much anything you’d like (provided it isn’t already in use). If you’re going to use the DNS outside the host computer, you’ll need to instead set up a public_network. Since this is a VM, I stuck with a host-only network, as, if my computer isn’t running, neither is the VM (nor do I need to have access to the test DNS from anywhere else).
Ligne 30: Ligne 44:
  
 If you’d prefer to use something like emacs or nano, substitute vim for that. If you’re doing this in a graphical environment, you’re welcome to use anything you prefer. If working in Vagrant, you’ll be limited to CLI. I’ll also be referring to line numbers. If your vim isn’t displaying the numbers, you can toggle them with the command “:set number”.** If you’d prefer to use something like emacs or nano, substitute vim for that. If you’re doing this in a graphical environment, you’re welcome to use anything you prefer. If working in Vagrant, you’ll be limited to CLI. I’ll also be referring to line numbers. If your vim isn’t displaying the numbers, you can toggle them with the command “:set number”.**
 +
 +Vous voudrez aussi configurer le réseau privé sur IP (si vous projetez effectivement d'utiliser le DNS). Pour faire cela, éditez la Vagrantfile et modifiez la ligne où vous lisez « config.vm.network “private_network” ». L'IP peut être à peu près tout ce que vous voulez (si elle n'est pas déjà utilisée). Si vous devez utiliser le DNS à l'extérieur de l'ordinateur hôte, vous aurez besoin de configurer un réseau public (public_network) à la place. Comme c'est une VM, je suis resté avec le réseau de l'hôte, car, si mon ordinateur ne tourne pas, la VM ne tourne pas non plus (et je n'ai pas besoin d'accéder au DNS de test de n'importe où).
 +
 +Enfin, vous démarrerez la boîte Vagrant avec :
 +
 +vagrant up
 +
 +Étape 1 : Installation
 +
 +Je recommande d'installer 3 paquets :
 + bind9, bind9-docs et dnsutils. Les paquets bind9 et bind9-docs sont importants car ils seront le vrai serveur DNS. Dnsutils contient un jeu d'outils utiles pour déboguer le DNS.
 +
 +Étape 2 : Configuration de base
 +
 +Ouvrez/éditez le bon fichier en utilisant la commande suivante :
 +
 +sudo vim /etc/bind/named.conf.options
 +
 +Si vous préférez utiliser quelque chose comme emacs ou nano, remplacez vim par cela. Si vous travaillez dans un environnement graphique, vous êtes libre de choisir autre chose selon vos préférences. Si vous travaillez dans Vagrant, vous serez limité à la CLI. Je me référerai aussi aux numéros de ligne. Si votre vim n'affiche pas les numéros, vous pouvez le faire par la commande « :set number ».
  
 **Step 2a: Forwarders **Step 2a: Forwarders
  
-Since we’re focusing on internal connections, any outside IPs (which will be requested from this server as well) can be safely called from existing DNS. This is what Bind9 calls “forwarders” - they are essentially the IP addresses of the DNS that should be checked, if the domain isn’t contained in the local copy. I’d recommend using the Google DNS, but if you want to use your ISP’s, you simply need to know the IPs of them. Find lines 13-15 (that starts with {NOWIKI}//{NOWIKI} forwarders {), and make it look like this:+Since we’re focusing on internal connections, any outside IPs (which will be requested from this server as well) can be safely called from existing DNS. This is what Bind9 calls “forwarders” - they are essentially the IP addresses of the DNS that should be checked, if the domain isn’t contained in the local copy. I’d recommend using the Google DNS, but if you want to use your ISP’s, you simply need to know the IPs of them. Find lines 13-15 (that starts with <nowiki>//</nowiki> forwarders {), and make it look like this:
  
 forwarders { forwarders {
Ligne 49: Ligne 82:
  
 ** **
 +
 +Étape 2a : Les forwarders (réacheminement)
 +
 +Comme nous sommes focalisés sur les connexions internes, toute IP externe (qui peut aussi être demandée depuis ce serveur) peut être appelée en toute sécurité depuis les DNS existants. C'est ce que Bind9 appelle des « forwarders » - ce sont principalement les adresses IP du DNS qui devraient être vérifiées, si le domaine n'est pas contenu dans une copie locale. Je recommanderai d'utiliser le DNS Google, mais si voulez utiliser votre ISP (fournisseur d'accès Internet), vous avez juste besoin de connaître son IP.
 +
 +Trouvez les lignes 13-15 (qui commencent par <nowiki>//</nowiki> forwarders {), et assurez-vous qu'elles ressemblent à ceci :
 +
 +forwarders {
 +    8.8.8.8;
 +    8.8.4.4;
 +};
 +
 +Ici, la modification importante est de remplacer 0.0.0.0; par 8.8.8.8; et 8.8.4.4; (les IP du DNS de Google). Assurez-vous aussi de décommenter tout le bloc. Si vous utilisez vim, utilisez « echap » (pour quitter le mode d'édition), puis sauvez et quittez avec :wq.
 +
 +Étape 2b : installer les zones
 +
 +Vous aurez besoin d'ouvrir un nouveau fichier de configuration :
 +
 +sudo vim /etc/bind/named.conf.local
  
 **This file should be largely empty (on a fresh install, at least). Before we can make any edits, we need to know what our IP address is. Typically, it’s something like 192.168.0.X, or 192.168.1.X (for internal networks). To find out what your IP address is, you can run the command ‘ip addr‘. If you’re running Vagrant, you’ll have a few different interfaces - find the one that uses the private or public network IP you added to the Vagrantfile. If you’re at a physical computer with multiple internet connections, I’ll have to assume you know which IP to use. It’s important to note only the first 3 sections of the IP (so ignore the last number). **This file should be largely empty (on a fresh install, at least). Before we can make any edits, we need to know what our IP address is. Typically, it’s something like 192.168.0.X, or 192.168.1.X (for internal networks). To find out what your IP address is, you can run the command ‘ip addr‘. If you’re running Vagrant, you’ll have a few different interfaces - find the one that uses the private or public network IP you added to the Vagrantfile. If you’re at a physical computer with multiple internet connections, I’ll have to assume you know which IP to use. It’s important to note only the first 3 sections of the IP (so ignore the last number).
Ligne 57: Ligne 109:
  
 The section that reads “in-addr.arpa” is required for a DNS IPv4 reverse lookup. For more information, see the wikipedia link in Further Reading. Type indicates whether the DNS is a master (primary), or a slave (secondary). While this is a complicated distinction to fully understand, for the time being it’s safe to assume any local Bind9 DNS zone will be a master. The ‘notify no;’ on the internal IP indicates whether or not zone notifications are to be sent to slaves when changes occur. As this is a master without slaves, it’s not technically necessary. However, since this is for all IP addresses in the network, it’s useful to include (to avoid issues down the line).** The section that reads “in-addr.arpa” is required for a DNS IPv4 reverse lookup. For more information, see the wikipedia link in Further Reading. Type indicates whether the DNS is a master (primary), or a slave (secondary). While this is a complicated distinction to fully understand, for the time being it’s safe to assume any local Bind9 DNS zone will be a master. The ‘notify no;’ on the internal IP indicates whether or not zone notifications are to be sent to slaves when changes occur. As this is a master without slaves, it’s not technically necessary. However, since this is for all IP addresses in the network, it’s useful to include (to avoid issues down the line).**
 +
 +Ce fichier devrait être presque vide (au moins sur une nouvelle installation). Avant que vous ne puissiez faire une quelconque modification, vous devez connaître quelle est votre adresse IP. En général, c'est quelque chose comme 192.168.0.X ou 192.168.1.X (pour des réseaux internes). Pour trouver votre adresse IP, vous pouvez taper la commande « ip addr ». Si vous faites tourner Vagrant, vous aurez quelques interfaces différentes - trouvez celle qui utilise l'IP du réseau privé ou public que vous avez ajouté à la Vagrantfile. Si vous êtes sur un ordinateur physique avec des connexions Internet multiples, je dois supposer que vous connaissez quelle IP utiliser. C'est seulement important de noter les 3 premières sections de l'IP (ignorez donc le dernier nombre).
 +
 +Sélectionnez aussi le domaine local que vous aimeriez configurer. J'ai choisi lswest.local, simplement parce qu'il n'interférera pas avec les domaines existants (si vous utilisez google.com, par exemple, vous ne pourrez pas atteindre la page d'accueil Google).
 +
 +Maintenant, dans le fichier named.conf.local, vous aurez besoin d'ajouter les lignes présentées en haut à droite.
 +
 +La section où vous lisez « in-addr.arpa » est impérative pour une résolution DNS inverse en IPv4. Pour plus d'information, regardez le lien Wikipedia dans la rubrique Pour aller plus loin. Le type indique si le DNS est un maître (primary) ou un esclave (secondary). C'est une distinction compliquée et difficilement compréhensible, mais, pour le moment, vous pouvez décider que n'importe quelle zone DNS de Bind9 sera un maître. Le « notify no; » sur l'adresse IP interne indique si les notifications de zone seront envoyées ou non aux esclaves, lors de modifications. Comme c'est un maître sans esclaves, ce n'est pas techniquement une nécessité. Cependant, comme c'est pour toutes les adresses IP du réseau, il est utile de l'inclure (pour éviter des problèmes par la suite).
  
 **Now we need to create the db files we refer to in the file. To start with, I’ll focus on the local domain. **Now we need to create the db files we refer to in the file. To start with, I’ll focus on the local domain.
Ligne 73: Ligne 133:
 • Also in line 5, we’ll need to edit “root.localhost.” This is actually an email address (but without an @). It isn’t terribly important what you put here, but I’d recommend at least using your username. So root.localhost. becomes “vagrant.localhost.”. • Also in line 5, we’ll need to edit “root.localhost.” This is actually an email address (but without an @). It isn’t terribly important what you put here, but I’d recommend at least using your username. So root.localhost. becomes “vagrant.localhost.”.
 • You’ll need to also edit line 12 to be the domain name you chose in 1. So we would edit this to read “lswest.local.”** • You’ll need to also edit line 12 to be the domain name you chose in 1. So we would edit this to read “lswest.local.”**
 +
 +Maintenant, nous devons créer les fichiers db auxquels nous faisons référence dans le fichier. Pour commencer, je me concentrerai sur le domaine local :
 +
 +sudo cp /etc/bind/db.local /etc/bind/db.lswest.local
 +
 +Maintenant, nous devons ouvrir et modifier le fichier :
 +
 +sudo vim /etc/bind/db.lswest.local
 +
 +Le fichier devrait ressembler à ceci :
 +
 +Les modifications que nous devons faire :
 +
 +• À la ligne 5, nous devons changer localhost. en domain. (un nom de domaine pleinement qualifié - fqdn - fully qualified domain name). Aussi, comme le domaine est lswest.local, la ligne sera lue « lswest.local. ». Assurez-vous absolument qu'il y a un point final.
 +• Également à la ligne 5, nous devons modifier « root.localhost. » C'est en fait une adresse mail (mais sans le @). Ce que vous mettez ici n'est pas très important, mais je recommande au moins d'utiliser votre nom d'utilisateur. Ainsi, root.localhost. devient « vagrant.localhost. ».
 +• Vous devrez modifier la ligne 12 pour y mettre le nom de domaine choisi en 1. Ainsi, vous la modifierez en « lswest.local. ».
  
 **Subdomains **Subdomains
Ligne 85: Ligne 161:
  
 The lines that start with a semi-colon are comments, and serve to just make the file more readable. As you can see, you point the CNAME to the fqdn of another server. As you can probably figure, this is because CNAMEs are simply aliases.** The lines that start with a semi-colon are comments, and serve to just make the file more readable. As you can see, you point the CNAME to the fqdn of another server. As you can probably figure, this is because CNAMEs are simply aliases.**
 +
 +Sous-domaines
 +
 +Le moment est venu de créer les sous-domaines. Je ne vais me concentrer que sur les enregistrements A (Address), et les possibles entrées CNAME (nom canonique). Les enregistrements MX (Mail eXchanger) sont communs aussi, mais je ne sais pas combien de fois vous voudrez vraiment configurer des enregistrements MX dans un réseau local. Si vous devez le faire, suivez le même processus.
 +
 +Je vais créer 2 sous-domaines - nas (fqdn : nas.lswest.local) et web (fqdn : web.lswest.local). L'un pointera sur le NAS physique que j'ai sur le réseau, et l'autre pointera sur la boîte Vagrant que j'utilise pour le développement Web.
 +
 +Je vais installer aussi une entrée CNAME - vagrant, qui pointera vers le sous-domaine web.
 +
 +Le fichier ressemblera ensuite au texte montré en haut à droite (ligne 16 et suivantes).
 +
 +Les lignes qui commencent avec un point-virgule sont des commentaires, et ne servent qu'à rendre le fichier plus lisible. Comme vous pouvez le voir, vous faites pointer le CNAME vers le fqdn d'un autre serveur. Comme vous pouvez probablement le deviner, c'est parce que les CNAME sont des alias.
  
 **Step 3: Reverse Lookup **Step 3: Reverse Lookup
Ligne 103: Ligne 191:
  
 4       IN      PTR     nas.lswest.local.** 4       IN      PTR     nas.lswest.local.**
 +
 +Étape 3 : résolution inverse
 +
 +Cette étape est optionnelle. Si ne prévoyez pas des vérifications inverses de DNS sur des IP (pour trouver des domaines), vous pouvez la sauter. Cependant, c'est une bonne pratique, qui peut être utile.
 +
 +D'abord, vous devez copier le fichier par défaut db.127 :
 +
 +sudo cp /etc/bind/db.127 /etc/bind/db.192
 +
 +Une fois fait, ouvrez le fichier. Il ressemblera au fichier db.lswest.local ci-dessus. Nous devons faire les modifications suivantes :
 +
 +Ligne 5 : remplacer “localhost.” par le fqdn vu avant.
 +Ligne 5 : remplacer root.localhost par l'adresse mail que vous avez utilisé avant.
 +Ligne 12 : remplacer “localhost.” par le fqdn vu avant.
 +Effacez ligne 13 (le pointeur). Nous la remplacerons complètement plus tard.
 +
 +Maintenant, nous devons ajouter les entrées. Après la ligne 12 (la ligne NS), ajoutez la ligne suivante :
 +
 +4       IN      PTR     nas.lswest.local.
  
 **The 4 is the last number of the IP address from db.lswest.local. Since this is a reverse lookup for 192.168.0, we need only the last digit. It is also why I left out the web value, as the IP is 192.168.33.10 - if I wanted to reverse lookup this, I’d need to set up a zone for 192.168.33. However, as my Vagrant installs don’t generally survive long, I don’t find the effort necessary. The CNAME doesn’t get a pointer, as it’s not assigned to an IP. **The 4 is the last number of the IP address from db.lswest.local. Since this is a reverse lookup for 192.168.0, we need only the last digit. It is also why I left out the web value, as the IP is 192.168.33.10 - if I wanted to reverse lookup this, I’d need to set up a zone for 192.168.33. However, as my Vagrant installs don’t generally survive long, I don’t find the effort necessary. The CNAME doesn’t get a pointer, as it’s not assigned to an IP.
Ligne 116: Ligne 223:
  
 Use the IP for the server we configured earlier.** Use the IP for the server we configured earlier.**
 +
 +Le 4 est le dernier nombre de l'adresse IP de db.lswest.local. Comme c'est une résolution inverse pour 192.168.0, nous n'avons besoin que du dernier digit. C'est aussi pourquoi j'ai omis la valeur Web, car l'IP est 192.168.33.10, si je voulais une résolution inverse de ça, j'aurai pu paramétrer une zone pour 192.168.33. Cependant, comme mon installation Vagrant ne survit en général pas très longtemps, je ne trouve pas cet effort nécessaire. Le CNAME n'obtient pas de pointeur, car il n'est pas assigné à une IP.
 +
 +Sauvez et fermez le fichier (:wq dans vim).
 +
 +Étape 4 : démarrer le serveur et se connecter
 +
 +C'est le moment de démarrer le serveur Bind9. Pour ce faire, lancez la commande suivante :
 +
 +sudo service bind9 start
 +
 +Ici, vous avez besoin d'entrer le DNS sur la machine à partir de laquelle vous voulez l'utiliser ; ceci peut être fait dans le gestionnaire de réseau d'Ubuntu, ou quelque part où vous pouvez configurer un DNS dans l'OS de votre choix.
 +
 +Utilisez l'IP pour le serveur que vous avez configuré précédemment.
  
 **Step 5: Testing **Step 5: Testing
-Once your DNS is configured, you should be able to connect to one of your servers using the domain name. If your browser initiates a search instead of pulling up the webpage, make sure you manually add http:// before the domain.+Once your DNS is configured, you should be able to connect to one of your servers using the domain name. If your browser initiates a search instead of pulling up the webpage, make sure you manually add <nowiki> http:// </nowiki> before the domain.
  
 If the domain doesn’t resolve properly, you can check it using dig. The command for that looks something like this: If the domain doesn’t resolve properly, you can check it using dig. The command for that looks something like this:
Ligne 125: Ligne 246:
  
 The @ indicates the DNS to check. If you’ve already changed your DNS IP, it shouldn’t be necessary. If, however, you’re not getting the results you expect, it may be useful.** The @ indicates the DNS to check. If you’ve already changed your DNS IP, it shouldn’t be necessary. If, however, you’re not getting the results you expect, it may be useful.**
 +
 +Étape 5 : le test
 +
 +Une fois que votre DNS est configuré, vous devriez pouvoir vous connecter à l'un de vos serveurs en utilisant le nom de domaine. Si votre navigateur commence une recherche plutôt que de vous afficher la page Web, assurez-vous que vous avez ajouté manuellement <nowiki> http:// </nowiki> avant le domaine.
 +
 +Si le domaine ne se resout pas correctement, vous pouvez le vérifier avec dig. La commande pour cela ressemble à quelque chose comme :
 +
 +dig nas.lswest.local @192.168.15.3
 +
 +L'@ indique le DNS à vérifier. Si vous avez déjà changé l'IP du DNS, cela ne devrait pas être nécessaire. Si, cependant, vous n'obtenez pas le résultat escompté, ça peut être utile.
  
 **Step 6: Logging **Step 6: Logging
Ligne 149: Ligne 280:
 http://askubuntu.com/a/469867 - Permission errors with Bind9** http://askubuntu.com/a/469867 - Permission errors with Bind9**
  
 +Étape 6 : enregistrement
 +
 +Si vous tombez sur des problèmes, vous voudrez pouvoir les enregistrer. Techniquement, AppArmor a déjà une règle pour bind9, mais le dossier dans /var/log n'existe pas. Vous pourrez faire comme suit :
 +
 +sudo mkdir /var/log/named/
 +
 +sudo chown bind:root /var/log/named/
 +
 +sudo chmod -R 775 /var/log/named/
 +
 +Il devrait en résulter un fichier d'enregistrement (une fois le service redémarré). Sinon, vous pourrez vérifier le troisième lien dans la section Pour aller plus loin.
 +
 +J'espère que cet article intéresse toute personne qui peut, comme moi, être un développeur Web (ou qui fait  tourner beaucoup d'appareils sur son réseau interne). Si vous avez apprécié cet article, et avez quelques questions, problèmes ou suggestions, n'hésitez pas à me joindre à lswest34+fcm@gmail.com.
 +
 +Pour aller plus loin
 +
 +https://atlas.hashicorp.com/ubuntu/boxes/wily64 - URL vers la boîte Wily64.
 +
 +https://en.wikipedia.org/wiki/Reverse_DNS_lookup - Article Wikipedia sur la résolution inverse.
 +
 +http://askubuntu.com/a/469867 - Erreurs de permission avec Bind9.
issue105/c_c.1454836457.txt.gz · Dernière modification : 2016/02/07 10:14 de d52fr