BIND-9.20.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.20.0.

Ce paquet est connu pour pouvoir être construit et fonctionner correctement avec une plateform 12.2.

Informations sur le paquet

  • Téléchargement (HTTP) : https://ftp.isc.org/isc/bind9/9.20.0/bind-9.20.0.tar.xz

  • Téléchargement (FTP) :

  • Somme de contrôle MD5 du téléchargement : 2c8d94d1524cbbae4d76cd74955bb6d9

  • Taille du téléchargement : 5,5 Mo

  • Estimation de l'espace disque requis : 138 Mo (22 Mo installés)

  • Estimation du temps de construction : 0,5 SBU (avec parallélisme = 4 ; environ 40 minutes, plutôt indépendants du processeur, pour lancer la suite de tests complète)

Dépendances de BIND

Requises

liburcu-0.14.0 et libuv-1.48.0

Recommandées

Facultatives

cURL-8.9.1, libidn2-2.3.7, libxml2-2.13.3, lmdb-0.9.31, MIT Kerberos V5-1.21.3, pytest-8.3.2, sphinx-8.0.2 (requis pour construire la documentation), cmocka, geoip, jemalloc, w3m

Facultatives (pour lancer la suite de tests)

Net-DNS-1.46

Notes des auteurs : https://wiki.linuxfromscratch.org/blfs/wiki/bind

Installation de BIND

[Note]

Note

À partir de bind-9.18.20, les adresses IP pour B.ROOT-SERVERS.NET ont changé.

Installez BIND en exécutant les commandes suivantes :

./configure --prefix=/usr           \
            --sysconfdir=/etc       \
            --localstatedir=/var    \
            --mandir=/usr/share/man \
            --disable-static        &&
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 tests peut indiquer des tests sautés en fonction des options de configuration utilisées. Certains tests sont indiqués « UNTESTED » ou échouent si Net-DNS-1.46 n'est pas installé. Un test, dnssec, est connu pour échouer. Les tests nécessitent le module python hypothesis, qui n'est pas dans BLFS. Pour contourner cela, les instructions ci-dessous créent un environnement Python virtuel puis y installe le module avant d'exécuter les tests. Pour exécuter les tests, en tant qu'utilisateur non privilégié, lancez :

python3 -m venv --system-site-packages testenv &&
source testenv/bin/activate                    &&
pip3 install hypothesis                        &&
make -k check                                  &&
deactivate

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

Explication des commandes

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

--with-libidn2 : Ce paramètre active le support d'IDNA2008 (noms de domaines internationalisés dans les applications).

--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-doh : utilisez cette option si vous n'avez pas installé nghttp2-1.62.1 et n'avez pas besoin de la prise en charge de DNS sur HTTPS.

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

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/named/{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

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 -a -b 512 -t /srv/named

Créez 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/named";
    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 enregistre maintenant par défaut à travers syslog (sauf le débogage).
// Voici les règles de journalisation par défaut.

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/named/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/named/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       170.247.170.2
B.ROOT-SERVERS.NET.     6D  IN      AAAA    2801:1b8:10::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 https://www.internic.net/domain/named.root. Consultez le 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 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-20240416 :

make install-bind

Maintenant démarrez BIND en exécutant 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 des résultats presque instantanés avec les recherches de mise en cache nommées. Consultez le manuel de référence de l'administrateur BIND pour plus d'options de configuration.

Manuel de référence de l'administrateur

La documentation ARM (manuel de référence de l'administrateur, à ne pas confondre avec l'architecture processeur) est incluse dans les sources de ce paquet. La documentation est au format .rst ce qui signifie qu'elle peut être convertie en un format humainement lisible si sphinx-8.0.2 est installé.

Lorsque vous configurez BIND, surtout s'il va opérer dans un scénario réel en direct, il est fortement recommandé de consulter la documentation ARM. ISC fournit une excellente documentation à jour avec chaque version pour qu'il soit facile de la consulter ou de la télécharger — il n'y a aucune excuse pour le pas lire la doc. Les formats fournis par ISC sont le PDF, epub et html sur https://downloads.isc.org/isc/bind9/9.20.0/doc/arm/.

Contenu

Programmes installés: arpaname, ddns-confgen, delv, dig, dnssec-cds, dnssec-dsfromkey, dnssec-importkey, dnssec-keyfromlabel, dnssec-keygen, dnssec-ksr, dnssec-revoke, dnssec-settime, dnssec-signzone, dnssec-verify, host, mdig, named, named-checkconf, named-checkzone, named-compilezone, named-journalprint, named-nzd2nzf, named-rrchecker, nsec3hash, nslookup, nsupdate, rndc, rndc-confgen et tsig-keygen (lien symbolique)
Bibliothèques installées: libdns.so, libisc.so, libisccc.so, libisccfg.so et libns.so
Répertoires installés: /usr/include/{dns,dst,irs,isc,isccc,isccfg,ns}, /usr/lib/bind et /srv/named

Descriptions courtes

arpaname

traduit les adresses IP vers les noms ARPA correspondants

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

change les enregistrements DS d'une zone enfant à partir d'un CDS/CDNSKEY

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

s'assure de la bonne couverture DNSKEY en fonction d'une politique donnée

dnssec-ksr

crée des fichiers de réponse de clé signée (SKR) pour des configuration KSK hors-ligne

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

host

est un outil de recherche de DNS

mdig

est une version de dig qui permet plusieurs requêtes en même temps

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

named-nzd2nzf

convertit une base de données NZD vers le format texte NZF

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