Bind9 : Problèmes de configuration DNS

Bonjour à tous !

Je vous écris en dernier recours car après avoir lu et essayé toute la documentation du web (y compris les messages sur ce forum), je n’arrive toujours pas à mes fins.

Depuis quelques temps, je bosse sur une Cubietruck, que j’ai nommé Alison pour en faire un petit serveur local (DNS, VPN, web, print, nextcloud,…). Elle tourne sous armbian 5.25, une distord basée sur Debian 8 et est complètement à jour.

Mon but actuel est de configurer le DNS avec Bind pour configurer mon réseau local avec des adresses du style b.lan (ayant plusieurs sous Mac OS, j’ai trouvé judicieux de ne pas utiliser de .local) pour remplacer mes 10.0.0.X et d’avoir une zone DNS pour l’extérieur qui serait b.com (nom de domaine fictif représentant un nom de domaine que je loue). Cela fait 2 semaines maintenant que je bloque sur la configuration sur DNS avec bind9, même en ayant lu toute la documentation que je trouvais online et en passant les tests named-checkconf et named-checkzone. J’ai configuré un fichier db.b.lan qui résout les IP en nom de domaine et un fichier db.b.lan.inv qui résous les noms de domaine en IP. Je m’occupe pour l’instant uniquement de b.lan et si ça marche, je m’occuperai de b.com.
En lançant un sudo /etc/init.d/bind9 status, j’ai le message suivant :

● bind9.service - BIND Domain Name Server
    Loaded: loaded (/lib/systemd/system/bind9.service; enabled)
   Drop-In: /run/systemd/generator/bind9.service.d
            └─50-insserv.conf-$named.conf
    Active: failed (Result: exit-code) since Sat 2017-02-11 11:37:44 CET; 10s ago
      Docs: man:named(8)
   Process: 14749 ExecStop=/usr/sbin/rndc stop (code=exited, status=1/FAILURE)
   Process: 14729 ExecStart=/usr/sbin/named -f -u bind (code=exited, status=1/FAILURE)
  Main PID: 14729 (code=exited, status=1/FAILURE)

Feb 11 11:37:44 alison.b.com named[14729]: adjusted limit on open files from 4096 to 1048576
Feb 11 11:37:44 alison.b.com named[14729]: found 2 CPUs, using 2 worker threads
Feb 11 11:37:44 alison.b.com named[14729]: using 2 UDP listeners per interface
Feb 11 11:37:44 alison.b.com named[14729]: using up to 4096 sockets
Feb 11 11:37:44 alison.b.com named[14729]: loading configuration from '/etc/bind/named.conf'
Feb 11 11:37:44 alison.b.com named[14729]: /etc/bind/named.conf.default-zones:2: when using 'view' statements, all zones must be in views
Feb 11 11:37:44 alison.b.com systemd[1]: bind9.service: main process exited, code=exited, status=1/FAILURE
Feb 11 11:37:44 alison.b.com rndc[14749]: rndc: connect failed: 127.0.0.1#953: connection refused
Feb 11 11:37:44 alison.b.com systemd[1]: bind9.service: control process exited, code=exited status=1
Feb 11 11:37:44 alison.b.com systemd[1]: Unit bind9.service entered failed state.

