24Aug
Si está haciendo muchas modificaciones en la red, configurando aplicaciones basadas en LAN y herramientas de servidor, o simplemente curioso, probablemente haya notado que hay una diferencia entre el localhost y la dirección IP local. Sigue leyendo para conocer las diferencias.
Pregunta de hoy &La sesión de respuesta nos llega por cortesía de SuperUser, una subdivisión de Stack Exchange, una agrupación de sitios web Q & A dirigida por la comunidad.
La pregunta
SuperUser reader Diogo quiere saber por qué el comando ping trata el localhost 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:
Pinging "localhost":
Pinging "192.168.0.10"( dirección IP local):
¿Las dos situaciones no son 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á pasando exactamente cuando cambias entre los dos?
La respuesta El colaborador
SuperUser Tom Wijsman ofrece la siguiente información sobre las diferencias sutiles entre los dos:
No estás haciendo ping a la misma interfaz , sin interfaces físicas aún tienes un "host local".
Su localhost se usa para referirse a su computadora desde su IP "interna", no desde 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 de retroalimentación virtual que envía directamente los paquetes de un puerto a otro sin saltos físicos.
Aún podría preguntarse por qué localhost se está resolviendo a: : 1, mientras que 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 a la dirección IP del bucle invertido( para IPv4, consulte RFC 3330, especialmente 127.0.0.0/8).
Buscar localhost usando nslookup nos da:
nslookup localhost
. .. Nombre: localhost Direcciones:: : 1 127.0.0.1Por lo tanto, Windows prefiere usar el IPv6 de vuelta a la dirección IP: : 1( ver RFC 2373) tal como estáprimero en la lista.
Bien, entonces, de dónde viene, veamos el archivo de hosts.
tipo% WINDIR% \ System32 \ Drivers \ Etc \ Hosts
. .. # La resolución del nombre del localhost se maneja dentro del propio DNS.# 127.0.0.1 localhost #: : 1 localhost. ..Hmm, tenemos que mirar la configuración DNS de Windows.
Este artículo de KB nos informa sobre una configuración que afecta lo que Windows prefiere, enfatizado en negrita:
- En el Editor del registro, busque y haga clic en la siguiente subclave del registro: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip6 \ Parameters
- Haga doble clic en DisabledComponents paramodifique la entrada DisabledComponents. Nota: Si la entrada DisabledComponents no está disponible, debe crearla. Para ello, siga estos pasos:
- En el menú Edición, seleccione Nuevo y luego haga clic en Valor DWORD( 32 bits).
- Escriba DisabledComponents, y luego presione ENTER.
- Haga doble clic en DisabledComponents.
- Escriba uno 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:
- 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 bucle invertido 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 prefijos. Para obtener más información, vea 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 prefijos.
- Escriba 0x10 para deshabilitar IPv6 en todas las interfaces que no sean de túnel( tanto en la LAN como en las interfaces del Protocolo punto a punto [PPP]).
- Escriba 0x01 para deshabilitar IPv6 en todas las interfaces de túnel. Estos incluyen el protocolo de direccionamiento de túnel automático in-situ( ISATAP), 6to4 y Teredo.
- Escriba 0x11 para deshabilitar todas las interfaces IPv6 excepto la interfaz de bucle invertido IPv6.
- Reinicia la computadora para que esta configuración surta efecto.
¿Qué es esta tabla de políticas de prefijos?
interfaz netsh 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: : / 96Esta tabla decide qué prefijos tienen precedencia 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 precedencia que IPv6.
Nota: No hay razón para anular este comportamiento, a menos que experimente 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 los 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é.
¿Tiene 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í.