Outils pour utilisateurs

Outils du site


issue105:c_c

Ceci est une ancienne révision du document !


After the Christmas holidays, it’s usually time for me to take stock of my work equipment (computers and servers), and see what I can do while I’m still on holidays to make life simpler. This time around, I wanted to configure an internal Bind9 DNS server, so I can use internal domains for accessing servers, virtual machines, NAS, other computers, and so forth. Since my test area is Ubuntu 15.10 on Vagrant, I’ll cover all the steps (including the steps for Vagrant). Step 0: Configure Vagrant box If you’re setting up Bind DNS on a standalone device, or on a virtual machine that is already configured, you can skip this step. Personally, I think Vagrant is a wonderful way to test configurations, but I will be migrating the Bind9 DNS server to an Intel NUC, once the new skylake models are available. vagrant box add ubuntu/wily64 This command adds the official Wily Werewolf 64-bit Vagrant Box to your system. You can skip this and go straight to the init, but I prefer to have local copies of certain base boxes, as I spin up a lot of vagrant boxes. vagrant init ubuntu/wily64 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 jeux faire pendant que je suis encore en vacances pour me faciliter la vie. A ce moment-là, 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, ça marchera quand même (car c'est un 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). Lastly, you’ll want to start the Vagrant box with: vagrant up Step 1: Installing I recommend installing 3 packages - bind9, bind9-docs, and dnsutils. Bind9 and the -docs package are important, as they will be the actual DNS server. Dnsutils contains a bunch of useful tools for debugging DNS. Step 2: Basic Configuration Open/edit the correct file using the following command: sudo vim /etc/bind/named.conf.options 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 de réellement utiliser le DNS). Pour faire cela, éditer la Vagrantfile et modifiez la ligne qui où vous lisez ‘config.vm.network “private_network”’. L'IP peut être à peu tout ce que vous voulez (en supposant qu'elle n'est pas déjà utilisée). Si vous allez utiliser le DNS à l'extérieur de l'ordinateur hôte, vous aurez besoin de configurer un réseau public à la place. Comme c'est une VM, je suis coincé avec le seul réseau de l'hôte car, si mon ordinateur ne tourne pas, la VM ne tourne pas non plus (pas plus que je n'ai 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 bouquet 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 que vous préférez. Si vous travaillez dans Vagrant, vous serez limité à 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 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 // forwarders {), and make it look like this: forwarders { 8.8.8.8; 8.8.4.4; }; The big change here is replacing line 0.0.0.0; with 8.8.8.8; and 8.8.4.4; (the IPs for Google’s DNS). Also, make sure you uncomment the entire block. If you’re using vim, use a quick ‘Esc’ (to leave edit mode), and then save and quit with: :wq Step 2b: Setting up zones You’ll need to open a new configuration file: sudo vim /etc/bind/named.conf.local

Étape 2a : Les forwarders (le réacheminement ?)

Comme nous sommes focalisés sur les connexions internes, toute IP externe qui peut être requétée aussi depuis ce serveur) peut être appelée en toute sécurité depuis les DNS existants. C'est ce que Bind9 appelle « forwarders » - ce sont principalement les adresses IP du DNS qui devraient être vérifiées, si le domaine n'est pas contenu dans une 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 leurs IP.

Trouvez les lignes 13-15 (qui commencent par // forwarders {), et assurez-vous qu'elles ressemblent à ceci :

forwarders {

  8.8.8.8;
  8.8.4.4;

};

Ici, la modification importante ici est de remplacer 0.0.0.0; par 8.8.8.8; et 8.8.4.4; (les IP du DNS for Google). Assurez-vous aussi de décommenter tout le block. 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). Also, select a local domain you’d like to configure. I selected lswest.local, simply because it won’t interfere with existing domains (if you use google.com, for example, you will not be able to reach the google homepage). Now, in the named.conf.local file, you’ll need to add the lines shown top right. 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 très vide (au moins sur une nouvelle installation). Avant que vous ne puissiez faire une quelconque modification, vous avez besoin de 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).

Aussi, sélectionnez 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 marquée « 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). Alors que c'est une distinction compliquée pour bien la comprendre, pour le moment, il est plus sûr de décider que n'importe quelle zone DNS de Bind9 sera un maître. Le « notify no; » sur l'adresse IP interne indique si si les notifications de zone seront envoyées ou non aux esclaves, si le cas se produit. 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, c'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. sudo cp /etc/bind/db.local /etc/bind/db.lswest.local Now we’ll need to open and edit the file: sudo vim /etc/bind/db.lswest.local The file should look like the following: The changes we’ll need to make: • In line 5, we’ll need to change localhost. to domain. (a fully qualified domain name - fqdn) So, since the domain is lswest.local, the line will read “lswest.local.”. Make absolutely sure there is a trailing period. • 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.”

Maintenant, nous devons créer les fichiers db auxqeuls nous faisons référence dans le fichier. Je me concentrerai sur le domaine local.

