BIND-9.10.0-P2

Introduction à BIND

Le paquet BIND offre un serveur et un client DNS. Si vous n'êtes intéressé que par les outils, reportez-vous au chapitre BIND Utilities-9.10.0-P2.

Ce paquet est connu pour se construire correctement sur une plateforme LFS-7.6.

Informations sur le paquet

  • Téléchargement (FTP) : ftp://ftp.isc.org/isc/bind9/9.10.0-P2/bind-9.10.0-P2.tar.gz

  • Somme de contrôle MD5 du téléchargement : 85f5bbd655f7fbb946fe128c5adcc9ca

  • Taille du téléchargement : 8.0 Mo

  • Estimation de l'espace disque requis : 101 Mo (additional 54 Mo to run the test suite)

  • Estimation du temps de construction : 1.6 SBU (additional 24 minutes, processor independent, to run the complete test suite)

Téléchargements supplémentaires

Dépendances de BIND

Facultatives

libcap-2.24 avec PAM, libxml2-2.9.1, MIT Kerberos V5-1.12.2 et OpenSSL-1.0.1i

Moteurs facultatifs de base de données

PostgreSQL-9.3.5, MariaDB-10.0.13 ou MySQL, Berkeley DB-6.1.19, OpenLDAP-2.4.39, et unixODBC-2.3.2

Facultatives (pour lancer la suite de tests)

Net::DNS-0.76 et Net-tools-CVS_20101030 (vous pouvez vous passer de net-tools en utilisant le correctif facultatif pour utiliser iproute2, mais il se peut que les tests IPV6 échouent)

Facultatives (pour reconstruire la documentation)

Doxygen-1.8.8, TeX-Live-20140525, et libxslt-1.1.28

Notes utilisateur : http://wiki.linuxfromscratch.org/blfs/wiki/bind

Installation de BIND

Si vous avez choisi de ne pas installer net-tools, appliquez le correctif iproute2 avec la commande suivante :

patch -Np1 -i ../bind-9.10.0-P2-use_iproute2-1.patch

Installez BIND en lançant les commandes suivantes :

sed -e 's/resolver //'   \
    -e 's/rpz //'        \
    -e 's/statistics //' \
    -e 's/xfer //'       \
    -i bin/tests/system/conf.sh.in &&
./configure --prefix=/usr           \
            --sysconfdir=/etc       \
            --localstatedir=/var    \
            --mandir=/usr/share/man \
            --enable-threads        \
            --with-libtool          \
            --disable-static        \
            --with-randomdev=/dev/urandom &&
make

Exécutez les commandes suivantes pour lancer la suite de tests complète. Tout d'abord, en tant qu'utilisateur root, paramétrez quelques interfaces de test :

bin/tests/system/ifconfig.sh up

Maintenant lancez la suite de tests en tant qu'utilisateur non privilégié :

make check 2>&1 | tee check.log

De nouveau en tant qu'utilisateur root, nettoyez les interfaces de test :

bin/tests/system/ifconfig.sh down

Lancez la commande suivante pour vérifier que les tests ont réussi :

grep "R:PASS" check.log | wc -l

et la commande suivante vérifie les tests qui ont échoués:

grep -A1 "R:FAIL" check.log

Enfin, installez le paquet en tant qu'utilisateur root :

