Source :
Lien utile sur le forum :
DNS permet une correspondance entre nom d'hôte (FQDN) et adresse IP.
Principe de hiérarchie :
Le point après com
est sous-entendu pour l'utilisation du côté client, mais pas dans la configuration du DNS.
Tout cela compose le FQDN (fool domaine name).
Un client souhaite savoir à quel adresse IP correspond www.toto.com.
Dans l'ordi de ce client on a configuré un ou plusieurs DNS dans le fichier /etc/resolv.conf dans lequel est indiqué l'adresse IP de serveur local Bind comme server de référence.
Cet ordi a donc l'adresse IP d'un DNS est lui pose la question “donne moi l'IP de www.toto.com.
Donc les serveur qui font autorité sur un domaine sont :
named : C'est le programme qui lance le serveur. /usr/sbin/named
Permet de gérer bind.
/etc/init.d/bind9 stop
: pour arrêter/etc/init.d/bind9 start
: pour rédémarrer/etc/init.d/bind9 restart
: pour redémarrer (si il était démarrer, avec restart, il est éteint, Redémarrer avec un nouveau processus :
/etc/init.d/bind9 reload
: pour recharger la configuration (ne stoppe pas avant de recharger).
On peut aussi utiliser service
avec chacune des commandes décrites pour init.d par exemple :
service bind9 restart
/usr/sbin/rndc est le fichier binaire de l'utilitaire de contrôle rndc.
Il permet de gérer Bind9.
rndc [b source-adress] [-c config-file] [k key-file] [-s serveur] [-p port] [-V] [-y key-id] {commande}
reload
: pour rechargerstop
: arrêter le serveurflush
: vider le cachestatus
: afficher l'état du serveur
C'est le fichier de configuration centrale de bind.
Il peut se trouver dans différents dossiers (sécurité, chroot) par exemple dans /etc/named.conf ou /etc/
On peut externaliser certains points de configuration de ce fichier central dans des fichiers;
Il 'agit d'un init script qui permet de redémarrer bind :
/etc/init.d/bind9 restart
Il s'agit d'un répertoire de travail.
(named.conf, named.conf.local, named.conf.options, etc.)
On donne une “intruction” (statements)
mot-clé { ... };
Par exemple dans /etc/bind/named.conf :
include "/etc/bind/name.conf.options"; include "/etc/bind/name.conf.local"; include "/etc/bind/name.conf.default-zones"; include "/etc/bind/name.conf.example-zones";
Dans l'instruction “option” du fichier named.conf.options, on peut donner les instructions suivantes :
Options | significations | exemples |
---|---|---|
directory | répertoire de travail | directory ”/var/named”; |
forwarders | serveurs de référence (aucun par défaut) | forwarders { adresses.IP.de.serveurs.de.référence; } (sinon il interroge récursivement les autres serveurs DNS) |
forward | comportement avec les forwarders (first : en prorité only : uniquement) | forward only ; |
version | version du serveur à afficher quand le serveur est interrogé | version none ; |
Par exemple dans /etc/bind/named.conf.options :
pour une utilisation locale uniquement
le forwarders avec une IP du DNS externe en cas d'un échec de résolution par le DNS local
options { directory "/var/cache/bind"; forward only; forwarders { xxx.xxx.xxx.xxx; }; dnssec-enable no; dnssec-validation no; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { none; }; listen-on { 127.0.0.1; 192.168.10.1; }; allow-transfer { none; }; allow-query { internals; }; allow-recursion { internals; }; version none; };
Permet de définir les paramètres généraux d'une zone.
zone "nom-de-notre-zone" { type master; file "/etc/bind/db.xxx"; }
Exemple :
zone "mondomaine.net" { type master; file "/etc/bind/db.mondomaine.net"; forwarders {}; allow-update { key ns-mondomaine-net_rndc-key; }; };
Il va s'agir de configurer un serveur DNS qui servira de serveur cache pour le système sur lequel Bind va être installé, et qui sera de serveur DNS maître pour les systèmes clients du réseau local.
Les IP des ordinateurs clients et du système2) sont fixées par le serveur DHCP par exemple celui du modem fourni par son FAI3), ou encore par un serveur DHCP installé entre le routeur et les clients du réseau local.
hostname
debian-serveur
Si on veut le changer pour lui donner un nom plus significatif de sa fonction de server :
vim /etc/hostname
Puis ré-initialiser :
/etc/init.d/hostname.sh start
Il s'agit là de la partie cliente du système sur lequel va être installé Bind. Un même système peut être à la fois client et serveur, c'est-à-dire, serveur DNS “pour lui-même”.
vim /etc/host.conf
order hosts, bind multi on
Il s'agit là encore de l'aspect client du système. On renseigne tous les clients du réseau local.
On renseigne aussi le nom de domaine de ce système en tant que client.
vim /etc/hosts
127.0.0.1 localhost.mondomaine.hyp localhost 192.168.0.14 debian-serveur.mondomaine.hyp debian-serveur 192.168.0.22 debian-client1 192.168.0.23 debian-hp # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Deux solutions pour résoudre ce problème : soit on configure Network Manager, soit on se crée un script.
En faisant :
→ Système → Préférences → Connexions réseau
Puis il faut modifier toutes les connexions que vous avez dans tous les onglets (Filaire, Sans fil, etc…), en faisant, pour chacune d’entre-elles :
Puis appliquez les modifications. Si la connexion est partagée entre tous les utilisateurs, un mot de passe administrateur vous sera demandé.
On peut alors éditer le fichier /etc/resolv.conf afin qu'il ressemble à ceci :
domain mondomaine.hyp search mondomaine.hyp nameserver 127.0.0.1
On va modifier le fichier avec le script, en même temps que résoudre le problème “Network Manager”, donc inutile d'éditer /etc/resolv.conf après l'exécution du script.
cd /etc/NetworkManager/
vim /etc/NetworkManager/dispatcher.d/99-dns
#!/bin/sh echo "domain mondomaine.hyp" > /etc/resolv.conf echo "search mondomaine.hyp" >> /etc/resolv.conf echo "nameserver 192.168.0.14" >> /etc/resolv.conf echo "#nameserver 212.27.40.240" >> /etc/resolv.conf echo "#nameserver 212.27.40.241" >> /etc/resolv.conf
Et c'est tout, Bind sera le server DNS du système sur lequel il est installé.
On peut simplement commenter les anciens paramètres du fichier afin d'avoir sous la main les DNS de son FAI.
chmod 755 /etc/NetworkManager/dispatcher.d/99-dns
bash /etc/NetworkManager/dispatcher.d/99-dns
less /etc/resolv.conf
domain mondomaine.hyp search mondomaine.hyp nameserver 192.168.0.14 #nameserver 212.27.40.240 #nameserver 212.27.40.241
Redémarrer le réseau :
/etc/init.d/networking start
Au sujet de Network Manager:
https://wiki.debian.org/fr/NetworkConfiguration#Configuration_de_DNS_pour_network-manager
apt-get remove --purge network-manager-gnome netwok-manager
apt-get update
apt-get install bind9
Si la configuration est difficile on peut chercher les erreurs avec les commandes suivantes :
named-checkzone webadonf.lan /etc/bind/db.webadonf.lan
named-checkzone webadonf.lan /etc/bind/db.webadonf.lan.inv
named-checkconf /etc/bind/named.conf
named-checkconf /etc/bind/named.conf.options
Voir aussi les logs :
tail -30 /var/log/syslog
Le dossier /etc/bind/ :
cd /etc/bind/ && ls
bind.keys db.127 db.empty db.root named.conf.default-zones named.conf.options zones.rfc1918 db.0 db.255 db.local named.conf named.conf.local rndc.key
Créer le fichier “/etc/bind/db.mondomaine.hyp”
Prendre le fichier /etc/bind/db.local pour modèle :
cp /etc/bind/db.local /etc/bind/db.mondomaine.hyp
Éditer “/etc/bind/db.mondomaine.hyp” :
vim /etc/bind/db.mondomaine.hyp
; ; BIND data file for eth0 interface ; $TTL 604800 @ IN SOA debian-serveur.mondomaine.hyp. root.mondomaine.hyp. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS debian-serveur.mondomaine.hyp. debian-serveur IN A 192.168.0.14
Créer le fichier de recherche inverse “db.mondomaine.hyp.inv” :
Prendre pour modèle /etc/bind/db.127 :
cp /etc/bind/db.127 /etc/bind/db.192
Éditer “/etc/bind/db.192” :
vim /etc/bind/db.192
; ; BIND reverse data file for eth0 interface ; $TTL 604800 @ IN SOA debian-serveur.mondomaine.hyp. root.mondomaine.hyp. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS debian-serveur. 14 IN PTR debian-serveur.mondomaine.hyp.
Configurer le fichier “/etc/bind/named.conf.local” :
vim /etc/bind/named.conf.local
// // Do any local configuration here // // Consider adding the 1918 zones here, if they are not used in your // organization //include "/etc/bind/zones.rfc1918"; zone "mondomaine.hyp" { type master; file "/etc/bind/db.mondomaine.hyp"; allow-query { any; }; }; zone "0.168.192.in-addr.arpa" { type master; file "/etc/bind/db.192"; };
vim /etc/bind/named.conf.options
options { directory "/var/cache/bind"; // If there is a firewall between you and nameservers you want // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder. forwarders { 192.168.0.14; 8.8.8.8; 8.8.4.4; // 212.27.40.240; // 212.27.40.241; }; //======================================================================== // If BIND logs error messages about the root key being expired, // you will need to update your keys. See https://www.isc.org/bind-keys //======================================================================== dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 version none; forward only; // listen-on-v6 { any; }; };
On peut mettre les forwarders qu'on souhaite, par exemple ici ceux de google ou/et ceux de “boxmachin”, fournisseur adsl.
service bind9 restart
ou
/etc/init.d/bind9 restart
[....] Stopping domain name service...: bind9rndc: connect failed: 127.0.0.1#953: connection refused . ok [ ok ] Starting domain name service...: bind9.
vim /etc/bind/db.mondomaine.hyp
; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA debian-serveur.mondomaine.hyp. root.mondomaine.hyp. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS debian-serveur.mondomaine.hyp. debian-serveur IN A 192.168.0.14 debian-client1 IN A 192.168.0.22
vim /etc/bind/db.192
; ; BIND reverse data file for eth0 interface ; $TTL 604800 @ IN SOA debian-serveur.mondomaine.hyp. root.mondomaine.hyp. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS debian-serveur. 14 IN PTR debian-serveur.mondomaine.hyp. 22 IN PTR debian-client1.
On recharge bind :
/etc/init.d/bind9 restart
Sur chacun d'eux, il faut configurer les fichiers ci-dessous.
Afin que le serveur bind du réseau local soit interrogé par le client.
vim /etc/host.conf
order hosts,bind multi on nospoof on
order
: indique l'ordre des requêtes : ici, d'abord le fichier hosts, puis, en cas d'échec, le serveur de noms qui sera le serveur Bind quand le fichier /etc/resolv.conf aura été modifier pour ce faire.
multi
mis àon
: plusieurs adresses IP peuvent être associées à un même nom.
nospoof
: oblige, par sécurité, à vérifier la concordance entre adresse IP et nom lors de la résolution d'adresses inverse.
Deux solutions :
Ce qui permet là aussi de ne plus être embêté par networkmanager, mais cette fois il va permettre de renseigner le système client DNS par l'adresse IP du serveur local bind.
cd /etc/NetworkManager/
vim /etc/NetworkManager/dispatcher.d/99-dns
#!/bin/sh echo "domain mondomaine.hyp" > /etc/resolv.conf echo "search mondomaine.hyp" >> /etc/resolv.conf echo "nameserver 192.168.0.14" >> /etc/resolv.conf
chmod 755 /etc/NetworkManager/dispatcher.d/99-dns
bash /etc/NetworkManager/dispatcher.d/99-dns
less /etc/resolv.conf
domain mondomaine.hyp search mondomaine.hyp nameserver 192.168.0.14
On fait cela sur tous les systèmes clients du réseau local.
En faisant :
→ Système → Préférences → Connexions réseau
Puis il faut modifier toutes les connexions que vous avez dans tous les onglets (Filaire, Sans fil, etc…), en faisant, pour chacune d’entre-elles :
Puis appliquez les modifications.
On peut alors éditer le fichier /etc/resolv.conf afin qu'il ressemble à ceci :
domain mondomaine.hyp search mondomaine.hyp nameserver 192.168.0.14
/etc/init.d/networking start
Pour avoir le nom complet sur système avec Bind :
hostname
debian-serveur
nslookup
> debian-serveur Server: 127.0.0.1 Address: 127.0.0.1#53 Name: debian-serveur.mondomaine.hyp Address: 192.168.0.14 >debian-serveur.mondomaine.hyp Server: 127.0.0.1 Address: 127.0.0.1#53 Name: debian-serveur.mondomaine.hyp Address: 192.168.0.14 > exit
nslookup
> 192.168.0.14 Server: 127.0.0.1 Address: 127.0.0.1#53 14.0.168.192.in-addr.arpa name = debian-serveur.mondomaine.hyp. > exit
Il répond aux deux, donc tout va bien !
dig debian-serveur
dig mondomaine.hyp
dig -x @192.168.0.14
nslookup
> debian-client1 Server: 127.0.0.1 Address: 127.0.0.1#53 Name: debian-client1.mondomaine.hyp Address: 192.168.0.22 > 192.168.0.23 Server: 127.0.0.1 Address: 127.0.0.1#53 23.0.168.192.in-addr.arpa name = debian-hp.0.168.192.in-addr.arpa. > exit
Il connaît bien les deux clients, soit à partir d'un nom d'hôte, soit à partir d'une adresse IP.
host -a debian-serveur
Trying "debian-serveur.mondomaine.hyp" ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10787 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;debian-serveur.mondomaine.hyp. IN ANY ;; ANSWER SECTION: debian-serveur.mondomaine.hyp. 604800 IN A 192.168.0.14 ;; AUTHORITY SECTION: mondomaine.hyp. 604800 IN NS debian-serveur.mondomaine.hyp. Received 77 bytes from 192.168.0.14#53 in 0 ms
dig mondomaine.hyp
; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> mondomaine.hyp ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12579 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;mondomaine.hyp. IN A ;; AUTHORITY SECTION: mondomaine.hyp. 604800 IN SOA debian-serveur.mondomaine.hyp. root.mondomaine.hyp. 2 604800 86400 2419200 604800 ;; Query time: 0 msec ;; SERVER: 192.168.0.14#53(192.168.0.14) ;; WHEN: Sun Sep 14 09:00:08 2014 ;; MSG SIZE rcvd: 88
dig -x 192.168.0.14
; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> -x 192.168.0.14 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47078 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;14.0.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 14.0.168.192.in-addr.arpa. 604800 IN PTR debian-serveur.mondomaine.hyp. ;; AUTHORITY SECTION: 0.168.192.in-addr.arpa. 604800 IN NS debian-serveur. ;; Query time: 0 msec ;; SERVER: 192.168.0.14#53(192.168.0.14) ;; WHEN: Sun Sep 14 09:03:29 2014 ;; MSG SIZE rcvd: 114
Et voilà
Cet utilitaire permet d'administrer notre serveur. Après l'installation de Bind, la première chose à faire est de configurer rndc, ce qui consiste à configurer une clé d'authentification relative à la configuration de son réseau local.
BIND contient un utilitaire appelé rndc qui permet d'utiliser des lignes de commande pour administrer le démon named à partir de l'hôte local ou d'un hôte distant.
Afin d'empêcher l'accès non-autorisé au démon named, BIND utilise une méthode d'authentification à clé secrète partagée pour accorder des privilèges aux hôtes. Ainsi, une clé identique doit être présente aussi bien dans /etc/named.conf que dans le fichier de configuration de rndc, à savoir /etc/rndc.conf.
Pour utiliser rmdc à distance mettre sur la machine qui génère rndc les info données en sortie par la commande rndc-confgen à mettre dans rndc.conf et sur le serveur distant les infos à mettre dans named.conf.
ls /etc/bind/
bind.keys db.empty named.conf.default-zones zones.rfc1918 db.0 db.local named.conf.local db.127 db.root named.conf.options db.255 named.conf rndc.key
rndc-confgen >/etc/bind/rndc.key
echo 'include "/etc/bind/rndc.key";' >> /etc/bind/named.conf
options {
:vim /etc/bind/rndc.key
# Start of rndc.conf key "rndc-key" { algorithm hmac-md5; secret "xxxxxxxxxxxxxxxxx"; }; #options { # default-key "rndc-key"; # default-server 127.0.0.1; # default-port 953; #}; # End of rndc.conf # Use with the following in named.conf, adjusting the allow list as needed: # key "rndc-key" { # algorithm hmac-md5; # secret "xxxxxxxxxxxxxx"; # }; # # controls { # inet 127.0.0.1 port 953 # allow { 127.0.0.1; } keys { "rndc-key"; }; # }; # End of named.conf
vim /etc/bind/named.conf.local
// // Do any local configuration here // // Consider adding the 1918 zones here, if they are not used in your // organization //include "/etc/bind/zones.rfc1918"; zone "mondomaine.hyp" { type master; file "/etc/bind/db.mondomaine.hyp"; allow-update {key rndc-key;}; }; zone "0.168.192.in-addr.arpa" { type master; file "/etc/bind/db.192"; allow-update {key rndc-key;}; };
/etc/init.d/bind9 restart
[....] Stopping domain name service...: bind9waiting for pid 5441 to die . ok [ ok ] Starting domain name service...: bind9.
préfixe DNS wikipédia : https://fr.wikipedia.org/wiki/Liste_des_domaines_Internet_de_premier_niveau
préfixes DNS utilisé : https://wiki.mozilla.org/TLD_List
Sur Wikipédia : https://fr.wikipedia.org/wiki/BIND
Sur la commande dig : http://www.system-linux.eu/index.php?post/2009/04/23/La-commande-dig
Pour la configuration des clients Windows http://valaurea.free.fr/documents/sig11_bind9_1.html
Pour installer et configurer Bind sur une distribution linux à base de RPM http://lea-linux.org/documentations/Reseau-name-dns1