web-dev-qa-db-fra.com

Priorité IPv4 vs IPv6 dans Windows 7

J'ai une connectivité IPv6 via le tunnel Hurricane Electric. Depuis le jour IPv6 cette année, de nombreux services (google.com, facebook.com, etc.) ont activé IPv6 sur leurs domaines principaux. Sur mon ordinateur 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 le temps de latence de plus de 100%:

C:\> ping www.google.com

Pinging www.l.google.com [2001:4860:8005::68] with 32 bytes of data:
Reply from 2001:4860:8005::68: time=85ms
Reply from 2001:4860:8005::68: time=84ms
Reply from 2001:4860:8005::68: time=112ms
Reply from 2001:4860:8005::68: time=86ms

Ping statistics for 2001:4860:8005::68:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 84ms, Maximum = 112ms, Average = 91ms


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

Pinging www.l.google.com [173.194.79.103] with 32 bytes of data:
Reply from 173.194.79.103: bytes=32 time=28ms TTL=48
Reply from 173.194.79.103: bytes=32 time=28ms TTL=48
Reply from 173.194.79.103: bytes=32 time=55ms TTL=46
Reply from 173.194.79.103: bytes=32 time=29ms TTL=46

Ping statistics for 173.194.79.103:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 28ms, Maximum = 55ms, Average = 35ms

Question: Comment faire en sorte que Windows 7 préfère toujours IPv4, alors que les enregistrements IPv4 et IPv6 sont disponibles pour un nom de domaine spécifique?

31
haimg

Solution n ° 1: Ajouter une stratégie de préfixe pour préférer les adresses IPv4 à IPv6

La table de stratégie de préfixe est similaire à une table de routage, elle détermine les adresses IP préférées lors de l'établissement d'une connexion. Notez que la priorité plus élevée dans les stratégies de préfixe est représentée par une valeur "de priorité" plus récente, exactement à l'opposé de la valeur "de coût" de la table de routage.

Tableau de stratégie de préfixe Windows par défaut:

C:\>netsh interface ipv6 show prefixpolicies
Querying active state...

Precedence  Label  Prefix
----------  -----  --------------------------------
        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 rendra le tunnel IPv6 de Hurricane Electric moins favorable que toute adresse IPv4 :

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

2001: 470 ::/32 est le préfixe de Hurricane Electric, 3 une préséance (très faible) et 6 une étiquette.

J'aurais pu utiliser un préfixe plus générique, mais je voulais m'assurer que si je obtenais une connectivité IPv6 directe d'un fournisseur de services Internet, elle aurait priorité sur IPv4.

Si vous adaptez cette solution, vous devez remplacer le préfixe IPv6 approprié par mon préfixe Hurricane Electric.

Solution n ° 2: modifiez le registre pour que Windows privilégie 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 le tableau de stratégie de préfixe pour vous.

  • Ouvrez RegEdit, accédez à HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters
  • Créez la valeur de registre DisabledComponents DWORD et définissez-la sur 20 (Hexadécimale). Voir Microsoft KB 929852 pour plus d'informations sur cette clé de registre, en particulier si DisabledComponents existe déjà sur votre système.
  • Redémarrer.
40
haimg

Si le texte monospace et les tableaux avec des nombres et des symboles étranges vous effraient, vous pouvez le faire avec Microsoft Fix-its, des programmes d'installation simples de Microsoft qui apportent les modifications de configuration nécessaires.

Ceux-ci corrigent sa viennent de KB 2533454 , ce qui explique que vous souhaitiez le faire si votre connectivité IPv6 est rompue. Vous devez être un administrateur pour exécuter le correctif. Après le téléchargement, faites un clic droit et sélectionnez Exécuter en tant qu'administrateur.

20
Michael Hampton

Le moyen le plus simple, et ils sont toujours aussi simples que nous les oublions ...

  1. ouvrez le Centre Réseau et partage.

  2. Là, cliquez sur Modifier les paramètres de la carte.

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

  4. Après avoir cliqué sur advanced à 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é, ce sont les adaptateurs et les 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 les liaisons pour cet adaptateur). Mettez en surbrillance l’une des liaisons de la liste et vous remarquerez que les flèches vers la droite s’allument, utilisez-les pour modifier l’ordre de reliure selon vos préférences, puis choisissez ok à partir du 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. c'est-à-dire que vous changez un adaptateur et que le reste fait de même. Ainsi, par exemple, si vous choisissez IPV6 plutôt que 4 sur votre adaptateur sans fil, votre adaptateur LAN change également.

C'est le moyen le plus simple auquel je puisse penser pour effectuer cette tâche particulière sans avoir à trop réfléchir ni avoir trop de connaissances sur le routage des paquets sur un réseau inter.

7
StevenRowe6

Version courte

