14 de Diciembre, 2009

El extraño caso del DNS en CentOS

Este problema, si no recuerdo mal, empezó a darse con CentOS 5.3, aunque igual lo que pasa es que es ahí donde nos dimos cuenta.

El caso es que al actualizar el sistema con un simple yum update nos encontrábamos que el gestor de paquetes se descargaba la web de la empresa en lugar de el listado de mirrors para actualizar. Sí, WTF?! Además pasaba en cualquier máquina.

Después de investigar (mucho, porque no todos los programas tenían ese problema), tiene una explicación muy sencilla:

  • En el servidor DNS hay un comodín que hace que cualquier subdominio que no exista (que no tenga su propia entrada DNS), se resuelva contra la máquina donde tenemos la web de la empresa.
  • En /etc/resolv.conf no hay especificado un valor para search, y parece que se está usando el dominio base del nombre de la máquina.
  • ¡Ya tenemos el pollo montado!

Es decir, supongamos empresa.dom:

  • *.empresa.dom resuelve a www.empresa.dom (siempre que el subdominio no exista, recordemos).
  • Tenemos una máquina que se llama host.empresa.dom, con lo que por defecto search es empresa.dom.
  • Cuando yum resuelve mirrors.centos.org, ¿qué intenta resolver? En primer lugar prueba mirrors.centos.org.empresa.dom, como se espera, y ya resolverá mirrors.centos.org si la búsqueda local falla. No pasaría nada, si no fuera porque ¡efectivamente resuelve por culpa del comodín!

Esta característica es muy cómoda, porque podemos trabajar con el nombre corto de las estaciones cuando tenemos varios subdominios (ej. estacion.dpto.dominio.dom), salvo por el detalle de que el comodín en el DNS ha resultado ser malvado :).

La solución: indicar search local (por ejemplo), al comienzo de /etc/resolv.conf.

Anotación por Juan J. Martínez, clasificada en: networking, centos.

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.

Algunas anotaciones relacionadas: