/ / / ¿Cuál es la diferencia entre Locahost y la dirección IP local?

¿Cuál es la diferencia entre Locahost y la dirección IP local?


Si estás haciendo muchos ajustes de red,configurando aplicaciones basadas en LAN y herramientas de servidor, o simplemente curioso, es probable que haya notado que hay una diferencia entre el host local y la dirección IP local. Sigue leyendo para aprender las diferencias.

La sesión de preguntas y respuestas de hoy nos llega por cortesía de SuperUser, una subdivisión de Stack Exchange, una agrupación de sitios web de preguntas y respuestas dirigida por la comunidad.

La pregunta

El lector SuperUser Diogo quiere saber por qué el comando ping trata el host local y la dirección IP local de manera diferente cuando, en la superficie, parecen ser lo mismo:

Usar cmd y ping en Windows me dio los siguientes resultados:

Pinging "localhost":

Pinging "192.168.0.10" (dirección IP local):

¿No son las dos situaciones exactamente iguales?

Quiero decir, estoy haciendo ping a la misma interfaz, la misma máquina y la misma dirección. ¿Por qué obtengo resultados tan diferentes?

Obviamente hay una diferencia de algún tipo, pero ¿qué está sucediendo exactamente cuando cambias entre los dos?

La respuesta

El colaborador de SuperUser Tom Wijsman ofrece la siguiente información sobre las sutiles diferencias entre los dos:

No estás haciendo ping a la misma interfaz, sin ninguna interfaz física, todavía tiene un "host local".

Tu localhost se utiliza para referirse a su computadora desde suIP "interna", no de ninguna IP "externa" de su computadora. Por lo tanto, los paquetes de ping no pasan a través de ninguna interfaz de red física; solo a través de una interfaz virtual de bucle de retorno que envía directamente los paquetes de puerto a puerto sin ningún salto físico.

Todavía te puedes preguntar por qué localhost está resolviendo ::1, aunque tradicionalmente esperaríamos que se resolviera en la dirección IPv4 127.0.0.1. Tenga en cuenta que .localhost es tradicionalmente un TLD (consulte RFC 2606) que apunta de nuevo a la dirección IP de retorno de bucle (para IPv4, consulte RFC 3330, especialmente 127.0.0.0/8).

Buscando localhost utilizando nslookup Nos da:

nslookup localhost

...
Name:    localhost
Addresses:  ::1
127.0.0.1

Por lo tanto, Windows prefiere usar la dirección IP de bucle IPv6 ::1 (ver RFC 2373), ya que aparece primero.

Bien, entonces, de dónde viene, veamos el archivo de hosts.

type %WINDIR%System32DriversEtcHosts

...
# localhost name resolution is handled within DNS itself.
#       127.0.0.1       localhost
#       ::1             localhost
...

Hmm, tenemos que mirar la configuración de DNS de Windows.

Este artículo de KB nos habla sobre una configuración que afecta lo que Windows prefiere, enfatizado en negrita:

  1. En el Editor del registro, busque y haga clic en la siguiente subclave del registro:
    HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpip6Parameters
    
  2. Haga doble clic en DisabledComponents para modificar la entrada DisabledComponents. Nota: Si la entrada DisabledComponents no está disponible, debe crearla. Para hacer esto, siga estos pasos:
    1. En el menú Editar, seleccione Nuevo y luego haga clic en Valor DWORD (32 bits).
    2. Escriba DisabledComponents y presione ENTRAR.
    3. Haga doble clic en DisabledComponents.
  3. Escriba cualquiera de los siguientes valores en el campo Información del valor: para configurar el protocolo IPv6 en el estado deseado y luego haga clic en Aceptar:
    • Tipo 0 para habilitar todos los componentes de IPv6. (Configuración predeterminada de Windows)
    • Tipo 0xffffffff para deshabilitar todos los componentes de IPv6, excepto el IPv6interfaz de bucle invertido. Este valor también configura Windows para que prefiera usar el Protocolo de Internet versión 4 (IPv4) sobre IPv6 al modificar las entradas en la tabla de políticas de prefijo. Para obtener más información, consulte Selección de dirección de origen y destino.
    • Tipo 0x20 preferir IPv4 sobre IPv6 modificando entradas en la tabla de políticas de prefijo.
    • Tipo 0x10 para deshabilitar IPv6 en todas las interfaces que no sean de túnel (tanto en LAN como en las interfaces de protocolo punto a punto [PPP]).
    • Tipo 0x01 para deshabilitar IPv6 en todas las interfaces de túnel. Estos incluyen el Protocolo de direccionamiento de túnel automático dentro del sitio (ISATAP), 6to4 y Teredo.
    • Tipo 0x11 para deshabilitar todas las interfaces IPv6, excepto la interfaz de bucle invertido IPv6.
  4. Reinicie la computadora para que esta configuración surta efecto.

¿Qué es esta tabla de políticas de prefijo?

netsh interface ipv6 show prefixpolicies (o prefixpolicy en versiones anteriores)

Precedence  Label  Prefix
----------  -----  --------------------------------
50      0  ::1/128
45     13  fc00::/7
40      1  ::/0
10      4  ::ffff:0:0/96
7     14  2002::/16
5      5  2001::/32
1     11  fec0::/10
1     12  3ffe::/16
1     10  ::/96

Esta tabla decide qué prefijos tienen prioridad sobre otros prefijos durante la resolución de DNS.

Ah, entonces usando esa KB podríamos agregar entradas aquí que denotan que IPv4 tiene mayor prioridad que IPv6.

Nota: No hay ninguna razón para anular este comportamiento, a menos que tenga problemas de compatibilidad. Cambiar esta configuración en nuestro servidor de Windows rompió nuestro servidor de correo, por lo que debe manejarse con cuidado ...

No hay nada que nos guste más que un minucioso yrespuesta informativa con documentos de soporte vinculados de sobra. Claramente, el localhost y la dirección IP local son entidades distintas, sirven para diferentes propósitos, y ahora todos sabemos por qué.


¿Tienes algo que agregar a la explicación? Suena apagado en los comentarios. ¿Desea leer más respuestas de otros usuarios de Stack Exchange expertos en tecnología? Mira el hilo de discusión completo aquí.