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.


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

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.


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.


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á.


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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.