el servidor ubuntu no resuelve los nombres de host LAN


14

Un poco atrapado aquí.

Tengo 2 máquinas que no pueden resolver nombres de host LAN, a menos que haya entradas específicas en / etc / hosts

Pero otras máquinas en la LAN pueden resolver nombres de host.

Mi LAN:

  • 1 x router Cisco que ejecuta DD-WRT v24-sp2 con DNSMasq habilitado. Lo configuré con los nombres de host e IP en mi LAN.
  • 1 x Kubuntu 12.10 (resuelve todos los nombres de host correctamente siempre que se ingresen en DNSMasq en el enrutador)
  • 2 x NAS (también resuelve todos los nombres correctamente)

  • 1 x Ubuntu Server 12.04 (esto NO resuelve los nombres de host locales a menos que se ingresen en / etc / hosts)

  • 1 x XBMCLive (Dharma) (lo mismo, no se resuelve a menos que las entradas estén en / etc / hosts)

¿Cómo obtengo los últimos 2 para usar las entradas DNSMasq en el enrutador? Cada máquina está configurada para usar el enrutador como servidor de nombres, y todas las unidades resuelven las direcciones externas correctamente.

Gracias.

algo más de información:

mientras estoy en el servidor, si hago ping a otra PC (wstation)

$ ping wstation
PING wstation.local.domain (x.x.x.x) 

Si luego agrego .local

$ ping wstation.local
PING wstation.local.local.domain (x.x.x.x)

y directamente

$ ping 10.0.0.4
PING 10.0.0.4 (10.0.0.4) 56(84) bytes of data.
64 bytes from 10.0.0.4: icmp_req=1 ttl=64 time=0.387 ms
64 bytes from 10.0.0.4: icmp_req=2 ttl=64 time=0.316 ms
64 bytes from 10.0.0.4: icmp_req=3 ttl=64 time=0.312 ms
64 bytes from 10.0.0.4: icmp_req=4 ttl=64 time=0.280 ms
64 bytes from 10.0.0.4: icmp_req=5 ttl=64 time=0.322 ms
^C
--- 10.0.0.4 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3998ms
rtt min/avg/max/mdev = 0.280/0.323/0.387/0.038 ms                                                                       

No sé la respuesta, y no tengo idea de si esto será útil, pero en caso de que no lo supiera ... descubrí que si añadía ".local" después del nombre de una máquina, de alguna manera se encontraría sin ninguna configuración necesaria. En realidad, me ayudó porque estaba especificando direcciones, pero necesitaba seguir cambiando las entradas cuando agregaba o eliminaba un sistema operativo que usaba para las pruebas, etc. Pero, al especificar machinename.local, ya no tenía que preocuparme. Si sabes de dónde viene esto, no dudes en decirme. :)
Marty Fried

1
Hola Marty, gracias por tu respuesta. He agregado más información al problema para mostrar lo que sucede con .local
teracow

Respuestas:


15

Sobre su salida actual

ping wstation
PING wstation.local.domain

Indica claramente que su PC está agregando consultas .local.domainque no son FQDN. Esto es algo configurado incorrectamente o al menos mal en su configuración. (a menos que realmente use el .local.domainsufijo a propósito)

Resolución de nombres y períodos

Una cosa importante que mucha gente no sabe es que un nombre completo siempre debe terminar con un punto ( .). Si lo omite, la máquina intentará resolverlo dentro del dominio de búsqueda local (por ejemplo, mydomain.tld). Entonces, en ese caso, mypc.localse haría una consulta para mypc.local.mydomain.tld. Para evitar esto, consulte con el punto.

Configuración de resolución

La configuración del resolutor es de gran importancia aquí. En Ubuntu (y Debian) esto se configura en el archivo /etc/network/interfaces(suponiendo que no esté ejecutando NetworkManager):

iface eth0 inet static
   address 192.168.3.3
   netmask 255.255.255.0
   gateway 192.168.3.1
   dns-nameservers 192.168.3.45 192.168.8.10
   dns-search foo.org bar.com                      # <-- these are the search domains

La resolución de nombres en Linux también se puede lograr de otras maneras. No se trata solo de que el servidor DNS local esté siendo consultado por todo esto. Eche un vistazo a su /etc/nsswitch.confarchivo para la hostsconfiguración de resolución:

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4

Esto significa que los archivos se prueban primero (este es el /etc/hostsarchivo), luego mDNS y solo más tarde se consulta el servidor DNS real. mDNS se implementa utilizando Avahi en Linux y se llama Bonjour en dispositivos Apple. Utiliza el .localsufijo de forma predeterminada y funciona a través de mensajes de difusión. Al igual que ARP funciona, pero luego para DNS.

