No está haciendo ping a la misma interfaz Sin ninguna interfaz física, todavía tienes un "host local".
Su localhost
se utiliza para referirse a su ordenador desde su IP "interna", no desde ninguna IP "externa" de su ordenador. Por lo tanto, los paquetes de ping no pasan a través de ninguna interfaz de red física; sólo 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é localhost
está resolviendo ::1
mientras que tradicionalmente esperaríamos que se resolviera a la dirección IPv4 127.0.0.1
. Tenga en cuenta que .localhost
es tradicionalmente un TLD (véase RFC 2606 ) que apunta a la dirección IP de bucle de retorno (para IPv4, véase RFC 3330 especialmente 127.0.0.0/8).
Mirando hacia arriba localhost
utilizando nslookup
nos da:
nslookup localhost
...
Name: localhost
Addresses: ::1
127.0.0.1
Así, Windows prefiere utilizar la dirección IP de bucle de retorno IPv6 ::1
(ver 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 DNS de Windows.
Este artículo de KB nos habla de una configuración que afecta a lo que prefiere Windows, resaltada en negrita:
-
En el Editor del Registro, localice 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 ello, siga estos pasos:
-
En el menú Editar, apunte a Nuevo y luego haga clic en Valor DWORD (32 bits).
-
Escriba DisabledComponents y pulse ENTER.
-
Haga doble clic en DisabledComponents.
-
Escriba uno de los siguientes valores en el campo Datos de valor: para configurar el protocolo IPv6 en el estado deseado y, a continuación, haga clic en Aceptar:
- Tipo
0
para habilitar todos los componentes de IPv6. (Configuración por defecto de Windows)
- Tipo
0xffffffff
para desactivar todos los componentes IPv6, excepto la interfaz IPv6 loopback. Este valor también configura Windows para que prefiera el uso del Protocolo de Internet versión 4 (IPv4) sobre el IPv6, modificando las entradas en la tabla de políticas de prefijos. Para obtener más información, consulte Selección de direcciones de origen y destino.
- Tipo
0x20
para preferir IPv4 sobre IPv6 modificando las entradas en la tabla de políticas de prefijos.
- Tipo
0x10
para desactivar IPv6 en todas las interfaces que no sean de túnel (tanto en las interfaces LAN como en las de Protocolo Punto a Punto [PPP]).
- Tipo
0x01
para desactivar IPv6 en todas las interfaces de túnel. Entre ellos se encuentran el Protocolo de direccionamiento automático de túneles dentro del sitio (ISATAP), 6to4 y Teredo.
- Tipo
0x11
para desactivar todas las interfaces IPv6 excepto la interfaz IPv6 loopback.
-
Reinicie el ordenador para que este ajuste surta efecto.
¿Qué es esta tabla de política de prefijos?
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 las resoluciones DNS.
Ah, así que usando esa KB podríamos añadir entradas aquí que denoten que IPv4 tiene mayor precedencia que IPv6.
Nota: No hay razón para anular este comportamiento, a menos que tenga problemas de compatibilidad. El cambio de esta configuración en nuestro servidor de Windows rompió nuestro servidor de correo, por lo que debe ser manejado con cuidado...