make install &&
chmod -v 0755 /usr/lib/lib{bind9,dns,isc{,cc,cfg},lwres}.so &&
install -v -m755 -d /usr/share/doc/bind-9.10.0-P2/{arm,misc} &&
install -v -m644    doc/arm/*.html \
                    /usr/share/doc/bind-9.10.0-P2/arm &&
install -v -m644 \
    doc/misc/{dnssec,ipv6,migrat*,options,rfc-compliance,roadmap,sdb} \
    /usr/share/doc/bind-9.10.0-P2/misc

Explication des commandes

sed ... bin/tests/system/conf.sh.in: Cette commande enlève un test qui échouent (certain pour des raisons inconnues.

--sysconfdir=/etc : Ce paramètre oblige BIND à chercher des fichiers de configuration dans /etc et non dans /usr/etc.

--enable-threads : Ce paramètre active la fonctionnalité de multi-threading.

--with-libtool : Ce paramètre oblige la construction de bibliothèques et de liens dynamiques vers les binaires installés vers ces bibliothèques.

--with-randomdev=/dev/urandom: Ce paramètre spécifie un périphérique aléatoire non bloquant pour utiliser avec des signatures numériques.

--disable-static: Ce paramètre empêche l'installation des versions statiques des bibliothèques.

chmod 755 /usr/lib/{lib{bind9,dns,isc{,cc,cfg},lwres}.so: Active le bit d'exécution pour empêcher un avertissement lors de l'utilisation de ldd pour vérifier les dépendances de bibliothèque.

cd doc; install ... : Ces commandes installent la documentation supplémentaire du paquet. Ne mettez pas tout ou partie de ces commandes si vous le désirez.

Configuration de BIND

Fichiers de configuration

named.conf, root.hints, 127.0.0, rndc.conf et resolv.conf

Informations de configuration

BIND sera configurer pour se lancer dans une cage chroot en tant qu'utilisateur non privilégié (named). Cette configuration est plus sécurisée dans la mesure où la compromission d'un DNS ne peut toucher que quelques fichiers du répertoire de la variable HOME de l'utilisateur named.

Créez l'utilisateur et le groupe non privilégiés named :

groupadd -g 20 named &&
useradd -c "BIND Owner" -g named -s /bin/false -u 20 named &&
install -d -m770 -o named -g named /srv/named

Paramétrez des fichiers, des répertoires et des périphériques dont a besoin BIND :

cd /srv/named &&
mkdir -p dev etc/namedb/{slave,pz} usr/lib/engines var/run/named &&
mknod /srv/named/dev/null c 1 3 &&
mknod /srv/named/dev/urandom c 1 9 &&
chmod 666 /srv/named/dev/{null,urandom} &&
cp /etc/localtime etc &&
touch /srv/named/managed-keys.bind &&
cp /usr/lib/engines/libgost.so usr/lib/engines &&
[ $(uname -m) = x86_64 ] && ln -sv lib usr/lib64

Le fichier rndc.conf contient des informations pour contrôler les opérations de named avec l'outil rndc. Générez une clé à utiliser dans named.conf et rdnc.conf avec la commande rndc-confgen :

rndc-confgen -r /dev/urandom -b 512 > /etc/rndc.conf &&
sed '/conf/d;/^#/!d;s:^# ::' /etc/rndc.conf > /srv/named/etc/named.conf

Complétez le fichier named.conf à partir duquel named lira l'emplacement des fichiers de zone, le serveur de DNS racine, et les clés DNS sécurisées :

cat >> /srv/named/etc/named.conf << "EOF"
options {
    directory "/etc/namedb";
    pid-file "/var/run/named.pid";
    statistics-file "/var/run/named.stats";
};
zone "." {
    type hint;
    file "root.hints";
};
zone "0.0.127.in-addr.arpa" {
    type master;
    file "pz/127.0.0";
};
// Bind 9 now logs by default through syslog (except debug).
// These are the default logging rules.
logging {
    category default { default_syslog; default_debug; };
    category unmatched { null; };
  channel default_syslog {
      syslog daemon;                      // send to syslog's daemon
                                          // facility
      severity info;                      // only send priority info
                                          // and higher
  };
  channel default_debug {
      file "named.run";                   // write to named.run in
                                          // the working directory
                                          // Note: stderr is used instead
                                          // of "named.run"
                                          // if the server is started
                                          // with the '-f' option.
      severity dynamic;                   // log at the server's
                                          // current debug level
  };
  channel default_stderr {
      stderr;                             // writes to stderr
      severity info;                      // only send priority info
                                          // and higher
  };
  channel null {
      null;                               // toss anything sent to
                                          // this channel
  };
};
EOF

Créez un fichier de zone ayant le contenu suivant :

cat > /srv/named/etc/namedb/pz/127.0.0 << "EOF"
$TTL 3D
@      IN      SOA     ns.local.domain. hostmaster.local.domain. (
                        1       ; Serial
                        8H      ; Refresh
                        2H      ; Retry
                        4W      ; Expire
                        1D)     ; Minimum TTL
                NS      ns.local.domain.
1               PTR     localhost.
EOF

Créez le fichier root.hints avec les commandes suivantes :

[Note]

Note

Faites bien attention à vous assurer qu'il n'y a pas de grands espaces dans ce fichier.

cat > /srv/named/etc/namedb/root.hints << "EOF"
.                       6D  IN      NS      A.ROOT-SERVERS.NET.
.                       6D  IN      NS      B.ROOT-SERVERS.NET.
.                       6D  IN      NS      C.ROOT-SERVERS.NET.
.                       6D  IN      NS      D.ROOT-SERVERS.NET.
.                       6D  IN      NS      E.ROOT-SERVERS.NET.
.                       6D  IN      NS      F.ROOT-SERVERS.NET.
.                       6D  IN      NS      G.ROOT-SERVERS.NET.
.                       6D  IN      NS      H.ROOT-SERVERS.NET.
.                       6D  IN      NS      I.ROOT-SERVERS.NET.
.                       6D  IN      NS      J.ROOT-SERVERS.NET.
.                       6D  IN      NS      K.ROOT-SERVERS.NET.
.                       6D  IN      NS      L.ROOT-SERVERS.NET.
.                       6D  IN      NS      M.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.     6D  IN      A       198.41.0.4
B.ROOT-SERVERS.NET.     6D  IN      A       192.228.79.201
C.ROOT-SERVERS.NET.     6D  IN      A       192.33.4.12
D.ROOT-SERVERS.NET.     6D  IN      A       199.7.91.13
E.ROOT-SERVERS.NET.     6D  IN      A       192.203.230.10
F.ROOT-SERVERS.NET.     6D  IN      A       192.5.5.241
G.ROOT-SERVERS.NET.     6D  IN      A       192.112.36.4
H.ROOT-SERVERS.NET.     6D  IN      A       128.63.2.53
I.ROOT-SERVERS.NET.     6D  IN      A       192.36.148.17
J.ROOT-SERVERS.NET.     6D  IN      A       192.58.128.30
K.ROOT-SERVERS.NET.     6D  IN      A       193.0.14.129
L.ROOT-SERVERS.NET.     6D  IN      A       199.7.83.42
M.ROOT-SERVERS.NET.     6D  IN      A       202.12.27.33
EOF

Le fichier root.hints est une liste de serveurs de DNS racines. Il faut mettre régulièrement à jour ce fichier avec l'outil dig. Vous pouvez obtenir une copie actuelle de root.hints sur ftp://rs.internic.net/domain/named.root. Consultez le the BIND 9 Administrator Reference Manual (manuel de référence de l'administrateur BIND 9) pour des détails.

Créez ou modifiez resolv.conf pour utiliser le nouveau serveur de DNS avec les commandes suivantes :

[Note]

Note

Remplacez <votredomaine.com> par votre propre nom de domaine valide.

cp /etc/resolv.conf /etc/resolv.conf.bak &&
cat > /etc/resolv.conf << "EOF"
search <yourdomain.com>
nameserver 127.0.0.1
EOF

Réglez les droits de la cage chroot avec la commande suivante :

chown -R named:named /srv/named

Script de démarrage

Pour lancer le serveur DNS au démarrage, installez le script de démarrage /etc/rc.d/init.d/bind inclu dans le paquet blfs-bootscripts-20140919.

make install-bind

Maintenant démarrez BIND avec le nouveau script de démarrage :

/etc/rc.d/init.d/bind start

Tester BIND

Testez la nouvelle installation de BIND 9. Cherchez tout d'abord l'adresse de l'hôte local avec dig :

dig -x 127.0.0.1

Maintenant essayez une recherche de nom externe, en observant la différence de vitesse dans des recherches répétées du fait de la mise en cache. Lancez la commande dig deux fois sur la même adresse :

dig www.linuxfromscratch.org &&
dig www.linuxfromscratch.org

Vous pouvez voir presque des résultats instantanés avec les recherches de mise en cache nommées. Consultez le Administrator Reference Manual (manuel de référence de l'administrateur BIND) qui se trouve dans doc/arm/Bv9ARM.html dans l'arborescence des sources du paquet, pour plus d'options de configuration.

Contenu

Programmes installés: arpaname, bind9-config hardlinked to isc-config.sh, ddns-confgen, delv, dig, dnssec-checkds, dnssec-coverage, dnssec-dsfromkey, dnssec-importkey, dnssec-keyfromlabel, dnssec-keygen, dnssec-revoke, dnssec-settime, dnssec-signzone, dnssec-verify, genrandom, host, isc-hmac-fixup, lwresd hardlinked to named, named-checkconf, named-checkzone, named-compilezone (symlink), named-journalprint, named-rrchecker, nsec3hash, nslookup, nsupdate, rndc, rndc-confgen, et tsig-keygen (lien symbolique)
Bibliothèques installées: libbind9.so, libdns.so, libirs.so, libisc.so, libisccc.so, libisccfg.so, and liblwres.so
Répertoires installés: /srv/named, /usr/include/bind9, /usr/include/dns, /usr/include/dst, /usr/include/irs, /usr/include/isc, /usr/include/isccc, /usr/include/isccfg, /usr/include/lwres, /usr/include/pk11, /usr/include/pkcs11, et /usr/share/doc/bind-9.10.0-P2

Descriptions courtes

dig

interroge les serveurs de DNS.

dnssec-keygen

est un générateur de clés pour du DNS sécurisé.

dnssec-signzone

génère des versions signées des fichiers de zone.

host

est un outil de recherche de DNS.

lwresd

est un serveur de DNS pour la mise en cache seulement pour l'utilisation d'un processus local.

named

est le démon du serveur de DNS.

named-checkconf

vérifie la syntaxe des fichiers named.conf.

named-checkzone

vérifie la validité d'un fichier de zone.

nslookup

est un programme utilisé pour interroger des serveurs de nom de domaine sur Internet.

nsupdate

est utilisé pour soumettre des demandes de mise à jour de DNS.

rndc

contrôle le fonctionnement de BIND.

rndc-confgen

génère des fichiers rndc.conf.

Last updated on : 2013-03-26 17:39:48 +010