Todos estos sistemas pueden ser muy confusos e incluso más cuando se usan .localen una configuración de DNS normal combinada con dispositivos mDNS. Supongo que es por eso que ahora estás confundido sobre por qué un dispositivo funciona y el otro no: no todos están usando el mismo método de resolución.

Para arreglar las cosas

  • Evite el uso si a .localmenos que quiera confiar completamente en mDNS. Según su pregunta, entiendo que le gustaría mantener las cosas configuradas usted mismo en un lugar central, por lo que mi enfoque aquí es evitarlo.
  • Configure su servidor DNS local (el dispositivo DD-WRT en su caso) para usar un nombre de dominio especial, por ejemplo my.home. Para dnsmasq, esta es una configuración única, pero en las configuraciones regulares se debe configurar tanto en el servidor DNS como en el servidor DHCP (como se anuncia a través de DHCP).
  • Configure todas las PC para que tengan un nombre de host simple y único. Lo usan en su solicitud de DHCP y esto se usa en el dnsmasq que se ejecuta en su enrutador para resolverlos. Alternativamente, configúrelos manualmente para no tener que depender de DHCP.
  • Elimine cualquier configuración sobrante /etc/resolv.confen caso de que haya jugado con ella en el pasado.
  • Configure las PC en su red para usarlas my.homecomo el dominio de búsqueda local. Esto se puede hacer a través de DHCP automáticamente, o si se usan direcciones estáticas a través del /etc/network/interfacesarchivo o en Network Manager:

    ingrese la descripción de la imagen aquí

  • Ahora, tanto la resolución simple de nombres ( ping hostname) como el nombre completo ( ping hostname.my.home) deberían funcionar.

55
¡Guauu! Impresionante respuesta gertvdijk! Muy completo. Tanto es así, que necesitaré algo de tiempo para entender lo que has dicho. Puedo decir que probé un ping con un punto después del nombre de host y funcionó correctamente. No uso DHCP en esta LAN para las máquinas permanentes. Nunca configuré la configuración local en ninguna máquina, ya que no entendía de qué se trataba. Investigaré esto más a fondo según sus instrucciones y nos pondremos en contacto con usted.
teracow

Gracias por esta respuesta integral. Cambié mi /etc/nsswitch.conf para que se intente DNS antes que mDNS files mdns4_minimal [NOTFOUND=return] dns mdns4. Ahora todo se comporta más como lo esperaba con mis máquinas dirigidas host.foo.local (mal nombradas). Antes de este cambio ping hostnamefuncionaría pero ping hostname.foo.localestaba fallando. Me estaba confundiendo mucho cuando dig hostnameestaba fallando y dig hostname.foo.localestaba devolviendo un resultado, lo contrario de lo que esperaba. Ahora puedo hacer ping a los FQDN como esperaba. ¿Hay un inconveniente en tener el orden establecido de esta manera?
TafT

1

Basado en la respuesta de gertvdijk acabo de comentar la línea en nsswitch.conf

sudo vim /etc/nsswitch.conf

.
.
.
hosts:          files dns # mdns4_minimal [NOTFOUND=return] dns

0

Tengo problemas similares con un / etc / hosts que contiene múltiples espacios entre IP y nombre de host, en lugar de usar una TAB. Después de cambiar a TAB, el nombre de host podría resolverse haciendo ping.

127.0.0.1        test.local
         ^^^^^^^^ → Should be a TAB not multiple spaces.

ver también en /superuser//a/938366/467479


3
Lo siento, eso NO es correcto. El archivo hosts funcionará con espacios o pestañas. Además, 127.0.0.1 debe tener localhost primero, seguido de localhost.localdomain y, según su configuración, el nombre de host de su máquina. (Algunas configuraciones, Ubuntu / Debian tienen su nombre de host en la línea 127.0.1.1) Sin embargo, no recomendaría instalar ninguna dirección .local en el archivo de hosts, ya que entran en conflicto con mDNS / Avahi
The Dude

1
Si tiene máquinas Windows en su dominio, aparentemente utiliza DNS de unidifusión, que no es compatible con las implementaciones mDNS de Avahi o Zeroconf. Además, verifique su /etc/nsswitch.conf para ver si está rescatando después de mdns4_minimal [NOTFOUND = return] o haciendo una búsqueda completa de mdns4 (muévala hacia atrás). Además, no configure ningún servidor DNS para usar el dominio .local, ya que los solucionadores mDNS / sd-DNS enmascararán las búsquedas en ese dominio. Para su DNS TLD interno, use .lan, .work, .home, etc. (pero NO uno de los nuevos TLD, como .biz, .xyz, .web, etc.). Buena suerte y bienvenido al divertido mundo de la resolución DNS.
The Dude
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.