J’ai initialement suivi ce tutoriel (https://www.howtoforge.com/two_in_one_dns_bind9_views) car il me semblait qu’il correspondait à ce que je souhaitais faire.
J’aurai bien voulu mettre plus de liens (cubietruck, armbian), mais étant nouveau, je n’ai droit qu’à 2 liens par message.
Pourriez-vous m’aider ? Auriez-vous besoin de voir certains fichiers ?

Merci d’avance !

Amadeous

P.S.: Le sujet est similaire à ce sujet.

Qu’est-ce qu’une “distord” ?

“local” étant traité de façon particulière par le protocole Zeroconf qui n’est pas spécifique à MacOS mais est aussi implémenté par avahi sur Gnu/Linux, il est sage de ne jamais l’utiliser comme domaine DNS. Et puis c’est si impersonnel (tout comme “lan”) et il serait dommage de ne pas choisir un nom de domaine personnalisé pour une utilisation dans un réseau local indépendant.

En général, on fait plutôt l’inverse.
Et un fichier de zone inverse qui résoud les adresses en noms n’est pas nommé en fonction des noms mais des adresses, comme le nom de la zone (les adresses d’une plage pouvant pointer vers des noms appartenant à des domaines différents).

Difficile de répondre sans connaître le contenu des fichiers de configuration de BIND. Mais le message suggère qu’une zone serait définie en dehors d’une “vue” (view) alors que lorsqu’on utilise des vues toutes les zones doivent être définies dans des vues, y compris les zones par défaut.

Je voulais dire une distro, mais le correcteur orthographique me l’a changé en distord.

Merci pour ces informations.

Oui, je me suis trompé, le db.b.lan résout les IP en nom de domaine et le db.b.lan.inv résout les noms de domaine en IP.

D’après ce que j’ai compris, c’est pas un warning très important. Il est là car il y a des view que je n’utilise pas dans le fichier de base named.conf.default-zones. Je n’ai pas modifié ce fichier.

Voici le contenu des fichiers de configurations:

named.conf.local (qui est appelé par named.conf) :

// We include the rndc key
include "/etc/bind/rndc.key";

// Allow 127.0.0.1:953
controls {
   inet 127.0.0.1 port 953 allow { localhost; };
};

// Below are the internal configuration 
acl internals {
   127.0.0.0/8;
   10.0.0.0/24;
   10.8.0.0/24;
};

view "internal" {
   match-clients { internals; };
   zone "b.lan" {
      type master;
      allow-update { internals; };
      allow-transfer { internals; };
      file "/etc/bind/db/db.b.lan";
   };

   // Reverse DNS
   zone "0.0.10.in-addr.arpa" {
      type master;
      allow-update { internals; };
      allow-transfer { internals; };
      file "/etc/bind/db/db.b.lan.inv";
   };
};

//view "external" {
//   match-clients { any; };
//   recursion no;
//   zone "b.com" {
//      type master;
//      file "/etc/bind/db/db.b.com";
//   };
//};

/etc/bind/db/db.b.lan :

; b.lan
$TTL     604800
@        IN       SOA   alison.b.lan. root.b.lan. (
                      201702111 ; Serial
                         604800 ; Refresh
                          86400 ; Retry
                        2419200 ; Expire
                         604800); Negative cache TTL
; Pour que le serveur se retrouve
@        IN       NS    alison.b.lan.
alison   IN       A     10.0.0.100

; Liste des machines sur le réseau
router   IN       A     10.0.0.1
hp       IN       A     10.0.0.6
nas      IN       A     10.0.0.75

; Alias
www      IN       CNAME alison
cloud    IN       CNAME alison

/etc/bind/db/db.b.lan.inv :

;
; BIND reverse data file for local loopback interface
;
$TTL	604800
@  	IN	SOA	alison.b.lan. root.b.lan. (
                      201702111  ; Serial
		   	 604800  ; Refresh
		   	  86400	 ; Retry
		   	2419200  ; Expire
		   	 604800 ); Negative Cache TTL
;
@	   IN	NS    alison.b.lan.
1     IN PTR   router.b.lan.
6     IN PTR   hp.b.lan.
75    IN PTR   nas.b.lan.
100   IN PTR   alison.b.lan.

Est-ce que cela vous aide ?
Merci de prendre le temps de m’aider !

Décidémment, tu as du mal. Tu t’es encore trompé, c’est l’inverse de ce que contiennent les fichiers de zone que tu montres plus bas.

Ça n’a pas l’air d’être un warning anodin puisque BIND s’arrête juste après. Essaie de commenter l’include correspondant dans named.conf.

Comment ça ? Il n’y a aucune vue définie dans ce fichier.

Donc je devrais inverser les noms de fichiers et leurs appels dans le named.conf.local ?

J’ai commenté la ligne include "/etc/bind/named.conf.default-zones"; dans named.conf et ça semble marcher… Il m’affiche cela :

● bind9.service - BIND Domain Name Server
   Loaded: loaded (/lib/systemd/system/bind9.service; enabled)
  Drop-In: /run/systemd/generator/bind9.service.d
           └─50-insserv.conf-$named.conf
   Active: active (running) since Sat 2017-02-11 18:37:50 CET; 3s ago
     Docs: man:named(8)
  Process: 877 ExecStop=/usr/sbin/rndc stop (code=exited, status=1/FAILURE)
 Main PID: 1714 (named)
   CGroup: /system.slice/bind9.service
           └─1714 /usr/sbin/named -f -u bind

Feb 11 18:37:50 alison.b.com named[1714]: automatic empty zone: view internal: 9.E.F.IP6.ARPA
Feb 11 18:37:50 alison.b.com named[1714]: automatic empty zone: view internal: A.E.F.IP6.ARPA
Feb 11 18:37:50 alison.b.com named[1714]: automatic empty zone: view internal: B.E.F.IP6.ARPA
Feb 11 18:37:50 alison.b.com named[1714]: automatic empty zone: view internal: 8.B.D.0.1.0.0.2.IP6.ARPA
Feb 11 18:37:50 alison.b.com named[1714]: command channel listening on 127.0.0.1#953
Feb 11 18:37:50 alison.b.com named[1714]: managed-keys-zone/internal: loaded serial 0
Feb 11 18:37:50 alison.b.com named[1714]: zone 0.0.10.in-addr.arpa/IN/internal: loaded serial 201702111
Feb 11 18:37:50 alison.b.com named[1714]: zone b.lan/IN/internal: loaded serial 201702111
Feb 11 18:37:50 alison.b.com named[1714]: all zones loaded
Feb 11 18:37:50 alison.b.com named[1714]: running

Etrange… Chez moi, le fichier named.conf.default-zones contient :

// prime the server with knowledge of the root servers
zone "." {
	type hint;
	file "/etc/bind/db.root";
};

// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912

zone "localhost" {
	type master;
	file "/etc/bind/db.local";
};

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

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

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

Est-ce que le comportement du serveur est normal maintenant ? Malgré le (code=exited, status=1/FAILURE) dans le Process ?

Non. C’est toi qui te trompes à chaque fois en décrivant le rôle des fichiers. Relis-toi attentivement.

Il ne contient que des zones, pas des vues.[quote=“amadeous, post:5, topic:72647”]
Est-ce que le comportement du serveur est normal maintenant ? Malgré le (code=exited, status=1/FAILURE) dans le Process ?
[/quote]
C’est de la cuisine propre à systemd à laquelle je n’entends rien.
Pour vérifier si le serveur est opérationnel, il faut tester en lui soumettant des requêtes. Après tout, c’est bien le but, non ?

Ton serveur est marqué comme chargé et actif par le retour de :

# systemctl status bind9

Pour avoir plus d’infos sur l’echec de l’executable rndc, tu peux regarder le retour de la commande suivante :

# journalctl -u bind9

Effectivement… :sweat_smile: Merci de me l’avoir fait remarquer !

Tout à fait ! Depuis Alison, je peux ping des machines inscrite dans ce fichier (comme mon routeur ou mon nas), mais cela ne marche pas depuis les autres appareils de mon réseau local. Est-ce qu’Alison n’est pas supposé broadcaster qu’elle est un DNS afin que les autres appareils l’utilisent ?
J’ai remarqué que sur l’interface de mon routeur fourni par mon FAI, je peux renseigner un DNS. Est-ce qu’il faut que je mette l’adresse d’Alison afin que les adresses locales (qui passent de toute façon par le routeur qui fait passerelle) puisse résoudre les adresses locales ?

Merci @GOGI pour ta réponse ! J’ai remarqué qu’il y avait les lignes suivantes :

Feb 11 18:37:50 alison.b.com named[1714]: zone 'b.lan' allows updates by IP address, which is insecure
Feb 11 18:37:50 alison.b.com named[1714]: zone '0.0.10.in-addr.arpa' allows updates by IP address, which is insecure

Que puis-je faire pour que ce soit pas “insecure” ?

Il me met également beaucoup de lignes comme suit :

Feb 11 18:37:50 alison.b.com named[1714]: automatic empty zone: view internal: 10.IN-ADDR.ARPA
Feb 11 18:37:50 alison.b.com named[1714]: automatic empty zone: view internal: 26.172.IN-ADDR.ARPA
Feb 11 18:37:50 alison.b.com named[1714]: automatic empty zone: view internal: 81.100.IN-ADDR.ARPA
Feb 11 18:37:50 alison.b.com named[1714]: automatic empty zone: view internal: 0.IN-ADDR.ARPA
Feb 11 18:37:50 alison.b.com named[1714]: automatic empty zone: view internal: 127.IN-ADDR.ARPA
Feb 11 18:37:50 alison.b.com named[1714]: automatic empty zone: view internal: 2.0.192.IN-ADDR.ARPA
100.51.198.IN-ADDR.ARPA
Feb 11 18:37:50 alison.b.com named[1714]: automatic empty zone: view internal: 113.0.203.IN-ADDR.ARPA
Feb 11 18:37:50 alison.b.com named[1714]: automatic empty zone: view internal: 255.255.255.255.IN-ADDR.ARPA
Feb 11 18:37:50 alison.b.com named[1714]: automatic empty zone: view internal: 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA
Feb 11 18:37:50 alison.b.com named[1714]: automatic empty zone: view internal: 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA
Feb 11 18:37:50 alison.b.com named[1714]: automatic empty zone: view internal: D.F.IP6.ARPA
Feb 11 18:37:50 alison.b.com named[1714]: automatic empty zone: view internal: 8.E.F.IP6.ARPA
Feb 11 18:37:50 alison.b.com named[1714]: automatic empty zone: view internal: 9.E.F.IP6.ARPA
Feb 11 18:37:50 alison.b.com named[1714]: automatic empty zone: view internal: A.E.F.IP6.ARPA
Feb 11 18:37:50 alison.b.com named[1714]: automatic empty zone: view internal: B.E.F.IP6.ARPA
Feb 11 18:37:50 alison.b.com named[1714]: automatic empty zone: view internal: 8.B.D.0.1.0.0.2.IP6.ARPA

Il y a beaucoup plus de lignes, chargeant plein d’adresses inutiles du type xxx.yyy.IN-ADDR.ARPA.
Est-ce que c’est normal ? Je dois enlever quelque chose quelque part pour qu’il ne charge pas ces zones pour rien ?

Merci pour vos réponses ! :smiley:

Non. Le DNS, ce n’est pas du mDNS (multicast DNS) ni du NBNS (Netbios Name Service). Contrairement à ces protocoles limités au réseau local, il est destiné à être utilisé à travers tout l’internet, où le broadcast ne marche pas.

Le resolveur local n’interroge un serveur DNS que si son adresse figure dans /etc/resolv.conf. Elle peut y être inscrite manuellement où via divers mécanismes de configuration automatique comme DHCP.

Oui, si c’est dans la page de configuration du serveur DHCP.
Le fait que le routeur sert de passerelle n’a aucune importance. C’est son rôle en tant que serveur DHCP qui compte.

Supprimer les options allow-update de la configuration des zones. As-tu besoin d’autoriser la mise à jour dynamique des zones depuis n’importe quelle machine du réseau local ?

Ce sont des zones qui correspondent à des plages d’adresses IPv4 et IPv6 réservées qui sont créées lorsque la récursion est activée, pour éviter que le serveur envoie inutilement des requêtes DNS inverses pour ces adresses à ses forwarders ou aux serveurs autoritaires. Il me semble que BIND a une option pour ne pas les créer automatiquement mais je n’ai pas la documentation sous les yeux.

Edit : en regardant dans la configuration de mon serveur, j’ai trouvé ça :
empty-zones-enable no;

D’accord, je vais me renseigner et faire en sorte que mon serveur DHCP rende le serveur DNS accessible aux machines du réseau.

Non effectivement, j’en ai pas besoin. Je viens de le désactiver

Je viens de mettre ça dans named.conf.options et ça marche bien !
J’arrive à accéder au serveur web sur alison via www.b.lan.

Merci infiniment pour ton aide ! :smiley:

Si tu n’as plus de question tu peux marquer le sujet comme résolu avec la case prévue à cet effet.

Pour se simplifier la vie utilise webmin…