Desabilitar o IPv6 no endereço de loopback (host local, nome do computador,…)

15

Tentamos instalar um produto de software de terceiros em uma nova máquina com Windows Server 2008 R2 e descobrimos que tudo funciona, exceto o acesso a serviços locais por meio de endereços de loopback, como localhosto nome do computador (por exemplo, VPS-Webque resolve localhost). Não estamos usando o IPv6 e gostaríamos de desativá-lo até que o software seja compatível.

Tentei usar estas instruções para desativar o IPv6 no Windows 2008 R2, mas ele não desativou o protocolo localhost. Ping localhostou VPS-Webainda retornará em ::1:vez de 127.0.0.1. Posso usar ping localhost -4para obter o endereço correto, mas o IPv6 tem precedência sobre o IPv4, para que o software de terceiros obtenha apenas o endereço IPv6.

Greg Bray
fonte
Você já tentou entrar em contato com o fornecedor para ver se eles têm uma solução alternativa? O ping solicita o endereço IPv6 e, portanto, ele obtém :: 1; aplicativos que não suportam IPv6, porém, não recebem esses endereços.
Chris S
O software é uma abominação de vários componentes (JAVA, Tomcat, Apache, MSSQL, SAP, JDBC, WMI), qualquer um dos quais poderia ser o problema. Como não estou usando o IPv6, gostaria de desativá-lo. Também me preocupa que não pareça haver uma opção para fazer isso no adaptador de loopback.
Greg Bray

Respostas:

12

Inicialmente, verifiquei o arquivo host como o SilverbackNet sugeriu, mas em um servidor Windows 2008 R2, este é o arquivo padrão:

# localhost name resolution is handled within DNS itself.
#   127.0.0.1       localhost
#   ::1             localhost

#indica um comentário no arquivo host, portanto, todas as entradas são comentadas e a primeira linha é um pouco confusa. Percebi então que havia duas entradas para o host local comentadas, então tentei descomentar a do IPv4 e funcionou! Eu deveria ter tentado isso primeiro, mas fui jogado para fora da pista pela primeira linha. Usar o arquivo host abaixo, executando ping no nome do computador ou no host local, sempre retornará um endereço IPv4, o que corrige o problema com o software de terceiros!

# localhost name resolution is handled within DNS itself.
#   ::1         localhost
127.0.0.1       localhost
127.0.0.1       VPS-Web
Greg Bray
fonte
Isso removeu o ipv6 ([::]) ouvindo no netstat?
precisa
Isso não. [::] é o equivalente do IPv6 a 0.0.0.0, que representa todos os endereços IP disponíveis no sistema. A correção acima é especificamente para o endereço de loopback do host local. Eu tenho as configurações acima, assim como a chave de registro DisabledComponents = 0xffffffff, e ainda vejo os aplicativos ouvindo em [::]. Não sei se há alguma maneira de desativar completamente o IPv6.
Greg Bray
Obrigado por confirmar o meu problema! Eu estava apenas certificando-se :)
Jared Burrows
Isso não funcionou para mim. Corei dns cache e reiniciado, mas ainda retorna um endereço IPv6 ...
jj_
5

Definir "DisabledComponents" = 0x20 em

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip6 \ Parameters \

configurará essa máquina para usar o IPv4 em vez do IPv6 nas políticas de prefixo.

Crie a chave do registro se ela não existir.

SomeGuy
fonte
2

O thread inicial ServerFault sobre o uso do DisabledComponentsvalor do registro é realmente a melhor maneira de fazer isso. O ajuste de arquivos de hosts nunca deve ser necessário em uma rede que funcione bem. O ajuste do registro também é muito mais fácil de implantar e reverter via diretiva de grupo, se você tiver um Active Directory.

O motivo pelo qual não funcionou é porque essa DisabledComponentsconfiguração do registro é lida como um conjunto de sinalizadores de bits e não simplesmente ativada ou desativada. Aqui está a documentação oficial da Microsoft sobre o assunto:
Como desativar o IP versão 6 (IPv6) ou seus componentes específicos no Windows 7, no Windows Vista, no Windows Server 2008 R2 e no Windows Server 2008

A versão curta é que, para desativar completamente o IPv6 no Vista / 2008 e além, defina o valor de DisabledComponentscomo 0xff. Faço isso em todas as máquinas que gerencio onde não estamos usando explicitamente o IPv6. Ele tem o bom efeito colateral de reduzir significativamente a saída do ipconfigcomando.

Ryan Bolger
fonte
2
De acordo com o seu link ( support.microsoft.com/kb/929852#letmefixit ) essa entrada do Registro permite desativar IPv6 em muitos lugares EXCETO loopback ...
Frank Nocke
1
Você está certo. No entanto, existem valores que alteram a funcionalidade de rede padrão para preferir o IPv4 em vez do IPv6, que resolverão efetivamente os problemas do OP ao se conectar ao host local ou ao nome do computador NetBIOS.
Ryan Bolger
Nenhuma delas realmente funcionou para mim no Windows Server 2012R2. Isso inclui tentar a modificação de hosts, a configuração do registro DisabledComponents, além de muitas outras idéias que já vi em outros lugares. Funciona no Windows Server 2008, mas não tenho solução para 2012R2.
23715 Scott Scott
Você precisa reiniciar depois de modificar o valor DisabledComponents. Se você o definiu como 0xffffffff, não há como não funcionar nem no 2012R2. Os resultados da execução de um ipconfig não devem retornar nada relacionado ao IPv6 e, como tal, o ping do host local deve executar ping no endereço v4.
Ryan Bolger
Nova descoberta mostra que o valor correto deve ser 0xFF em vez de 0xFFFFFFF para evitar um atraso de inicialização de 5 segundos. Veja a atualizados Microsoft KB929852 (Isto ainda não desativar a auto-retorno embora)
wandersick
2

Você tentou remover a entrada do arquivo hosts em% systemroot% \ system32 \ drivers \ etc? Isso deve ser feito, se você precisar que "localhost" seja sempre IPv4. No entanto, se for baseado no nome do servidor, isso provavelmente não funcionará.

SilverbackNet
fonte
1
O arquivo hosts no Windows está abaixo de% systemroot% \ system32 \ drivers \ etc e, mesmo que não contenha uma referência ipv6 para o ping do host local, o localhost receberá uma resposta :: 1.
Helvick 4/11/11
Você receberá uma resposta 127.0.0.1, se você mapear localhost para que (e somente a isso, não IPv6)
Frank Nocke
0

Você também pode acessar as propriedades da própria NIC e desmarcar a caixa IPv6, deixando o IPv4 ativado. Deve fazer o truque.

JohnThePro
fonte
3
Não funciona para o endereço de auto-retorno ...
Greg Bray
awww! :( haha ​​!!
JohnThePro
Isso desativa apenas a interface da LAN. O túnel e de auto-retorno ainda está conectado aqui (verificar via netsh interface ipv6> show interface)
Chadddada
-3

Tente adicionar uma linha ao seu arquivo hosts, como:

::1 VPW-Web

Isso deve permitir que o resolvedor obtenha VPW-Webum nome para o loopback do IPv6.

BillThor
fonte