41 votes

IPv4 vs IPv6 priorité dans Windows 7

J'ai une connectivité IPv6 via tunnel Hurricane Electric. Depuis le Jour de l'IPv6 cette année, de nombreux services (google.com, facebook.com, etc.) ont activé l'IPv6 sur leurs domaines principaux. Sur ma machine Windows, IPv6 est préféré à IPv4. Cela signifie que chaque fois que je visite Google, tout le trafic passe par mon tunnel vers Hurricane Electric, ce qui augmente la latence de plus de 100% :

C:\> ping www.google.com

Envoi d’une requête 'ping' sur www.l.google.com [2001:4860:8005::68] avec 32 octets de données :
Réponse de 2001:4860:8005::68 : temps=85ms
Réponse de 2001:4860:8005::68 : temps=84ms
Réponse de 2001:4860:8005::68 : temps=112ms
Réponse de 2001:4860:8005::68 : temps=86ms

Statistiques Ping pour 2001:4860:8005::68 :
    Paquets : envoyés = 4, reçus = 4, perdus = 0 (0% de perte),
Durée approximative des boucles en millisecondes :
    Minimum = 84ms, Maximum = 112ms, Moyenne = 91ms

C:\> ping -4 www.google.com

Envoi d’une requête 'ping' sur www.l.google.com [173.194.79.103] avec 32 octets de données :
Réponse de 173.194.79.103 : octets=32 temps=28ms TTL=48
Réponse de 173.194.79.103 : octets=32 temps=28ms TTL=48
Réponse de 173.194.79.103 : octets=32 temps=55ms TTL=46
Réponse de 173.194.79.103 : octets=32 temps=29ms TTL=46

Statistiques Ping pour 173.194.79.103 :
    Paquets : envoyés = 4, reçus = 4, perdus = 0 (0% de perte),
Durée approximative des boucles en millisecondes :
    Minimum = 28ms, Maximum = 55ms, Moyenne = 35ms

Question : Comment puis-je faire en sorte que Windows 7 privilégie toujours l'IPv4, lorsque des enregistrements IPv4 et IPv6 sont disponibles pour un nom de domaine spécifique ?

56voto

haimg Points 21323

Solution #1: Ajouter une politique de préfixe pour préférer les adresses IPv4 aux adresses IPv6

La table de politique de préfixe est similaire à une table de routage, elle détermine quelles adresses IP sont préférées lors de l'établissement d'une connexion. Notez que la préférence plus élevée dans les politiques de préfixe est représentée par une valeur de "précédence" plus élevée, exactement à l'opposé de la valeur "coût" de la table de routage.

Table de politique de préfixe par défaut de Windows:

C:\> netsh interface ipv6 show prefixpolicies
Interrogation de l'état actif...

Précédence  Étiquette  Préfixe
----------  -----  --------------------------------
        50      0  ::1/128
        40      1  ::/0
        30      2  2002::/16
        20      3  ::/96
        10      4  ::ffff:0:0/96
         5      5  2001::/32

Notez que les adresses IPv6 (::/0) sont préférées aux adresses IPv4 (::/96, ::ffff:0:0/96).

Nous pouvons créer une politique qui fera en sorte que le tunnel IPv6 de Hurricane Electric soit moins favorable que n'importe quelle adresse IPv4:

netsh interface ipv6 add prefixpolicy 2001:470::/32 3 6

2001:470::/32 est le préfixe de Hurricane Electric, 3 est une Précédence (très basse) et 6 est une Étiquette.

J'aurais pu utiliser un préfixe plus générique, mais je voulais m'assurer que si et quand j'obtiens une connectivité IPv6 directe auprès d'un FAI, elle prendra le pas sur IPv4.

Si vous adaptez cette solution, vous devez substituer un préfixe IPv6 approprié à la place du mien chez Hurricane Electric.

Solution #2: Ajuster le registre pour faire en sorte que Windows préfère toujours IPv4 à IPv6

Cette solution est plus générique, mais plus invasive et moins conforme aux normes. En fin de compte, Windows modifiera toujours la table de politique de préfixe pour vous.

  • Ouvrez RegEdit, naviguez jusqu'à HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters
  • Créez une valeur de registre DWORD DisabledComponents, définissez sa valeur à 20 (hexadécimal). Consultez Microsoft KB 929852 pour plus d'informations sur cette clé de registre, en particulier si DisabledComponents existe déjà sur votre système.
  • Redémarrez.

23voto

Michael Hampton Points 13142

Si le texte en mode monospace et les tableaux avec des nombres et des symboles étranges vous effraient, vous pouvez le faire avec les solutions de réparation de Microsoft, des installateurs simples de Microsoft qui effectuent les modifications de configuration pour vous.

