Reverse DNS des adresses IP privées avec Bind

Tout administrateur d’un réseau d’adresses IP se doit de configurer des reverses DNS pour l’ensemble des adresses IP de son réseau. En effet, de nombreux services comme MySQL, Postfix, OpenSSH, CUPS… se servent des reverses DNS pour leur fonctionnement. Ceci est d’autant plus important si il s’agit d’adresses IP privés (10.0.0.0/8, 172.16.0.0/12 et 192.168.0.0/16) car la tentative de résolution DNS se propagera sur Internet ce qui est théoriquement interdit. Plus grave, la résolution DNS échouera grâce aux réponses NXDOMAIN des serveurs blackhole d’IANA (qui sont là pour limiter ce genre de requêtes grâce au cache DNS) et le problème ne sera donc pas apparent ! Sauf qu’aller faire des requêtes DNS à l’autre bout du monde sur des serveurs plus ou moins fiables à chaque requête MySQL (exemple volontairement exagéré) n’est évidemment pas la meilleure idée. Cela peut dégrader les performances mais surtout cela provoquer de lourds dysfonctionnements (un serveur MySQL complètement hors-service par exemple…) si ces requêtes DNS ne fonctionnent pas (et ça n’est pas rare que cela arrive). Pour éviter cela, la réponse est donc de configurer une résolution DNS avec un logiciel comme Bind. L’idée est même de configurer systématiquement les reverses DNS de chaque bloc d’IP non routables. On ajoutera donc dans la configuration de Bind les blocs suivants :

zone "10.in-addr.arpa" {
        type master;
        file "/etc/bind/db.nxdomain";
};

zone "168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/db.nxdomain";
};

zone "16.172.in-addr.arpa" {
        type master;
        file "/etc/bind/db.nxdomain";
};

zone "17.172.in-addr.arpa" {
        type master;
        file "/etc/bind/db.nxdomain";
};

zone "18.172.in-addr.arpa" {
        type master;
        file "/etc/bind/db.nxdomain";
};

zone "19.172.in-addr.arpa" {
        type master;
        file "/etc/bind/db.nxdomain";
};

zone "20.172.in-addr.arpa" {
        type master;
        file "/etc/bind/db.nxdomain";
};

zone "21.172.in-addr.arpa" {
        type master;
        file "/etc/bind/db.nxdomain";
};

zone "22.172.in-addr.arpa" {
        type master;
        file "/etc/bind/db.nxdomain";
};

zone "23.172.in-addr.arpa" {
        type master;
        file "/etc/bind/db.nxdomain";
};

zone "24.172.in-addr.arpa" {
        type master;
        file "/etc/bind/db.nxdomain";
};

zone "25.172.in-addr.arpa" {
        type master;
        file "/etc/bind/db.nxdomain";
};

zone "26.172.in-addr.arpa" {
        type master;
        file "/etc/bind/db.nxdomain";
};

zone "27.172.in-addr.arpa" {
        type master;
        file "/etc/bind/db.nxdomain";
};

zone "28.172.in-addr.arpa" {
        type master;
        file "/etc/bind/db.nxdomain";
};

zone "29.172.in-addr.arpa" {
        type master;
        file "/etc/bind/db.nxdomain";
};

zone "30.172.in-addr.arpa" {
        type master;
        file "/etc/bind/db.nxdomain";
};

zone "31.172.in-addr.arpa" {
        type master;
        file "/etc/bind/db.nxdomain";
};

Avec un fichier db.nxdomain quasiment vide :

$TTL 1800
@ IN    SOA     ns.example.com. dnsmaster.example.com. (
                2011111111      ;serial
                3h              ;refresh
                1h              ;retry
                1w              ;expire
                1h )            ;minimum

        IN      NS      localhost.

Ainsi, toute demande de reverse DNS sur une adresse IP privée restera en « local » et obtiendra immédiatement une réponse NXDOMAIN :

% dig -x 10.42.51.21

;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 53753
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;21.51.42.10.in-addr.arpa.      IN      PTR

;; AUTHORITY SECTION:
10.in-addr.arpa.  1800 IN SOA  ns.example.com. dnsmaster.example.com. 2011111111 10800 3600 604800 3600

;; Query time: 1 msec

Indispensable sur les réseaux avec des milliers de machines mais aussi les petits réseaux de quelques machines.

One thought on “Reverse DNS des adresses IP privées avec Bind

Comments are closed.