web-dev-qa-db-fra.com

Désactiver IPv6 sur l'adresse de bouclage (hôte local, nom de l'ordinateur, ...)

Nous avons essayé d'installer un produit logiciel tiers sur une nouvelle machine Windows Server 2008 R2 et nous avons constaté que tout fonctionne sauf pour accéder aux services locaux via des adresses de bouclage telles que localhost ou le nom de l'ordinateur (ex: VPS-Web qui se résout en localhost). Nous n'utilisons pas IPv6 et souhaitons le désactiver jusqu'à ce que le logiciel soit compatible.

J'ai essayé d'utiliser ces instructions pour désactivation d'IPv6 sous Windows 2008 R2 mais cela n'a pas désactivé le protocole pour localhost. Pinging localhost ou VPS-Web renverra toujours ::1: au lieu de 127.0.0.1. Je peux utiliser ping localhost -4 pour obtenir l'adresse correcte, mais IPv6 est prioritaire sur IPv4, le logiciel tiers n'obtient donc que l'adresse IPv6.

16
Greg Bray

J'avais initialement vérifié le fichier hôte comme le suggérait SilverbackNet, mais sur un serveur Windows 2008 R2, c'est le fichier par défaut:

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

# indique un commentaire dans le fichier Host, donc toutes les entrées sont mises en commentaire et la première ligne est un peu déroutante. J'ai ensuite remarqué qu'il y avait deux entrées pour localhost qui ont été commentées, alors j'ai essayé de ne pas commenter l'IPv4 et cela a fonctionné! J'aurais dû essayer ça d'abord mais j'ai été éjecté par la première ligne. En utilisant le fichier Host ci-dessous, cingler le nom de l'ordinateur ou localhost retournera toujours une adresse IPv4, ce qui résout le problème avec le logiciel tiers!

# localhost name resolution is handled within DNS itself.
#   ::1         localhost
127.0.0.1       localhost
127.0.0.1       VPS-Web
12
Greg Bray

Définition de "DisabledComponents" = 0x20 sous

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

définira cette machine pour utiliser IPv4 au lieu d'IPv6 dans les stratégies de préfixe.

Créez la clé de registre si elle n'existe pas.

5
SomeGuy

Avez-vous essayé de supprimer l'entrée du fichier hosts dans% systemroot%\system32\drivers\etc? Cela devrait le faire, si vous avez juste besoin que "localhost" soit toujours IPv4. Cependant, s'il est basé sur le nom du serveur, cela ne fonctionnera probablement pas.

2
SilverbackNet

Le thread initial de ServerFault sur l'utilisation de la valeur de registre DisabledComponents est vraiment la meilleure façon de procéder. L'ajustement du fichier des hôtes ne devrait jamais être nécessaire dans un réseau qui fonctionne bien. Le registre Tweak est également beaucoup plus facile à déployer et à rétablir via la stratégie de groupe si vous avez un Active Directory.

La raison pour laquelle cela n'a pas fonctionné est que ce paramètre de registre DisabledComponents est lu comme un ensemble d'indicateurs de bits et non simplement activé ou désactivé. Voici la documentation officielle de Microsoft sur le sujet:
Comment désactiver IP version 6 (IPv6) ou ses composants spécifiques dans Windows 7, Windows Vista, Windows Server 2008 R2 et Windows Server 2008

La version courte est que pour désactiver complètement IPv6 sur Vista/2008 et au-delà, définissez la valeur de DisabledComponents sur 0xff. Je le fais sur chaque machine que je gère où nous n'utilisons pas explicitement IPv6. Il a pour effet secondaire de Nice de raccourcir considérablement la sortie de la commande ipconfig.

2
Ryan Bolger

Vous pouvez également entrer dans les propriétés du NIC lui-même, et décocher la case IPv6, en laissant IPv4 activé. Devrait faire l'affaire.

0
JohnThePro