¿Las entradas en los archivos locales 'hosts' anulan las búsquedas directas e inversas de nombres?

16

Si tengo las siguientes entradas en un archivo de hosts:

192.168.100.1    bugs
192.168.100.2    daffy.example.com
192.168.100.3    elmer.example.com.

¿Los intentos de resolución de nombres IP-> por parte de las empresas locales (supongo que usando 'gethostbyaddr' o el equivalente de Windows) honrarán estas entradas? ¿Es este comportamiento configurable? ¿Cómo varía entre sistemas operativos? ¿Importa si las entradas del archivo 'hosts' están completamente calificadas o no?

EDITAR: en respuesta a Russell, mi sistema Linux de prueba ejecuta RHEL 4. Mi /etc/nsswitch.conf contiene la siguiente línea de 'hosts':

hosts:      files dns nis

Si hago ping a cualquiera de mis hosts por nombre (por ejemplo, errores, daffy), la resolución de reenvío funciona correctamente. Si hago un seguimiento de alguno de ellos por dirección IP, la búsqueda inversa funciona como se esperaba. Sin embargo, si les hago ping por IP, el ping no parece resolver sus nombres de host. Comprendí que el ping de Linux siempre intentaría resolver las direcciones IP de los nombres a menos que se indique lo contrario. ¿Por qué traceroute podría manejar búsquedas inversas en archivos hosts, pero no hacer ping?

Murali Suriar
fuente

Respuestas:

16

En general, el archivo de hosts se utilizará para búsquedas directas e inversas. La preferencia en un sistema Unix dependerá del orden de las entradas en su archivo nsswitch.conf.

por ejemplo, la línea a continuación hará que el archivo de hosts anule el DNS. Invertir las entradas hará que DNS anule el archivo de hosts.

hosts: archivos dns

No estoy seguro de si puede sintonizar el orden de preferencia en un sistema Windows.

He echado un vistazo a la fuente para hacer ping en inetutils-20071127 (la versión instalada en mi cuadro Ubuntu 9.04) y la fuente parece habilitar el modo numérico solo si hace ping a una dirección IP en lugar de un nombre de host:

                if (inet_aton (target, & whereto.sin_addr) == 1) {
                        nombre de host = objetivo;
                        si (argc == 1)
                                opciones | = F_NUMERIC;

Esto podría explicar por qué no obtiene una búsqueda inversa cuando hace ping a su host por dirección IP.

Russell Heilling
fuente
Ese fue mi pensamiento, pero este no parece ser el caso. Ver pregunta actualizada para más detalles.
Murali Suriar el
Todavía no he tenido la oportunidad de ver la fuente; sin embargo, un rápido vistazo a LDD salida muestra que en mi mesa de ping sistema está vinculado directamente a la biblioteca de resolución DNS libresolv, lo que podría implicar que se está dejando de lado el archivo nsswitch y hacer sus búsquedas inversas directamente ...
Russell Heilling
Al usar la hostutilidad ISC , uno puede tener la impresión de que editar / etc / hosts no tiene ningún efecto. host 10.0.0.1hará una consulta DNS e ignorará el archivo de hosts. Esto permite verificar la resolución del sistema:perl -MSocket -le '$a=inet_aton(shift); $_=gethostbyaddr $a, AF_INET; print' 10.0.0.1
mivk
8

Encontré una referencia para cambiar las entradas del registro para alterar el orden de resolución de nombres en Windows:

http://forums11.itrc.hp.com/service/forums/questionanswer.do?threadId=963485

Citando a partir de ahí:

De manera predeterminada, Windows verifica los proveedores de resolución de nombres en el siguiente orden:

Local, (caché de nombre local de NetBT), hosts, DNS, NetBT (WINS).

Desea que el pedido sea Hosts, DNS, Local, NetBT.

En lo que sigue, los números más bajos son de mayor prioridad.

Las siguientes claves de registro en

HKEY_LOCAL_MACHINE\SYSTEM\CurentControlSet\ServicessTcpip\ServiceProvider

necesita ser modificado

DnsPriority= 0x3e8 (Decimal: 1000)
HostsPriority= 0x1f4 (Decimal: 500)
LocalPriority= 0x5dc (Decimal: 1500)
NetbtPriority= 0x7d1 (Decimal: 2001)
James F
fuente
¿Cómo obtienen esa información de "trabajo interno"?
Pacerier
1

El /etc/host.confarchivo especifica qué orden se utiliza para descubrir las direcciones IP. El mío contiene lo siguiente por defecto:

#
# /etc/host.conf
#

order hosts,bind
multi on

Esto significa que el archivo de hosts siempre se verifica primero y luego DNS (enlace).

Si nisno se especifica aquí, nunca lo verá /etc/nsswitch.conf.

Enlace de documentación: http://tldp.org/LDP/nag/node82.html

Sekenre
fuente
El método /etc/host.conf está desactualizado para algunos sistemas, solo se usa nsswitch.conf (como los sistemas basados ​​en glibc y eglibc). Estas versiones de glibc analizarán el '/etc/host.conf' sin previo aviso y descartarán la línea 'order'.