Ces solutions proviennent de KB 2533454, qui explique que vous voudriez le faire si votre connectivité IPv6 est cassée. Vous devez être un administrateur pour exécuter les solutions de réparation; après le téléchargement, faites un clic droit et sélectionnez Exécuter en tant qu'administrateur.

7voto

JoLau Points 33

La manière la plus simple, et celles-ci sont toujours si simples que nous les négligeons...

  1. Ouvrez le Centre Réseau et partage.

  2. Cliquez ensuite sur Modifier les paramètres de l'adaptateur.

  3. Sur la "Barre de menu" Cliquez sur Avancé. ** Remarque... Si vous voyez seulement "Organiser", cliquez dessus, puis dans le menu déroulant choisissez "Disposition - Barre de menu"

  4. Après avoir cliqué sur Avancé à l'étape précédente, cliquez sur "Paramètres avancés" à cette étape (une boîte s'ouvrira sur votre écran).

  5. Ce qui est affiché est des adaptateurs et des paramètres et l'adaptateur que vous utilisez actuellement sera déjà mis en surbrillance dans la moitié supérieure et sa répartition représentative ci-dessous (vous devriez voir des liaisons pour cet adaptateur). Mettez en surbrillance l'une des liaisons dans la liste et vous devriez remarquer que les flèches à droite s'allument, utilisez ces flèches pour changer l'ordre de liaison selon votre préférence, puis choisissez ok en bas.

  6. Notez que tout comme lorsque vous installez un protocole, un service ou un client dans les propriétés de votre adaptateur. La même chose s'applique ici. ce qui signifie que vous modifiez un adaptateur, et les autres suivent. Par exemple, si vous choisissez IPV6 de préférence sur 4 sur votre adaptateur sans fil, votre adaptateur LAN change aussi.

C'est la manière la plus facile que je puisse penser pour accomplir cette tâche particulière sans avoir à trop réfléchir, ou à avoir trop de connaissances sur le routage des paquets sur un réseau interne.

6voto

Remi Despres-Smyth Points 1500

Version courte

Avant septembre 2012                      Après septembre 2012
Priorité   Préfixe                          Priorité   Préfixe       
----------  -------------                   ----------  -------------
        50  ::1/128        Boucle IPv6                50  ::1/128        Boucle IPv6
        40  ::/0           IPv6 natif                40  ::/0           IPv6 natif
        40  fc00::/7       Adresses locales uniques   35  ::ffff:0:0/96  IPv4
        40  fec0::/10      Zone locale               30  2002::/16      6to4
        40  3ffe::/16      6bone                     5  2001::/32      Teredo
        30  2002::/16      6to4                      3  fc00::/7       Adresses locales uniques
        20  ::/96          IPv4compatibilité          1  fec0::/10      Zone locale
        10  ::ffff:0:0/96  IPv4                      1  3ffe::/16      6bone
         5  2001::/32      Teredo                    1  ::/96          IPv4compatibilité

Version longue

