el archivo de hosts parece ignorarse

18

Tengo una caja de escritorio de Ubuntu casi nueva. El sistema operativo se instaló hace dos semanas y se actualizó desde los repositorios kármicos. La semana pasada no tuve problemas con DNS. Pero esta semana algo había cambiado. No estoy seguro de qué y cuándo, y no estoy seguro de si cambié alguna configuración.

Así que ahora tengo una situación realmente extraña. Según los registros, la resolución de nombres debería funcionar normalmente.

/ etc / hosts

127.0.0.1   localhost test
127.0.1.1   desktop

/etc/host.conf

order hosts,bind
multi on

/etc/resolv.conf

# Generated by NetworkManager
search search servers obtained via DHCP
nameserver 192.168.0.3

/etc/nsswitch.conf

passwd:         compat
group:          compat
shadow:         compat

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Pero de hecho no lo es.

usuario @ prueba ~> prueba de ping

PING localhost (127.0.0.1) 56(84) bytes of data.
[skip]

Hacer ping está bien.

usuario @ prueba ~> prueba de host

test.mydomain.com has address xx.xxx.161.201

Sospecho que NetworkManager podría causar este mal comportamiento, pero no sé por dónde comenzar a verificarlo. ¿Alguna idea, sugerencia?

z4y4ts
fuente

Respuestas:

20

Con esta configuración, la mayoría de las aplicaciones estarán felices de trabajar con su entrada /etc/hosts.

Sin hostembargo no mira /etc/nsswitch.conf. Eso es por diseño, no por accidente, ya que hostes específicamente un programa de búsqueda de DNS. /etc/hostsno es DNS, es (principalmente) lo que usamos antes de tener DNS.

Lo mismo también es cierto para digy nslookup: también son específicos de DNS.

Alnitak
fuente
Entonces, ¿estás diciendo que la hostutilidad no usa /etc/hosts? ¿Y no hay nada que arreglar en mi caso?
z4y4ts
sí, más o menos, nada que ver aquí :)
Alnitak
Lo que no entiendo es que host> solía ser <el comando de consulta de nombre "regular", obedeciendo/etc/nsswitch.conf
mveroone
@Kwaio No puedo encontrar evidencia en las fuentes de ISC que hostalguna vez lo hicieron
Alnitak
Bueno, podría haber utilizado implementaciones de distribución inusuales, entonces, mi mal.
mveroone
15

El hostcomando (junto con digy nslookup) es parte de las bindutilidades de DNS. Como una utilidad de resolución de DNS, solo hace la resolución de DNS.

Si está interesado en obtener una entrada de cualquier libnssalmacén de datos controlado, puede usar el getentprograma. Para obtener una entrada de hosts, por ejemplo, úsela así:

getent hosts google.com

Esto sigue el orden de resolución que figura bajo hosts:en /etc/nsswitch.conffin, lo que incluye /etc/hostssi "archivos" se lised como una de las opciones.

tylerl
fuente
Gracias por recordarme el getentcomando.
Emmanuel
2
Creo que hoy en día uno debería estar usando en getent ahostslugar de getent hostsporque getent hostsusa gethostbyaddr()o gethostbyname*()que son obsoletos. Si he entendido correctamente, getent hostsemula cómo funcionaban los antiguos programas UNIX C y getent ahostsemula la forma en que deberían funcionar los programas modernos.
Mikko Rantalainen
0

Para mí, este problema se produjo debido a permisos de archivo incorrectos. Solo root puede leer / etc / hosts. El archivo debe ser legible en todo el mundo.


fuente