¿Qué es bind9 y por qué puede dejar de funcionar?

BIND9 (Berkeley Internet Name Domain) es uno de los servidores DNS más utilizados en sistemas Linux. Se encarga de resolver nombres de dominio dentro de una red o de gestionar zonas DNS en un servidor. En entornos Debian y VPS, es habitual tenerlo instalado para gestionar la resolución de nombres de las webs alojadas.

El problema más frecuente con bind9 en Debian es que, tras un reinicio del servidor, el servicio no levanta. El motivo suele ser sencillo: systemd no ha creado el directorio temporal que bind9 necesita para funcionar.

Síntomas del error bind9 en Debian

Al ejecutar systemctl status bind9.service aparecen errores como estos:

● named.service – BIND Domain Name Server
   Active: failed (Result: exit-code)
   Process: ExecStart=/usr/sbin/named -f $OPTIONS (code=exited, status=1/FAILURE)
   named.service: Start request repeated too quickly.
   Failed to start BIND Domain Name Server.

El servicio intenta arrancar varias veces y falla cada vez. Para confirmar la causa exacta, ejecutamos el comando de diagnóstico de configuración:

named-checkconf

Si obtienes el siguiente resultado, el problema está confirmado:

/etc/bind/named.conf.options:2: change directory to '/var/cache/bind' failed: file not found
/etc/bind/named.conf.options:2: parsing failed: file not found

Causa del error: directorio /var/cache/bind no existe

El error bind9 en Debian VPS se produce porque el directorio /var/cache/bind no existe en el sistema. Esto ocurre normalmente después de un reinicio limpio del servidor, ya que systemd no lo recrea automáticamente si no está configurado para hacerlo.

Solución paso a paso

Paso 1 — Crear el directorio y asignar permisos correctos:

sudo mkdir -p /var/cache/bind
sudo chown bind:bind /var/cache/bind/
sudo chmod 755 /var/cache/bind/

Paso 2 — Crear un archivo tmpfiles para que el directorio se regenere automáticamente en cada reinicio:

Crea el archivo /etc/tmpfiles.d/bind9.conf con el siguiente contenido:

d /var/cache/bind 0755 bind bind -

Paso 3 — Aplicar la configuración de tmpfiles y reiniciar bind9:

systemd-tmpfiles --create
systemctl restart bind9

Con esto, bind9 debería arrancar correctamente. El comando systemd-tmpfiles --create lee los archivos de configuración en /etc/tmpfiles.d/ y crea los directorios y archivos definidos en ellos. A partir de ahora, aunque el servidor se reinicie, el directorio /var/cache/bind se recreará automáticamente antes de que bind9 intente arrancar.

Verificar que bind9 está funcionando

Tras reiniciar el servicio, comprueba su estado con:

systemctl status bind9.service

Deberías ver Active: active (running). Si el error persiste, revisa los archivos de zona con named-checkzone por si hay algún error de configuración adicional.

#Debian #bind9 #DNS #ServidorLinux #VPS #SysAdmin