RFC6724 a défini un changement dans la façon dont les adresses devraient être préférées. Avec ce changement, IPv6 n'est plus l'adresse préférée dans presque tous les cas :(

Cette question, qui a été posée en juin 2012, a été "corrigée" par un RFC de septembre 2012. Selon votre version de Windows, vous aviez soit cette nouvelle politique directement en place (Windows 8.1), soit déjà livrée via une mise à jour (Windows 8, Windows 7, Windows Vista).

Nous sommes ici parce que nous voulons utiliser IPv6 ; nous voulons annuler ce changement.

Comment la rétablir

Si vous obtenez plusieurs adresses IP pour un seul hôte, votre machine doit décider quelle adresse elle utilisera. Un classement exemple pourrait être :

  • Boucle IPv6
  • IPv6 natif
  • Adresses locales uniques (ULAs), p. ex. fdxx::
  • Zone locale, p. ex. fec0
  • 6bone
  • 6to4
  • IPv4compatibilité
  • IPv4
  • Teredo, p. ex. 2001

Sur votre machine Windows, ce classement est appelé la politique de préfixe.

Politique de préfixe

Vous pouvez voir la politique de préfixe de votre ordinateur en exécutant :

>netsh int ipv6 show prefixpolicies

Dans le temps ancien (initialement défini par RFC 3484), la politique de préfixe était :

Priorité   Préfixe         
----------  -------------
        50  ::1/128        Boucle IPv6
        40  ::/0           IPv6 natif
        40  fc00::/7       ULAs
        40  fec0::/10      Zone locale
        40  3ffe::/16      6bone
        30  2002::/16      6to4
        20  ::/96          IPv4compatibilité
        10  ::ffff:0:0/96  IPv4
         5  2001::/32      Teredo

Ainsi, vous voyez qu'il utilisera presque toujours IPv6 (hourra !) :

  1. Boucle IPv6
  2. IPv6 natif, ULAs, zone locale, 6bone
  3. 6to4
  4. IPv4compatibilité
  5. IPv4
  6. Teredo

Si vous avez fait l'effort de déployer IPv6 : ça a juste fonctionné.

Nouvelle Politique de Préfixe

En 2012, un nouvel ordre de préférence a été défini par RFC6724. Aujourd'hui, la politique de préfixe assure presque toujours que vous n'utiliserez jamais IPv6 :

Priorité   Préfixe         
----------  -------------
        50  ::1/128        
        40  ::/0           IPv6 natif
        35  ::ffff:0:0/96  IPv4
        30  2002::/16      
         5  2001::/32      
         3  fc00::/7       ULAs
         1  fec0::/10      Zone locale
         1  3ffe::/16      
         1  ::/96          

Vous verrez que vous ne pourrez jamais utiliser vos adresses uniques locales, ou l'adresse de zone locale ; c'est perpétuellement cassé :

  1. Boucle IPv6
  2. IPv6 natif
  3. IPv4
  4. 6to4
  5. Teredo
  6. ULAs
  7. Zone locale
  8. 6bone
  9. IPv6compatibilité

Comment le réparer ?

Ce que nous voulons, c'est réparer IPv6 pour que les ULAs soient préférées par rapport à IPv4. Au moins, nous voulons favoriser l'utilisation des ULAs (fc00::/7) par rapport à celle d'IPv4 :

Priorité   Préfixe         
----------  -------------
        50  ::1/128        
        40  ::/0           IPv6 natif
        37  fc00::/7       ULAs <---------- de 3 à 37
        35  ::ffff:0:0/96  IPv4
        30  2002::/16      
         5  2001::/32      
         1  fec0::/10      Zone locale
         1  3ffe::/16      
         1  ::/96          

Ce qui est fait par :

>netsh interface ipv6 set prefixpolicy prefix=fc00::/7 precedence=37 label=13 store=active

Cela ne sera actif que jusqu'au prochain redémarrage. Pour rendre le changement permanent :

>netsh interface ipv6 set prefixpolicy fc00::/7 37 13

Si j'ai :

  • fourni un préfixe Global ULA pour mon /48
  • et choisi un ID de sous-réseau pour mon /64
  • et déployé les ULAs sur chaque machine de l'entreprise
  • et mis à jour les serveurs DNS pour renvoyer des adresses ULA IPv6 en plus des adresses IPv4

le moins que l'ordinateur pourrait faire est d'avoir la courtoisie d'utiliser cette adresse.

Contenu supplémentaire

La plage fc00::/7 est divisée en deux parties :

  • fd00::/8 - Préfixe GlobalID généré localement
  • fc00::/8 - ???

Personne n'a jamais vraiment décidé de ce que le fc serait bon pour, il reste donc là.

Les adresses fd sont définies comme suit :

fd [40 bits GlobalID aléatoires] [16 bits de sous-réseau] [64 bits pour l'assignation d'hôte]

Donc, si vous avez généré a4d7f6dd66 comme votre GlobalID aléatoire cryptographique de 40 bits, cela vous donne votre /48 :

  • fda4:d7f5:dd66:: /48
  • fda4:d7f5:dd66:face:: /64 (dans le sous-réseau face)
  • fda4:d7f5:dd66:face::825 en tant qu'adresse IP hôte

SixXS maintenait une base de données publique des préfixes GlobalID d'adresses locales uniques afin de réduire les risques de collision, p. ex. :

  • fdee:e004:2208::/48 : Apple Inc - Leopard OSX
  • fdd4:43c8:ba34::/48 : TekSavvy - Danny Murray
  • fdac:afbd:fea1::/48 : IBM Rational Build Forge - Chris Fuller

Mais en raison de l'utilisation décroissante, et de la valeur douteuse au départ, SixXS a interrompu le service en 2018.

Lecture supplémentaire

0voto

Sam N Points 1

Il existe une méthode plus simple qui fonctionne pour moi. J'ai simplement modifié la métrique d'interface # pour déterminer sa priorité. J'avais déjà utilisé cette méthode par le passé pour changer la priorité des adaptateurs réseau (priorité du NIC sans fil en premier, priorité du NIC LAN en second), mais j'ai découvert que cela fonctionne également pour TCP/IPv4 et TCP/IPv6. Dans ce cas, j'ai changé la métrique d'interface de TCP/IPv4 de Automatique à 5, et la métrique d'interface de TCP/IPv6 de Automatique à 10. Plus le numéro de métrique est bas, plus sa priorité est élevée. Ensuite, redémarrez votre PC. Maintenant, chaque fois que je fais un ping en utilisant le nom d'hôte, il répondra en IPv4, au lieu d'IPv6.

Voici des instructions plus détaillées

https://www.windowscentral.com/how-change-priority-order-network-adapters-windows-10

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X