Bind n'écoute que sur localhost sous CentOS 7
Rédigé par Nicolas Sulek
Aucun commentaire
Classé dans : Services réseaux, Système
Pourtant un redémarrage du service, avec systemct restart named, le fera bien écouter sur toutes les interfaces...
Ce problème est en fait dû au temps de démarrage des interfaces réseaux, ce que l'on peut vérifier avec journalctl. On verra alors les message d'activation des interfaces après le démarrage de Bind.
Identification du problème
Dans la définition du service named :[Unit] Description=Berkeley Internet Name Domain (DNS) Wants=nss-lookup.target Wants=named-setup-rndc.service Before=nss-lookup.target After=network.target After=named-setup-rndc.service [Service] Type=forking EnvironmentFile=-/etc/sysconfig/named Environment=KRB5_KTNAME=/etc/named.keytab PIDFile=/run/named/named.pid ExecStartPre=/bin/bash -c 'if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z /etc/named.conf; else echo "Checking of zone files is disabled"; fi' ExecStart=/usr/sbin/named -u named $OPTIONS ExecReload=/bin/sh -c '/usr/sbin/rndc reload > /dev/null 2>&1 || /bin/kill -HUP $MAINPID' ExecStop=/bin/sh -c '/usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID' PrivateTmp=true [Install] WantedBy=multi-user.targeton peut constater que Bind démarre après que le réseau soit démarré (After=network.target), or, cette cible n'implique pas que le réseau est opérationnel.
C'est la cible network-online.target qui a ce rôle.
Définition de la nouvelle cible
Pour corriger ce soucis, il suffit de surcharger la définition du service named :systemctl edit namedDans l'éditeur de texte, indiquer :
[Unit] After=network-online.targetCela va créer un fichier /etc/systemd/system/named.service.d/override.conf surchargeant les valeurs par défaut de l'unité.
Puis il faut redémarrer le service avec :
systemctl daemon-reload systemctl restart namedOn peut vérifier que notre modification a bien été prise en compte avec :
systemctl status named ● named.service - Berkeley Internet Name Domain (DNS) Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disabled) Drop-In: /etc/systemd/system/named.service.d └─override.conf Active: active (running) since Wed 2016-04-27 08:04:46 CEST; 4s ago Process: 1358 ExecStop=/bin/sh -c /usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID (code=exited, status=0/SUCCESS) Process: 1443 ExecStart=/usr/sbin/named -u named $OPTIONS (code=exited, status=0/SUCCESS) Process: 1441 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z /etc/named.conf; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS) Main PID: 1446 (named) CGroup: /system.slice/named.service └─1446 /usr/sbin/named -u namedOn constate que le fichier override.conf est bien pris en compte.