Problema de resolución de DNS con Fedora 20

Problema de resolución de DNS con Fedora 20

Tengo un servidor Fedora 20 recién construido que acabo de conectar a mi red. Es un servidor virtual que se ejecuta en un host VirtualBox. Todo parece estar funcionando pero tengo un problema con la resolución de nombres.

(Debo decir en este punto que la resolución de nombres la proporciona un servidor Windows en hardware separado que funciona bien para todas las demás máquinas de la red).

Desde la línea de comando puedo resolver un host externo como unix.stackexchange.com. Puedo resolverlo felizmente y hacer ping, como con cualquier otro host externo que haya probado.

Sin embargo, mi red local (llamémosla xyz.local) es diferente. La interfaz de red en mi máquina F20 está DOMAIN=xyx.localen el script de red (script completo a continuación). Desde la línea de comando puedo resolver, digamos, server-01pero no server-01.xyz.local.

Puedo resolver un alias en forma corta, aunque el nombre canónico sea la forma larga, por lo que, por ejemplo, ping mysqlse resuelve con éxito en su alias linux-04.xyz.local, pero no puedo resolver ni mysql.xyz.localni linux-04.xyz.local.

Claramente me he perdido algo. ¿Alguien puede sugerir qué?

/etc/hosts sólo tiene las entradas estándar de localhost para 127.0.0.1

/etc/resolv.conf es el siguiente:

#Generated by Network Manager
search xyz.local
nameserver 192.168.xxx.xxx

Mi script de interfaz es

TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME="Wired connection 1"
UUID=<uuid>
ONBOOT=yes
IPADDR0=192.168.xxx.xxx
PREFIX0=24
GATEWAY0=192.168.xxx.xxx
DNS1=192.168.xxx.xxx
HWADDR=<mac>
DOMAIN=xyz.local
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

Respuesta1

Es probable que parte de su problema se deba a que su ruta de búsqueda se genera automáticamente a través de NetworkManager:

search xyz.local

Esta línea realmente debería ser esta:

search xyz.local.

El punto al final es crítico ya que le indica al solucionador de DNS que se detenga. Entonces no te hará cosas como esta:

mysql.xyz.local.xyz.local

Puedes confirmar esto intentando resolver los nombres de host agregando manualmente un punto tú mismo, de forma temporal.

$ nslookup mysql.xyz.local.

Resolviendo este dominio en todo el mundo

Para resolver esto, deberá cambiar la definición de su dominio en su servidor DHCP para que sirva el dominio como xyz.local..

/etc/nsswitch.conf

El método utilizado para resolver un nombre de host está controlado por el archivo /etc/nsswitch.conf. La notación NSS significa Name Service Switch y puede leer más sobre ella en la página de manual man nss.

Aquí está la línea de mi archivo que controla cómo se resuelven los nombres de host:

$ grep ^hosts /etc/nsswitch.conf
hosts:      files dns mdns4_minimal

Primero mira mi archivo local /etc/hostsy luego consulta DNS.

Respuesta2

El problema se debe a la palabra clave "mdns4_minimal" en el archivo nsswitch.conf. Esta palabra clave le dice al solucionador que todo lo que termine en local debe consultarse usando mdns. Debería ser suficiente eliminar esa palabra clave (y las opciones adicionales que normalmente aparecen entre corchetes).

Más detalles puedes encontrar en micorreo

La razón por la cual nslookup resuelve todo es porque no busca en nsswitch.conf sino que usa /etc/resolv.conf directamente. ping, por otro lado, depende del solucionador que primero busca en nsswitch.conf y resuelve el nombre usando lo que esté escrito allí.

información relacionada