loader

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

Anonim


Si está realizando muchas modificaciones en la red, configurando aplicaciones basadas en LAN y herramientas de servidor, o simplemente por curiosidad, es probable que haya notado que existe una diferencia entre la dirección IP local del host 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, un grupo de sitios web de preguntas y respuestas impulsado por la comunidad.

La pregunta

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

El uso de cmd y ping en Windows me dio los siguientes resultados:

Haciendo ping a “localhost”:

Haciendo ping a "192.168.0.10" (dirección IP local):

¿No son ambas situaciones exactamente iguales?

Quiero decir, estoy haciendo ping en 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é sucede exactamente cuando cambias entre los dos?

La respuesta

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

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

Su localhost se utiliza para referirse a su computadora desde su IP "interna", no desde cualquier 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 de bucle virtual que envía directamente los paquetes de puerto a puerto sin ningún salto físico.

Quizás aún se pregunte por qué localhost está resolviendo en ::1, mientras que tradicionalmente esperamos que se resuelva en la dirección IPv4 127.0.0.1 . Tenga en cuenta que .localhost es tradicionalmente un TLD (ver RFC 2606) que apunta a la dirección IP del bucle (para IPv4, ver RFC 3330, especialmente 127.0.0.0/8).

La búsqueda de 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 retorno de bucle de IPv6 ::1 (ver RFC 2373), ya que aparece primero.

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

type %WINDIR%\System32\Drivers\Etc\Hosts

 ... # 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 informa acerca de una configuración que afecta lo que Windows prefiere, enfatizado en negrita:

  1. En el Editor del Registro, localice y luego haga clic en la siguiente subclave del Registro:
     HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters 
  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ú Edición, seleccione Nuevo y luego haga clic en Valor DWORD (32 bits).
    2. Escriba DisabledComponents y, a continuación, 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 al estado deseado, y luego haga clic en Aceptar:
    • Escriba 0 para habilitar todos los componentes de IPv6. (Configuración predeterminada de Windows)
    • Escriba 0xffffffff para deshabilitar todos los componentes de IPv6, excepto la interfaz de loopback de IPv6. Este valor también configura Windows para que prefiera usar el Protocolo de Internet versión 4 (IPv4) sobre IPv6 modificando 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.
    • Escriba 0x20 para preferir IPv4 sobre IPv6 modificando las entradas en la tabla de políticas de prefijo.
    • Escriba 0x10 para deshabilitar IPv6 en todas las interfaces no de túnel (en ambas interfaces LAN y Protocolo de punto a punto [PPP]).
    • Escriba 0x01 para deshabilitar IPv6 en todas las interfaces de túnel. Estos incluyen el Protocolo de direccionamiento automático de túneles (ISATAP), 6to4 y Teredo.
    • Escriba 0x11 para deshabilitar todas las interfaces IPv6 excepto la interfaz de bucle invertido de IPv6.
  4. Reinicie la computadora para que esta configuración tenga efecto.

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

netsh interface ipv6 show prefixpolicies (o prefixpolicy de 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 las resoluciones de DNS.

Ah, entonces al usar 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 esté experimentando problemas compatibles. 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 una respuesta exhaustiva e informativa con documentos de soporte vinculados de sobra. Claramente, el localhost y la dirección IP local son entidades distintas, tienen propósitos diferentes y ahora todos sabemos por qué.


¿Tienes algo que agregar a la explicación? Apague el sonido en los comentarios. ¿Quieres leer más respuestas de otros usuarios de Stack Exchange con experiencia en tecnología? Echa un vistazo a la discusión completa aquí.

La Elección Del Editor