BIND-9.12.0

Introduction à BIND

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

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

Informations sur le paquet

  • Téléchargement (HTTP) :

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

  • Somme de contrôle MD5 du téléchargement : 8679dd7a45920cea3761c5586d84244b

  • Taille du téléchargement : 8.9 Mo

  • Estimation de l'espace disque requis : 103 Mo (plus 12 Mo pour les tests)

  • Estimation du temps de construction : 0.8 SBU (avec parallélisme = 4 ; 30+ minutes supplémentaires, indépendamment du processeur, pour lancer la suite de tests complète)

Téléchargements supplémentaires

Dépendances de BIND

Facultatives

libcap-2.25 with PAM, libxml2-2.9.7, MIT Kerberos V5-1.16 et geoip

Moteurs facultatifs de base de données

Berkeley DB-6.2.32, MariaDB-10.2.13 ou MySQL, OpenLDAP-2.4.45, PostgreSQL-10.2 et unixODBC-2.3.5

Facultatives (pour lancer la suite de tests)

Net::DNS-1.15 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.14, libxslt-1.1.32 et texlive-20170524 (ou install-tl-unx)

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.12.0-use_iproute2-1.patch

Installez BIND en lançant les commandes suivantes :

./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 :

[Note]

Note

Si IPv6 n'est pas activé dans le noyau, il y aura plusieurs messages d'erreur : "RTNETLINK answers: Operation not permitted". Ces messages n'affectent pas les tests.

bin/tests/system/ifconfig.sh up

La suite de test peut indiquer des tests sautés en fonction des options de configuration utilisées. Certains tests sont indiqués « UNTESTED » si Net::DNS-1.15 n'est pas installé. Pour exécuter les tests en tant qu'utilisateur non privilégié, lancez :

make -k check

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

bin/tests/system/ifconfig.sh down

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

make install &&

install -v -m755 -d /usr/share/doc/bind-9.12.0/{arm,misc} &&
install -v -m644    doc/arm/*.html \
                    /usr/share/doc/bind-9.12.0/arm &&
install -v -m644    doc/misc/{dnssec,ipv6,migrat*,options,rfc-compliance,roadmap,sdb} \
                    /usr/share/doc/bind-9.12.0/misc

Explication des commandes

--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.

--enable-fetchlimit : Utilisez cette option si vous voulez pouvoir limiter le taux des demandes clientes récursives. Cela peut être utilisé sur les serveurs recevant beaucoup de demandes.

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

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 sur la configuration

BIND sera configuré 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 :

mkdir -p /srv/named &&
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

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 d'espaces supplémentaires en début de ligne 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
A.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:503:ba3e::2:30
B.ROOT-SERVERS.NET.     6D  IN      A       192.228.79.201
B.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:200::b
C.ROOT-SERVERS.NET.     6D  IN      A       192.33.4.12
C.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:2::c
D.ROOT-SERVERS.NET.     6D  IN      A       199.7.91.13
D.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:2d::d
E.ROOT-SERVERS.NET.     6D  IN      A       192.203.230.10
E.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:a8::e
F.ROOT-SERVERS.NET.     6D  IN      A       192.5.5.241
F.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:2f::f
G.ROOT-SERVERS.NET.     6D  IN      A       192.112.36.4
G.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:12::d0d
H.ROOT-SERVERS.NET.     6D  IN      A       198.97.190.53
H.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:1::53
I.ROOT-SERVERS.NET.     6D  IN      A       192.36.148.17
I.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:7fe::53
J.ROOT-SERVERS.NET.     6D  IN      A       192.58.128.30
J.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:503:c27::2:30
K.ROOT-SERVERS.NET.     6D  IN      A       193.0.14.129
K.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:7fd::1
L.ROOT-SERVERS.NET.     6D  IN      A       199.7.83.42
L.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:9f::42
M.ROOT-SERVERS.NET.     6D  IN      A       202.12.27.33
M.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:dc3::35
EOF

Le fichier root.hints est une liste de serveurs de noms 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 manuel de référence de l'administrateur BIND 9 pour des détails, inclus dans chaque archive source de BIND 9 distribuée par ISC, dans les formats HTML et PDF, et disponible sur BIND 9 Administrator Reference Manual.

Créez ou modifiez resolv.conf pour utiliser le nouveau serveur 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 inclus dans le paquet blfs-bootscripts-20180105.

make install-bind

Maintenant démarrez BIND en lançant les commandes suivantes :

/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 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-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 (lien symbolique), 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 et liblwres.so
Répertoires installés: /usr/include/{bind9,dns,dst,irs,isc,isccc,isccfg,lwres,pk11,pkcs11}, /usr/share/doc/bind-9.12.0 et /srv/named

Descriptions courtes

arpaname

traduit les adresses IP vers les noms ARPA correspondants.

bind9-config

est lié en dur vers isc-config.sh.

ddns-confgen

génère une clé qui est utilisée par nsupdate et named.

delv

est un nouvel outil de débogage qui est le successeur de dig.

dig

interroge les serveurs DNS.

dnssec-dsfromkey

affiche l'enregistrement de ressources (RR) d'un signataire (DS).

dnssec-importkey

lit un enregistrement DNSKEY public et génère une paire de fichiers .key/.private.

dnssec-keyfromlabel

prends les clés avec le label donné depuis un matériel de cryptographie et construit les fichiers de clé pour DNSSEC.

dnssec-keygen

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

dnssec-revoke

initialise le bit de révocation sur une clé DNSSEC.

dnssec-settime

initialise la métadonnée de temps d'une clé DNSSEC.

dnssec-signzone

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

dnssec-verify

vérifie qu'une zone est complètement signée pour chaque algorithme trouvé dans DNSKEY RRset pour la zone, et que les chaînes NSEC / NSEC3 sont complètes.

genrandom

génère un fichier contenant des données aléatoires.

host

est un outil de recherche de DNS.

isc-config.sh

affiche les informations relatives à une version installée de ISC BIND.

isc-hmac-fixup

corrige les clés HMAC générées par les anciennes versions de BIND.

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.

named-compilezone

est similaire à named-checkzone, mais il enregistre aussi les contenus de la zone dans un fichier spécifié dans un format donné.

named-journalprint

affiche le journal de zone dans un format lisible.

named-rrchecker

lit un enregistrement de ressource DNS individuel depuis l'entrée standard et vérifie si sa syntaxe est correcte.

nsec3hash

génère un hash NSEC3 basé sur un ensemble de paramètres NSEC3.

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.

tsig-keygen

est un lien symbolique vers ddns-confgen.

Last updated on 2018-02-22 06:51:10 +0100