Before September 2012                     After September 2012
Precedence  Prefix                        Precedence  Prefix       
----------  -------------                 ----------  -------------
        50  ::1/128        IPv6 loopback          50  ::1/128        IPv6 loopback
        40  ::/0           Native IPv6            40  ::/0           Native IPv6
        40  fc00::/7       ULAs                   35  ::ffff:0:0/96  IPv4
        40  fec0::/10      site-local             30  2002::/16      6to4
        40  3ffe::/16      6bone                   5  2001::/32      Teredo
        30  2002::/16      6to4                    3  fc00::/7       ULAs
        20  ::/96          IPv4compat              1  fec0::/10      site-local
        10  ::ffff:0:0/96  IPv4                    1  3ffe::/16      6bone
         5  2001::/32      Teredo                  1  ::/96          IPv4compat

Version longue

RFC6724 a défini un changement dans la manière 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, posée en juin 2012, était "corrigée" par une RFC de septembre 2012. Selon votre version de Windows, cette nouvelle stratégie était prête à l'emploi (Windows 8.1) ou vraisemblablement. déjà livré via une mise à jour (Windows 8, Windows 7, Windows Vista).

Nous sommes ici parce que nous voulons utiliser IPv6; nous voulons que ce changement soit annulé.

Comment le remettre

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

  • Bouclage IPv6
  • IPv6 natif
  • Adresses uniques locales (ULA), par exemple fdxx ::
  • Site-local, par exemple fec0
  • 6bone
  • 6to4
  • IPv4compat
  • IPv4
  • Teredo, par exemple 2001

Sur votre ordinateur Windows, ce classement est appelé stratégie prefix.

Politique de préfixe

Vous pouvez afficher la stratégie de préfixe de votre ordinateur en exécutant:

>netsh int ipv6 show prefixpolicies

Dans les temps anciens (définis à l'origine par RFC 3484 ), la stratégie de préfixe était la suivante:

Precedence  Prefix         
----------  -------------
        50  ::1/128        IPv6 loopback
        40  ::/0           Native IPv6
        40  fc00::/7       ULAs
        40  fec0::/10      site-local
        40  3ffe::/16      6bone
        30  2002::/16      6to4
        20  ::/96          IPv4compat
        10  ::ffff:0:0/96  IPv4
         5  2001::/32      Teredo

Donc vous voyez que cela ferait à peu près toujours d'utiliser IPv6 (oui!):

  1. Bouclage IPv6
  2. IPv6 natif, Ulas, site local, 6one
  3. 6to4
  4. IPv4compat
  5. IPv4
  6. Teredo

Si vous avez déployé des efforts pour déployer IPv6: cela a fonctionné.

Nouvelle politique de préfixe

En 2012, un nouvel ordre de préférence a été défini par RFC6724 . De nos jours, la politique de préfixe garantit que vous n'utiliserez jamais IPv6:

Precedence  Prefix         
----------  -------------
        50  ::1/128        
        40  ::/0           Native IPv6
        35  ::ffff:0:0/96  IPv4
        30  2002::/16      
         5  2001::/32      
         3  fc00::/7       ULAs
         1  fec0::/10      site-local
         1  3ffe::/16      
         1  ::/96          

Vous verrez que vous jamais être en mesure d'utiliser vos adresses locales uniques, ou adresse de site local; c'est perpétuellement cassé:

  1. Bouclage IPv6
  2. IPv6 natif
  3. IPv4
  4. 6to4
  5. Teredo
  6. Ulas
  7. Site local
  8. 6bone
  9. IPv6compat

Comment le réparer?

Ce que nous voulons, c'est réparer IPv6 de manière à ce que les ULA soient préférés à IPv4. À tout le moins, nous souhaitons pousser l'utilisation des ULA (fc00::/7) au-dessus de celle d'IPv4:

Precedence  Prefix         
----------  -------------
        50  ::1/128        
        40  ::/0           Native IPv6
        37  fc00::/7       ULAs <---------- from 3 up to 37
        35  ::ffff:0:0/96  IPv4
        30  2002::/16      
         5  2001::/32      
         1  fec0::/10      site-local
         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 le gardera actif qu'au prochain redémarrage. Pour rendre le changement permanent:

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

Si je:

  • est passé par l'effort pour générer un préfixe global ULA pour mon/48
  • et choisissez un identifiant de sous-réseau pour my/64
  • et déployer des ULA sur toutes les machines de l'entreprise
  • et mettre à jour les serveurs DNS pour renvoyer les adresses IPv6 ULA en plus des adresses IPv4

le moins que l’ordinateur puisse faire est d’avoir la courtoisie habituelle d’utiliser l’adresse.

Bonus Chatter

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é que fc serait bon, et reste donc assis là.

Les adresses fd sont définies comme suit:

fd[40-bit random GlobalID][16-bit subnet][64-bits for Host assignment]

Donc, si vous avez généré a4d7f6dd66 en tant que votre cryptoghpcallly aléatoire 40 bits GlobalID, cela vous donnera 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 d'hôte

SixXS a mis à jour une base de données publique des préfixes GlobalID d’adresse locale unique afin de réduire les risques de collisions, exemple:

  • 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 du ralentissement de l’utilisation et de la valeur douteuse au départ, SixXS a interrompu le service en 2018.

Lecture bonus

1
Ian Boyd