Você não está executando ping na mesma interface , sem nenhuma interface física, você ainda possui um "host local".
Seu localhost
é usado para se referir ao seu computador a partir do IP "interno", não de nenhum IP "externo" do seu computador. Portanto, os pacotes de ping não passam por nenhuma interface de rede física; somente através de uma interface de loop back virtual que envia diretamente os pacotes de porta em porta sem nenhum salto físico.
Você ainda pode se perguntar por que localhost
está resolvendo ::1
, enquanto tradicionalmente esperamos que ele resolva para o endereço IPv4 127.0.0.1
. Observe que .localhost
tradicionalmente é um TLD (consulte a RFC 2606 ) que aponta para o endereço IP de loopback (para IPv4, consulte a RFC 3330 , especialmente 127.0.0.0/8).
Olhar para cima localhost
usando nslookup
nos fornece:
nslookup localhost
...
Name: localhost
Addresses: ::1
127.0.0.1
Portanto, o Windows prefere usar o endereço IP de retorno de loop IPv6 ::1
(consulte RFC 2373 ), conforme listado primeiro.
Ok, então, de onde ele vem, vamos dar uma olhada no arquivo hosts.
type %WINDIR%\System32\Drivers\Etc\Hosts
...
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
...
Hmm, temos que olhar para as configurações de DNS do Windows.
Este artigo da KB nos fala sobre uma configuração que afeta o que o Windows prefere, enfatizada em negrito:
No Editor do Registro, localize e clique na seguinte subchave do Registro:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters
Clique duas vezes em DisabledComponents para modificar a entrada DisabledComponents.
Nota: Se a entrada DisabledComponents estiver indisponível, você deverá criá-la. Para fazer isso, execute as seguintes etapas:
No menu Editar, aponte para Novo e clique em Valor DWORD (32 bits).
Digite DisabledComponents e, em seguida, pressione ENTER.
Clique duas vezes em DisabledComponents.
Digite qualquer um dos seguintes valores no campo Dados do valor: para configurar o protocolo IPv6 para o estado desejado e clique em OK:
- Digite
0
para ativar todos os componentes IPv6. (Configuração padrão do Windows)
- Digite
0xffffffff
para desativar todos os componentes IPv6, exceto a interface de loopback IPv6. Esse valor também configura o Windows para preferir usar o IPv4 (Internet Protocol versão 4) em vez do IPv6, modificando as entradas na tabela de políticas de prefixo. Para mais informações, consulte Seleção de endereço de origem e destino.
- Digite
0x20
para preferir o IPv4 sobre o IPv6, modificando as entradas na tabela de políticas de prefixo.
- Digite
0x10
para desativar o IPv6 em todas as interfaces não-túneis (nas interfaces LAN e Protocolo Ponto a Ponto [PPP]).
- Digite
0x01
para desativar o IPv6 em todas as interfaces de túnel. Isso inclui o protocolo ISATAP (6A4) e o Teredo.
- Digite
0x11
para desativar todas as interfaces IPv6, exceto a interface de loopback IPv6.
Reinicie o computador para que essa configuração entre em vigor.
O que é essa tabela de política de prefixo?
netsh interface ipv6 show prefixpolicies
(ou prefixpolicy
em versões 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 tabela decide quais prefixos têm precedência sobre outros prefixos durante a resolução do DNS.
Ah, então, usando esse KB, poderíamos adicionar entradas aqui que indicam que o IPv4 tem precedência mais alta que o IPv6.
Nota: Não há motivo para substituir esse comportamento, a menos que você esteja enfrentando problemas compatíveis. A alteração dessa configuração em nosso Windows Server interrompeu nosso servidor de correio, portanto deve ser manuseada com cuidado ...