bind9: el reenvío al servidor de nombres local no funciona cuando la conexión a Internet no funciona

bind9: el reenvío al servidor de nombres local no funciona cuando la conexión a Internet no funciona

Tengo la siguiente configuración:

Una instancia de bind9 (denominada L a continuación) en hardware muy limitado para resolver los nombres en mis redes locales. Es un maestro autorizado para la zona home.mydomain.com. Las consultas a este servidor funcionan y devuelven homedns.home.mydomian.com como NS y la IP 192.168.1.77 del mismo como registro adicional.

Una instancia de bind9 (denominada M a continuación) para resolver nombres locales y de Internet. Aquí no se utiliza ninguna opción de reenvío global. Hay una zona delantera configurada:

zone "home.mydomain.com" in {
        type forward;
        forward only;
        forwarders { 192.168.1.77; };
};

Nota 1: midominio.com es un dominio registrado existente, pero no hay ningún registro para hogar.midominio.com

Nota 2: La versión bind9 de M es muy antigua: 9.8.1-P1

Esta configuración funciona siempre que la conexión a Internet esté activa, pero las consultas de nombres locales no se responden cuando la conexión no funciona. El registro es syslog es

Aug 30 09:05:42 M named[1611]: error (no valid DS) resolving 'xxx.home.mydomain.com/A/IN': 192.168.1.77#53

La captura de la red para una resolución exitosa cuando la conexión está activa revela que M consulta midominio.com en Internet después de recibir la respuesta de L. En la respuesta de M al cliente, la SECCIÓN DE AUTORIDAD cambia:

cavar a L:

;; ANSWER SECTION:
syslog.home.mydomain.com. 3600  IN      A       192.168.1.99

;; AUTHORITY SECTION:
home.mydomain.com.        3600  IN      NS      homedns.home.mydomain.com.

;; ADDITIONAL SECTION:
homedns.home.mydomain.com. 3600 IN      A       192.168.1.77

cavar a M:

;; ANSWER SECTION:
syslog.home.mydomain.com. 2134  IN      A       192.168.1.99

;; AUTHORITY SECTION:
net.                    171334  IN      NS      j.gtld-servers.net.
net.                    171334  IN      NS      m.gtld-servers.net.
net.                    171334  IN      NS      i.gtld-servers.net.
net.                    171334  IN      NS      k.gtld-servers.net.
net.                    171334  IN      NS      g.gtld-servers.net.
net.                    171334  IN      NS      e.gtld-servers.net.
net.                    171334  IN      NS      h.gtld-servers.net.
net.                    171334  IN      NS      a.gtld-servers.net.
net.                    171334  IN      NS      d.gtld-servers.net.
net.                    171334  IN      NS      f.gtld-servers.net.
net.                    171334  IN      NS      b.gtld-servers.net.
net.                    171334  IN      NS      c.gtld-servers.net.
net.                    171334  IN      NS      l.gtld-servers.net.

No entiendo por qué M no simplemente devuelve la respuesta de L al cliente y no me queda ninguna idea de qué podría intentar evitar la consulta a Internet para la zona reenviada.

Respuesta1

La entrada de registro citada en la pregunta sugiere que el error está relacionado con un error en la validación de DNSSEC cuando no hay conexión a Internet.

Tenga en cuenta la parte "DS no válido" del mensaje de error:

Aug 30 09:05:42 M named[1611]: error (no valid DS) resolving 'xxx.home.example.com/A/IN': 192.168.1.77#53

Presumiblemente, las respuestas a las consultas que llegan a esta zona directa normalmente se aceptan solo porque la example.comzona pública existe como una zona sin firmar (es decir, hay prueba de no DScomo parte de la delegación de la example.comzona adecuada), pero cuando esta prueba ya no se puede recuperar debido a que no hay conexión a Internet, las respuestas ya no se pueden aceptar ya que ya no es posible verificar si se deben firmar y cómo.

Una opción sería firmar la home.example.comzona y agregar una estáticaancla de confianzapara esta zona específicamente.

Otra sería desactivar selectivamente la validación; BIND actual tiene unvalidate-exceptopción que le permite especificar una lista de nombres de dominio donde no se debe realizar ninguna validación, según:

validate-except

Esto especifica una lista de nombres de dominio en y debajo de los cuales no se debe realizar la validación DNSSEC, independientemente de la presencia de un ancla de confianza en esos nombres o encima de ellos. Esto se puede utilizar, por ejemplo, al configurar un dominio de nivel superior destinado únicamente a uso local, de modo que la falta de una delegación segura para ese dominio en la zona raíz no provoque errores de validación. (Esto es similar a establecer un ancla de confianza negativa, excepto que es una configuración permanente, mientras que las anclas de confianza negativas caducan y se eliminan después de un período de tiempo determinado).

También existe la posibilidad de deshabilitar completamente la validación utilizando eldnssec-validationopción, que no recomendaría si esta instancia BIND tiene un uso más amplio que este avance específico.

(Tenga en cuenta que he reemplazado el nombre de dominio utilizado en la pregunta porque example.comparece poco probable que la pregunta tenga alguna relación con el nombre de dominio al que hace referencia o con la empresa propietaria).

información relacionada