Bind

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Serveur DNS (résolution de noms)
Paquet bind (démon named)
Fichier principal /etc/named.conf
Ports 53/tcp+udp (DNS), 953/tcp (rndc)
Voir aussi Bind DNS server · Options bind · DNS client tools · Bind rsyslog

BIND (Berkeley Internet Name Domain) est le serveur DNS de référence sous Linux — celui que l'on trouve derrière la majorité des zones DNS auto-hébergées sur RHEL/CentOS et Debian/Ubuntu. Le démon s'appelle named, sa configuration principale est /etc/named.conf, et les données de zone (enregistrements A, MX, CNAME…) vivent dans des fichiers de zone séparés, typiquement sous /var/named.

Cette page couvre l'installation et une configuration minimale à zone unique. Pour un déploiement maître/esclave avec transferts sécurisés et DNS dynamique, voir Bind DNS server.

Installation

yum install bind bind-utils     # RHEL/CentOS
apt install bind9 dnsutils      # Debian/Ubuntu

Le paquet bind-utils (RHEL) / dnsutils (Debian) fournit les outils client (dig, host, nslookup) détaillés dans DNS client tools. Le détail des sous-paquets (bind-chroot, bind-sdb, bind-dyndb-ldap…) et des fichiers de configuration standard est dans Options bind.

Configuration minimale (zone unique)

Exemple d'un named.conf déclarant une zone directe et sa zone inverse associée :

options {
    directory "/var/named";
    // redirige vers le résolveur du réseau local ce que ce serveur ne sait pas résoudre
    forwarders { 192.168.0.1; };

    statistics-file "/var/named/data/named_stats.txt";
    dump-file "/var/named/data/cache_dump.db";
};
include "/etc/rndc.key";

zone "localdomain" IN {
    type master;
    file "localdomain.zone";
    allow-update { none; };
};

zone "example.com" IN {
    type master;
    file "example.com.zone";
    allow-update { none; };
};

zone "0.168.192.in-addr.arpa" IN {
    type master;
    file "0.168.192.in-addr-arpa.zone";
    allow-update { none; };
};

Fichier de zone directe correspondant (/var/named/example.com.zone) :

$ORIGIN example.com.
$TTL 86400

@ IN SOA ns1.example.com. admin.example.com. (
        2024010101      ; serial       - (yyyymmdd+s)
        3H              ; refresh
        15M             ; retry
        1W              ; expiry
        1D )            ; minimum

              IN NS   ns1.example.com.
ns1           IN A    192.168.0.120
www           IN A    192.168.0.120
mail          IN A    192.168.0.121

Le numéro de serial doit être incrémenté à chaque modification de zone, sans quoi les serveurs esclaves ne détecteront pas le changement (voir la notion de zone SOA détaillée dans Options bind).

Résolveur côté client

# /etc/resolv.conf
nameserver 192.168.0.120
search example.com

Sur une machine où le réseau est géré par NetworkManager/network-scripts, ajouter PEERDNS=no dans le fichier ifcfg-ethX de l'interface pour empêcher que le DHCP n'écrase ce resolv.conf à chaque renouvellement de bail.

Démarrage et test

systemctl enable --now named     # RHEL7+/systemd
# service named start ; chkconfig named on     # RHEL5/6 (legacy, voir Chkconfig)

nslookup www.example.com 127.0.0.1

Voir aussi

  • Bind DNS server — déploiement maître/esclave, transferts de zone signés (TSIG), DNS dynamique
  • Options bind — panorama des paquets, fichiers de configuration standard et options courantes
  • DNS client toolsdig, test de transfert de zone, résolution récursive complète
  • Bind rsyslog — redirection des journaux de named vers un fichier dédié
  • Unbound — résolveur DNS alternatif, plus simple pour un usage cache-only