Академический Документы
Профессиональный Документы
Культура Документы
I
Search Titles Text
fr Bind9
Traduction(s): English - French ?Discussion
Contents
1. Prsentation
2. Dfinitions
3. Disposition rseau
4. Gestion du serveur
1. Installation
2. Configuration
1. Signature TSIG
2. Fichier /etc/bind/named.conf
3. Fichier /etc/bind/named.conf.default-zones
4. Fichier /etc/bind/named.conf.options
5. Fichier /etc/bind/named.conf.local
6. Fichier /etc/bind/named.conf.log
3. Les Ressources Records (RR)
1. Les fichiers dans var/cache/bind/
2. Quelques explications :
4. Fichier /etc/resolv.conf
5. Chroot de bind
6. Gestion des clients
7. Les outils de tests
8. Liens et Ressources
Prsentation
La mise en place d'un serveur DNS sur un rseau permet de remplacer les adresses IP des machines par un
nom. Ainsi, il est mme possible d'associer plusieurs noms la mme machine pour mettre en vidence les
diffrents services possibles. Du coup, www.example.com et pop.example.com, peuvent pointer sur le
serveur principal o sont prsents le serveur de mail et l'intranet de l'entreprise dont le domaine serait
example.com. C'est tout de mme plus facile que de se rappeler que ces deux services tournent sur la
machine dont l'adresse IP est 192.168.0.1.
Imaginez maintenant, que l'administrateur de notre entreprise dcide pour une raison ou une autre de
dplacer le serveur de mail sur la machine 192.168.0.11. Il n'y a rien faire du tout sauf modifier le fichier
de configuration du serveur DNS. Il vous reste toujours la possibilit d'aller modifier le fichier hosts de tous
les utilisateurs, mais cela risque de prendre du temps et d'embter certaines personnes.
Dfinitions
DNS : signifie soit Domain Name System ou Domain Name Server
Serveur primaire :
Serveur secondaire :
Serveur cache :
Disposition rseau
Nous disposons d'un accs Internet via une xxxbox (192.168.1.1), de deux serveurs DNS fournis par notre
FAI (80.10.249.2, 80.10.246.129). En fait, ces deux derniers ne seront jamais mentionns dans la
configuration car la xxxbox va se charger de faire la rsolution de noms si elle ne connat pas l'adresse de
destination des paquets. Par consquent, je considre la xxxbox comme le serveur primaire hors de notre
domaine. Le serveur "sid" (192.168.1.10) est connect la xxxbox via sa premire carte rseau. Il est aussi
connect au lan (192.168.0.0/24) via sa seconde interface rseau (192.168.0.1). C'est sur celui-ci que nous
allons installer le serveur DNS primaire pour notre domaine example.com ( RFC 2606) Tous les
ordinateurs du LAN se voient attribuer une adresse IP automatiquement via le service DHCP. Ce dernier
fournira aussi l'adresse du serveur DNS primaire situ sur notre domaine, et mettra jour les noms d'htes
pour la zone example.com auxquels il aura attribu une adresse IP.
Gestion du serveur
Installation
Configuration
Aprs l'installation, on va voir un peu du cot des fichiers de configuration. Ils sont placs dans le rpertoire
/etc/bind/
Signature TSIG
Cette signature a pour but d'authentifier les transactions avec BIND. Ainsi, le serveur DHCP ne pourra
mettre jour le domaine example.com que s'il dispose de cette clef. On recopie une clef existante :
# cd /etc/bind/
# cat rndc.key
key "rndc-key" {
algorithm hmac-md5;
secret "QJc08cnP1xkoF4a/eSZZbw==";
};
# cp rndc.key ns-example-com_rndc-key
algorithme HMAC-MD5 - identifiant 157 (obligatoire pour une signature TSIG et seul algorithme
support par BIND)
longeur de 512 octets (multiple de 64 avec une longueur maximale de 512 pour l'algorithme ci-
dessus)
nom : ns-example-com_rndc-key
Kns-example-com_rndc-key.+157+53334
Le footprint associ la clef est 53334. On obtient alors deux fichiers, l'un avec une extension key et l'autre
avec une extension private. On substitue la clef prsente dans le fichier ns-example-com_rndc-key par celle
prsente dans un de ces derniers.
# cat Kns-example-com_rndc-key.+157+53334.private
Private-key-format: v1.2
Key: LZ5m+L/HAmtc9rs9OU2RGstsg+Ud0TMXOT+C4rK7+YNUo3vNxKx/197o2Z80t6gA34AEaAf3F+hEodV4K+SWvA==
Bits: AAA=
# cat ns-example-com_rndc-key
key "ns-example-com_rndc-key" {
algorithm hmac-md5;
secret "LZ5m+L/HAmtc9rs9OU2RGstsg+Ud0TMXOT+C4rK7+YNUo3vNxKx/197o2Z80t6gA34AEaAf3F+hEodV4K+SWv
A==";
};
Le fichier ns-example-com_rndc-key ne doit pas tre world-readable, afin de garantir la scurit. Celui-ci
sera insr dans la configuration de bind via une directive include car la configuration de bind est quant
elle world-readable. On pensera aussi supprimer les fichiers key et private prcdemment gnrs.
Fichier /etc/bind/named.conf
// Par dfaut, la clef est situe dans le fichier rndc.key et utilise par
// rndc et bind9 sur localhost
controls {
inet 127.0.0.1 port 953 allow { 127.0.0.1; };
};
zone "." {
type hint;
file "/etc/bind/db.root";
};
include "/etc/bind/named.conf.default-zones";
include "/etc/bind/named.conf.local";
Note : Dans Debian Jessie la partie 'zone "." {...}' est dans le fichier "named.conf.default-zones". Inutile de
l'ajouter dans le fichier "named.conf"
Fichier /etc/bind/named.conf.default-zones
Note : depuis Debian 7 Wheezy bind9 embarque un fichier contenant les zones par dfaut forward,
reverse, et broadcast.
// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
zone "0.in-addr.arpa" {
type master;
file "/etc/bind/db.0";
};
zone "255.in-addr.arpa" {
type master;
file "/etc/bind/db.255";
};
Fichier /etc/bind/named.conf.options
// Transmettre les requtes 192.168.1.1 si ce serveur ne sait pas rsoudre ces adresses.
// On pourrait aussi bien renseigner les serveurs DNS du FAI plutt que de renseigner
forwarders { 192.168.1.1; };
allow-transfer { none; };
allow-recursion { internals; };
};
Le port associ l'option query-source ne doit en aucun cas tre fig car il fragilise les transactions DNS
dans le cas d'un rsolveur.
M. Rash a crit un article intressant propos de cela et comment forcer le port source de manire
alatoire par le biais d'iptables : Mitigating DNS Cache Poisoning Attacks with iptables
Afin de diminuer la temporisation de timeout pour les connexions UDP, et ainsi mettre en vidence la
randomization qui par dfaut est de 30s par tuple, il suffit de mettre jour le paramtre
net.netfilter.nf_conntrack_udp_timeout
# sysctl -w net.netfilter.nf_conntrack_udp_timeout=10
Fichier /etc/bind/named.conf.local
Ce fichier contient la configuration locale du serveur DNS, on y dclare les zones associes au domaine.
// Grer les fichiers de logs
include "/etc/bind/named.conf.log";
// Pour tous les autres domaines, nous utiliserons le forwarder mentionn dans *named.conf.options*
// - Les entrees sur le domaine peuvent tre ajoutes dynamiquement avec le clef ns-example-com_rndc-key
zone "example.com" {
type master;
file "/var/cache/bind/db.example.com";
forwarders {};
allow-update { key ns-example-com_rndc-key; };
};
zone "0.168.192.in-addr.arpa" {
type master;
file "/var/cache/bind/db.example.com.inv";
forwarders {};
// Consider adding the 1918 zones here, if they are not used in your
// organization
include "/etc/bind/zones.rfc1918";
NOTE : si vous crez un non-FQDN local et l'appelez .local, il se heurte d'autres paquets (lesquels ?).
ditez /etc/nsswitch.conf et dplacez dns juste aprs files sur la ligne hosts. Cela fera marcher les
domaines .local.
Fichier /etc/bind/named.conf.log
channel update_debug {
file "/var/log/update_debug.log" versions 3 size 100k;
severity debug;
print-severity yes;
print-time yes;
};
channel security_info {
severity info;
print-severity yes;
print-time yes;
};
channel bind_log {
severity info;
print-category yes;
print-severity yes;
print-time yes;
};
};
On dfinit ici les diffrentes mthodes de log pour les diffrentes catgories. La premire catgorie est
comme son nom l'indique la catgorie par dfaut qui est habituellement affecte au syslog. Toute catgorie
non mentionne, est assimile la catgorie default. Pour obtenir une liste des diffrentes catgories,
consulter le manuel de rfrence de l'administrateur pour bind9. Pour ce qui est des lame-servers, on
ignore tous les logs qui leur sont associs.
Un DNS est constitu de plusieurs enregistrements, les RR ou Ressources Records, dfinissant les diverses
informations relatives au domaine. Le premier enregistrement est consacr la rsolution de noms, dans
notre cas, il s'agit du fichier db.example.com. Le second sera quant lui en rapport avec la rsolution de
noms inverses ; il s'agit du fichier db.example.com.inv.
2007010401 ; Serial
3600 ; Refresh [1h]
@ IN NS sid.example.com.
@ IN MX 10 sid.example.com.
sid IN A 192.168.0.1
etch IN A 192.168.0.2
@ IN NS sid.example.com.
1 IN PTR sid.example.com.
2 IN PTR etch.example.com.
Quelques explications :
$TTL : (Time To Live) exprime la duree (en secondes) de validit, par dfaut, des informations que
contiennent les RRs. Une fois ce dlai expir, il est ncessaire de vrifier nouveau les donnes. Les
diffrents types :
SOA : permet de dfinir les informations relatives la zone. En l'occurrence le nom du serveur DNS
primaire "sid.example.com." et l'adresse mail du contact technique (root.example.com. ; le @ est
remplace par un point). Il est compose de plusieurs champs :
1. Serial : est un entier non sign 32 bits. C'est le numro de srie incrmenter chaque
modification du fichier. Il permet au serveur secondaire de recharger les informations qu'ils ont.
L'usage gnral vient le formater de cette manire YYYYMMDDXX, soit pour la premire
modification du 01/04/2007 -> 2007040101, pour la seconde 2007040102.
2. Refresh : dfinit la priode de rafrachissement des donnes.
3. Retry : si une erreur survient au cours du dernier rafrachissement, celle-ci sera rpte au bout du
dlai Retry.
4. Expire : le serveur sera considr comme non disponible au bout du dlai Expire.
5. Negative cache TTL : dfinit la dure de vie d'une rponse NXDOMAIN de notre part.
NS : renseigne le nom des serveurs de noms pour le domaine.
MX : renseigne sur le serveur de messagerie. Plusieurs peuvent tre dfinis. Ainsi, il est possible de leur
donner une priorit en leur affectant un numro. Plus bas est le numro, plus haute est la priorit.
A : associe une nom d'hte une adresse ipv4 (32 bits)
AAAA : associe une nom d'hte une adresse ipv6 (128 bits)
CNAME : identifie le nom canonique d'un alias (un nom pointant sur un autre nom)
PTR : c'est simplement la rsolution inverse (le contraire du type A).
Les classes : IN determine l'association a la classe Internet. D'autres classes sont disponibles (CH et HS).
Pour de plus amples informations vous pouvez consulter la RFC 1035
Fichier /etc/resolv.conf
search example.com
Chroot de bind
Par dfaut, la configuration de bind emploie l'utilisateur bind pour excuter le dmon named.
Ainsi, on retrouve cette option dans /etc/default/bind9 (NOTE : cela n'est pas valide pour Debian Jessie
qui utilise systemd) :
OPTIONS="-u bind"
Le script de dmarrage de bind /etc/init.d/bind9 lit ce fichier de configuration quand le service est lanc.
Dmarrer bind en tant que simple utilisateur est une bonne pratique mais pour lancer le dmon dans un
environnement chroot, nous devons galement spcifier le rpertoire chroot. Cela se fait en utilisant la
mme variable OPTIONS dans /etc/default/bind9.
/etc/init.d/bind9 stop
Pour Jessie, crez le fichier /etc/systemd/system/bind9.service avec les options "-t /var/bind9/chroot" :
[Unit]
Documentation=man:named(8)
After=network.target
[Service]
ExecReload=/usr/sbin/rndc reload
ExecStop=/usr/sbin/rndc stop
[Install]
WantedBy=multi-user.target
Pour Jessie, aprs avoir cr le fichier ci-dessus, mettez jour le lien symbolique vers le fichier avec :
mkdir -p /var/bind9/chroot/{etc,dev,var/cache/bind,var/run/named}
Crez les fichiers spciaux de priphrique requis et dfinissez les permissions appropries :
mknod /var/bind9/chroot/dev/null c 1 3
mknod /var/bind9/chroot/dev/random c 1 8
mv /etc/bind /var/bind9/chroot/etc
ln -s /var/bind9/chroot/etc/bind /etc/bind
Si vous voulez utiliser la timezone locale dans le chroot (par exemple, pour syslog) :
cp /etc/localtime /var/bind9/chroot/etc/
Changez le propritaire sur les fichiers que vous venez de dplacer dessus et le reste de la structure de
rpertoire du chroot nouvellement cr :
chown bind:bind /var/bind9/chroot/etc/bind/rndc.key
chmod 775 /var/bind9/chroot/var/{cache/bind,run/named}
PIDFILE=/var/bind9/chroot/var/run/named/named.pid
Enfin, indiquez rsyslog d'couter les journaux (logs) de bind dans le bon endroit :
Il faut ajouter aux fichiers (je pense) les zones pour lesquelles DHCP devrait effectuer automatiquement des
mises jour.
zone [name.of.the.zone.] {
primary 127.0.0.1; => le serveur DNS primaire est sur la mme machine que DHCP
key rndc-key; => il est ncessaire de fournir la cl de scurit (via un include) dans le dbut du fichier
de configuration du serveur DHCP,
Ce doit tre la mme cl que celle qui scurise le allow-update pour la zone dans le named.conf.local
de Bind9.
Pour de plus amples informations sur la mise en place de la mise jour dynamique des enregistrements
DNS via DHCP voir ici
Les outils de tests
La commande dig : Elle permet d'interroger directement le serveur DNS de son choix et d'obtenir de
nombreuses informations, en plus de la rsolution de noms et la rsolution inverse.
$ dig nomade-frjo.stones.lan
;; Got answer:
;; QUESTION SECTION:
;nomade-frjo.stones.lan. IN A
;; ANSWER SECTION:
;; AUTHORITY SECTION:
;; ADDITIONAL SECTION:
;; SERVER: 127.0.0.1#53(127.0.0.1)
$ dig -x 192.168.0.242
; <<>> DiG 9.4.2 <<>> -x 192.168.0.242
;; Got answer:
;; QUESTION SECTION:
;242.0.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
;; AUTHORITY SECTION:
;; ADDITIONAL SECTION:
;; SERVER: 127.0.0.1#53(127.0.0.1)
$ nslookup etch
Server: 192.168.0.1
Address: 192.168.0.1#53
Name: etch.example.com
Address: 192.168.0.2
$ nslookup 192.168.0.2
Server: 192.168.0.1
Address: 192.168.0.1#53
# named-checkconf -z
named-checkzone : Elle permet de vrifier la validit des fichiers de zones avant de recharger la
configuration.
OK
# named-checkzone 0.168.192.in-addr.arpa /var/cache/bind/db.example.com.inv
OK
Liens et Ressources
rfc1035 - Implementation ans specifications
rfc1591 - Domain Name System Structure and Delegation
rfc2606 - Reserved Top Level DNS Names
http://www.bind9.net/manual/bind/9.3.2/Bv9ARM - Bind 9 Administrator Manual
Services Whois :
Gandhi
AFNIC
?ToDos
CategoryDebugging
MoinMoin Powered Python Powered Debian Wiki team, bugs and config available. Hosting provided by Metropolitan Area Network
Darmstadt