BIND-9.16.5

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

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

Informations sur le paquet

  • Téléchargement (HTTP) :

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

  • Somme de contrôle MD5 du téléchargement : 5ef3e773f671886a40148c4dd01d017a

  • Taille du téléchargement : 3.3 Mo

  • Estimation de l'espace disque requis : 123 Mo (23 Mo installés)

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

Dépendances de BIND

Requises

libuv-1.38.1

Recommandées

Facultatives

cURL-7.71.1, libidn2-2.3.0, libxml2-2.9.10, MIT Kerberos V5-1.18.2, cmocka, geoip et Sphinx

Moteurs facultatifs de base de données

Berkeley DB-5.3.28, MariaDB-10.5.5 ou MySQL, OpenLDAP-2.4.51, PostgreSQL-12.4 et unixODBC-2.3.7

Facultatives (pour lancer la suite de tests)

Net-DNS-1.26

Facultatives (pour reconstruire la documentation)

Doxygen-1.8.19, libxslt-1.1.34 et texlive-20200406 (ou install-tl-unx)

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

Installation de BIND

Pour vous assurer que BIND construira dnssec-keymgr, installez un module python en tant qu'utilisateur root :

pip3 install ply

Installez BIND en lançant les commandes suivantes :

./configure --prefix=/usr           \
            --sysconfdir=/etc       \
            --localstatedir=/var    \
            --mandir=/usr/share/man \
            --with-libtool          \
            --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 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.26 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

Explication des commandes

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

--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-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-linux-caps : BIND peut aussi être construit sans la prise en charge des capacités avec cette option, au prix d'une certaine perte de sécurité.

--with-dlz-{mysql,bdb,filesystem,ldap,odbc,stub} : Utilisez l'une (ou plusieurs) de ces options pour ajouter le support des zones chargeables dynamiquement. Pour plus d'information référez-vous à bind-dlz.sourceforge.net.

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

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

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 sur https://kb.isc.org/docs/bind-916-administrative-reference-manual, pour plus d'options de configuration.

Contenu

Programmes installés: arpaname, ddns-confgen, delv, dig, dnssec-cds, dnssec-checkds, dnssec-coverage, dnssec-dsfromkey, dnssec-importkey, dnssec-keyfromlabel, dnssec-keygen, dnssec-keymgr, dnssec-revoke, dnssec-settime, dnssec-signzone, dnssec-verify, host, mdig, named-checkconf, named-checkzone, named-compilezone (lien symbolique), named-journalprint, named-rrchecker, named-nzd2nzf, 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 et libisccfg.so
Répertoires installés: /usr/include/{bind9,dns,dst,irs,isc,isccc,isccfg,ns,pk11,pkcs11} 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-checkds

est un outil de vérification de cohérence de délégation DNSSEC.

dnssec-coverage

vérifie que les clés DNSSEC pour une zone donnée ou un ensemble de zones ont des métadonnées de temps initialisées correctement pour assurer qu'il n'y aura pas d'espaces futures dans la couverture DNSSEC.

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

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

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.

Last updated on 2020-08-25 00:39:00 +0000