sudo cp /etc/bind/db.local /etc/bind/db.lswest.local

Maintenant, nous avons besoin d'ouvrir et de modifier le fichier :

sudo vim /etc/bind/db.lswest.local

Le fichier devrait ressembler à ceci :

Les modifications que nous aurons besoin de faire :

• À la ligne 5, nous evons changer localhost. par 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. • Aussi à la ligne 5, nous devons modifier « root.localhost. » C'est une vraie adresse mail (mais sans @). 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 aurez besoin de modifier la ligne 12 pour y mettre le nom de domaine choisi en 1. Ainsi, vous modifieriez ceci pour « lswest.local. ».

Subdomains Now is the time to actually create subdomains. I’m going to focus only on A records, and possible CNAME (canonical name) entries. MX Records are also common, but I don’t know how often you’ll want to really configure MX records in a local network. If you do, the process is the same. I’m going to create 2 subdomains - nas (fqdn: nas.lswest.local), and web (fqdn: web.lswest.local). One will point to the physical NAS I have in the network, and the other will point to the vagrant box I use for web development. I’ll also set up a CNAME entry - vagrant, which I’ll point at the web subdomain. The file will then look like the text shown top right (from line 16 onwards). 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

Maintenant, c'est le moment 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 assez communs, 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 la sous-domaine web.

Le fichier ressemblera ensuite au texte montré en haut à droite (à partir de la ligne 16).

Les ligne qui commence avec un point-virgule sont des commentaires, et serve juste à rendre le fichier plus lisible. Comme vous pouvez le voir, vous pointez le CNAME vers le fqdn d'un autre serveur. Come vous pouvez probablement l'imaginer, c'est parce que les CNAME sont simplement des alias.

Step 3: Reverse Lookup This step is optional. If you’re not planning to do reverse DNS checks on IPs (to find domains), you can skip this. However, it’s good practice, and may come in useful. First, we must copy the default db.127 file: sudo cp /etc/bind/db.127 /etc/bind/db.192 Once done, open the file. It will look similar to the db.lswest.local file from above. We need to make the following changes: Line 5: change “localhost.” to the fqdn from earlier. Line 5: Change root.localhost to the email you used earlier. Line 12: change “localhost.” to the fqdn from earlier. Delete line 13 (the pointer). We’ll be replacing this entirely later. We now need to add the entries. After line 12 (the NS line), add the following line: 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 devenir utile.

D'abord, vous devez copier le fichier par défaut db.127 :

sudo cp /etc/bind/db.127 /etc/bind/db.192

Une fosi fait, ouvrez le fichier. Il ressemblera au fichier db.lswest.local d'au-dessus. Nous avons besoin de faire les modifications suivantes :

Ligne 5: changer “localhost.” pour le fqdn vu avant. Ligne 5: changer root.localhost par l'adresse mail que vous avant utilisé avant. Ligne 12: changer “localhost.” pour le fqdn vu avant. Effacez ligne 13 (le pointeur). Nous le 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. Save and close the file (:wq in vim). Step 4: Run server, and connect It’s now time to start the Bind9 server. To do so, run the following: sudo service bind9 start Now you need to enter the DNS on the machine you want to use it from, this could be done in the network manager in Ubuntu, or wherever you may configure a DNS on the OS of choice. 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 dû paramétrer une zone pour 192.168.33. Cependant, comme mon installation Vagrant ne survit pas très longtemps en général, je ne trouve pas l'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 maintenant 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 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. If the domain doesn’t resolve properly, you can check it using dig. The command for that looks something like this: dig nas.lswest.local @192.168.15.3 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 http: 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é votre IP de DNS, ça n'aurait pas été nécessaire. Si, cependant, vous n'obtenez pas le résultat escompté, ça pourrait être utile. Step 6: Logging If you run into issues, you’ll want to enable logging. AppArmor technically has a rule for bind9 already, but the folder in /var/log doesn’t exist. You’ll want to do the following: sudo mkdir /var/log/named/ sudo chown bind:root /var/log/named/ sudo chmod -R 775 /var/log/named/ That should result in a log file (once the service was restarted). If not, you’ll want to check the third link in the Further Reading section. I hope this article is interesting for anyone who may, like me, be a web developer (or just simply run a lot of devices on their internal network). If you enjoyed the article, and have any questions, issues, or suggestions, feel free to reach out to me at lswest34+fcm@gmail.com. Further Reading https://atlas.hashicorp.com/ubuntu/boxes/wily64 - URL to the Wily64 box. https://en.wikipedia.org/wiki/Reverse_DNS_lookup - Reverse Lookup wikipedia article. 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 dasn /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 par toute personne qui qui peut, comme moi, être un développeur Web (ou juste simplement fait tourner beaucoup d'appareils sur son réseau interne). Si vous avez apprécié cet article, et avez quelque question, problème 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.1455002567.txt.gz · Dernière modification : 2016/02/09 08:22 de d52fr