Deshabilite IPv6 en la dirección de bucle invertido (Localhost, nombre de la computadora, ...)

15

Intentamos instalar un producto de software de terceros en una nueva máquina con Windows Server 2008 R2 y descubrimos que todo funciona, excepto el acceso a servicios locales a través de direcciones de bucle invertido, como localhostel nombre de la computadora (por ejemplo, VPS-Webque se resuelve localhost). No estamos utilizando IPv6 y nos gustaría desactivarlo hasta que el software sea compatible.

Intenté usar estas instrucciones para deshabilitar IPv6 en Windows 2008 R2 pero no deshabilitó el protocolo localhost. Ping localhosto VPS-Webtodavía regresará en ::1:lugar de 127.0.0.1. Puedo usar ping localhost -4para obtener la dirección correcta, pero IPv6 tiene prioridad sobre IPv4, por lo que el software de terceros solo obtiene la dirección IPv6.

Greg Bray
fuente
¿Ha intentado ponerse en contacto con el proveedor para ver si tienen una solución alternativa? Ping solicita la dirección IPv6, por lo tanto obtendrá :: 1, aunque las aplicaciones que no admiten IPv6 no obtendrán esas direcciones.
Chris S
El software es una abominación de varios componentes (JAVA, Tomcat, Apache, MSSQL, SAP, JDBC, WMI), cualquiera de los cuales podría ser el problema. No estoy usando IPv6, así que me gustaría deshabilitarlo. También me preocupa que no parece haber una opción para hacer esto para el adaptador de bucle invertido.
Greg Bray

Respuestas:

12

Inicialmente había verificado el archivo host como SilverbackNet sugirió, pero en un servidor Windows 2008 R2 este es el archivo predeterminado:

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

#indica un comentario en el archivo host, por lo que todas las entradas están comentadas, y la primera línea es un poco confusa. Luego noté que había dos entradas para localhost que estaban comentadas, así que traté de descomentar el IPv4 y funcionó. Debería haberlo intentado primero pero la primera línea me desvió. El uso del siguiente archivo de host que hace ping al nombre de la computadora o localhost siempre devolverá una dirección IPv4, lo que soluciona el problema con el software de terceros.

# localhost name resolution is handled within DNS itself.
#   ::1         localhost
127.0.0.1       localhost
127.0.0.1       VPS-Web
Greg Bray
fuente
¿Esto eliminó la escucha de ipv6 ([::]) en netstat?
Jared Burrows
No es asi. [::] es el equivalente de IPv6 de 0.0.0.0, que representa todas las direcciones IP disponibles en el sistema. La corrección anterior es específicamente para la dirección de bucle de retorno localhost. Tengo tanto la configuración anterior como la clave de registro DisabledComponents = 0xffffffff y todavía veo aplicaciones escuchando en [::]. No sé si hay alguna forma de desactivar completamente IPv6.
Greg Bray
¡Gracias por confirmar mi problema! Solo me estaba asegurando :)
Jared Burrows
Esto no funcionó para mí. Enrojecí caché DNS y reiniciado, pero todavía devuelve una dirección IPv6 ...
jj_
5

Establecer "DisabledComponents" = 0x20 en

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

configurará esa máquina para usar IPv4 en lugar de IPv6 en las políticas de prefijos.

Cree la clave de registro si no existe.

Algún chico
fuente
2

El hilo inicial de ServerFault sobre el uso del DisabledComponentsvalor del registro es realmente la mejor manera de hacerlo. Los ajustes de archivos de hosts nunca deberían ser necesarios en una red que funcione bien. El ajuste del registro también es mucho más fácil de implementar y revertir a través de la política de grupo si tiene un Active Directory.

La razón por la que no funcionó es porque esa DisabledComponentsconfiguración de registro se lee como un conjunto de marcas de bits y no simplemente activada o desactivada. Aquí está la documentación oficial de Microsoft sobre el tema:
Cómo deshabilitar la versión 6 de IP (IPv6) o sus componentes específicos en Windows 7, Windows Vista, Windows Server 2008 R2 y Windows Server 2008

La versión corta es que para desactivar completamente IPv6 en Vista / 2008 y más allá, establezca el valor de DisabledComponentsa 0xff. Hago esto en cada máquina que administro donde no estamos usando explícitamente IPv6. Tiene el agradable efecto secundario de acortar significativamente la salida del ipconfigcomando.

Ryan Bolger
fuente
2
Según su enlace ( support.microsoft.com/kb/929852#letmefixit ), esta entrada del registro permite deshabilitar IPv6 en muchos lugares, EXCEPTO el bucle invertido ...
Frank Nocke
1
Estás en lo correcto. Sin embargo, hay valores que cambian la funcionalidad de red predeterminada para preferir IPv4 sobre IPv6, lo que resolverá efectivamente los problemas del OP al conectarse a localhost o al nombre de la computadora NetBIOS.
Ryan Bolger
Ninguno de estos me ha funcionado realmente en Windows Server 2012R2. Esto incluye probar la modificación de hosts, la configuración del registro DisabledComponents además de muchas otras ideas que he visto en otros lugares. Funciona en Windows Server 2008 pero no tengo solución para 2012R2.
Scott White
Debe reiniciar después de modificar el valor de DisabledComponents. Si lo configuró en 0xffffffff, no hay forma de que no funcione incluso en 2012R2. Los resultados de ejecutar un ipconfig no deberían devolver nada relacionado con IPv6 y, como tal, hacer ping a localhost debería hacer ping a la dirección v4.
Ryan Bolger
Un nuevo hallazgo muestra que el valor correcto debe ser 0xFF en lugar de 0xFFFFFFF para evitar un retraso de arranque de 5 segundos. Vea el Microsoft KB929852 actualizado (aunque esto todavía no deshabilita el loopback)
wandersick
2

¿Has intentado eliminar la entrada del archivo hosts en% systemroot% \ system32 \ drivers \ etc? Eso debería hacerlo, si solo necesita "localhost" para ser siempre IPv4. Sin embargo, si se basa en el nombre del servidor, esto probablemente no funcionará.

SilverbackNet
fuente
1
El archivo de hosts en Windows está bajo% systemroot% \ system32 \ drivers \ etc e incluso si no contiene una referencia de ipv6 para el ping localhost localhost obtendrá una respuesta :: 1.
Helvick
Obtendrá una respuesta 127.0.0.1, si
asigna
0

También puede acceder a las propiedades de la NIC en sí y desmarcar la casilla IPv6, dejando IPv4 habilitado. Debería hacer el truco.

JohnThePro
fuente
3
No funciona para la dirección de bucle invertido ...
Greg Bray
awww! :( jaja !!
JohnThePro
Esto solo deshabilita la interfaz LAN. El túnel y el bucle de retorno todavía están conectados aquí (verificar a través de la interfaz netsh ipv6> mostrar interfaz)
Chadddada
-3

Intente agregar una línea a su archivo de hosts como:

::1 VPW-Web

Esto debería permitir que el solucionador obtenga VPW-Webun nombre para el bucle invertido IPv6.

BillThor
fuente