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 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 puede preguntarse por qué se localhost
está resolviendo ::1
, mientras que tradicionalmente esperaríamos que se resuelva en la dirección IPv4 127.0.0.1
. Tenga en cuenta que .localhost
tradicionalmente es 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).
Buscar localhost
usando 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 de retorno de IPv6 ::1
(consulte RFC 2373 ), ya que aparece en primer lugar.
Bien, entonces, ¿de dónde viene? Miremos 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 habla 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 para modificar la entrada DisabledComponents.
Nota: Si la entrada DisabledComponents no está disponible, debe crearla. Para hacer esto, siga estos pasos:
En el menú Edición, seleccione Nuevo y luego haga clic en Valor DWORD (32 bits).
Escriba DisabledComponents y presione ENTRAR.
Haga doble clic en DisabledComponents.
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:
- 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 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.
- 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 LAN como en las interfaces de 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 dentro del sitio (ISATAP), 6to4 y Teredo.
- Escriba
0x11
para deshabilitar todas las interfaces IPv6, excepto la interfaz de bucle invertido IPv6.
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 ...