2012-06-13 23:34:40 +0000 2012-06-13 23:34:40 +0000
33
33

IPv4 vs IPv6 prioriteit in Windows 7

Ik heb IPv6 connectiviteit via Hurricane Electric tunnel. Sinds IPv6 dag dit jaar, hebben veel diensten (google.com, facebook.com, etc.) IPv6 ingeschakeld op hun hoofddomeinen. Op mijn Windows machine heeft IPv6 de voorkeur boven IPv4. Dit betekent dat wanneer ik Google bezoek, al het verkeer door mijn tunnel naar Hurricane Electric gaat, wat de latency met meer dan 100% verhoogt:

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

**Vraag: Hoe kan ik ervoor zorgen dat Windows 7 altijd de voorkeur geeft aan IPv4, wanneer er zowel IPv4- als IPv6-records beschikbaar zijn voor een specifieke domeinnaam?

Antwoorden (5)

45
45
45
2012-06-14 18:15:03 +0000

Oplossing #1: Voeg een prefix policy toe om IPv4 adressen te verkiezen boven IPv6

Prefix policy tabel is vergelijkbaar met een routeringstabel, het bepaalt welke IP adressen de voorkeur krijgen bij het maken van een verbinding. Merk op dat hogere voorrang in prefixbeleid wordt weergegeven door een hogere “voorrangswaarde”, precies tegenovergesteld aan de “kosten”-waarde in de routeringstabel.

Standaard Windows prefixbeleidstabel:

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

Merk op dat IPv6-adressen (::/0) de voorkeur hebben boven IPv4-adressen (::/96, ::ffff:0:0/96).

We kunnen een beleid maken dat ** Hurricane Electric IPv6 tunnel minder gunstig maakt dan elk IPv4 adres** :

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

2001:470::/32 is Hurricane Electric’s prefix, 3 is een Precedence (zeer laag) en 6 is een Label.

Ik had een meer generieke prefix kunnen gebruiken, maar ik wilde er zeker van zijn dat als en wanneer ik directe IPv6 connectiviteit van een ISP krijg, het voorrang zal hebben boven IPv4.

Als je deze oplossing aanpast, moet je een geschikte IPv6 prefix gebruiken in plaats van mijn Hurricane Electric prefix.

Oplossing #2: Tweak het register zodat Windows altijd IPv4 boven IPv6 verkiest

Deze oplossing is meer algemeen, maar meer ingrijpend en minder standaard-compliant. Uiteindelijk zal Windows nog steeds de prefixbeleidstabel voor u aanpassen.

  • Open RegEdit, navigeer naar HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters
  • Maak DisabledComponents DWORD registerwaarde, stel de waarde in op 20 (Hexadecimaal). Zie Microsoft KB 929852 voor meer info over deze registersleutel, vooral als DisabledComponents al op uw systeem bestaat.
  • Opnieuw opstarten.
23
23
23
2014-05-15 12:13:20 +0000

Als monospace tekst en tabellen met vreemde getallen en symbolen u afschrikken, kunt u dit doen met Microsoft Fix-its, eenvoudige installatieprogramma’s van Microsoft die de configuratie voor u wijzigen.

Deze fix its komen uit KB 2533454 , waarin wordt uitgelegd dat je dit zou willen doen als je IPv6-connectiviteit verbroken is. Je moet een administrator zijn om de fix its uit te voeren; klik na het downloaden met de rechtermuisknop en selecteer Uitvoeren als administrator.

7
7
7
2014-05-15 08:58:51 +0000

De meest simpele manier, en deze zijn altijd zo simpel dat we ze over het hoofd zien…

  1. Open Network and Sharing Center.

  2. Klik daar op Adapterinstellingen wijzigen

  3. Klik in de “Menubalk” op Geavanceerd. **Als je alleen “Organiseren” ziet, klik je daarop en kies je uit het uitklapmenu “Lay-out - Menubalk”

  4. Nadat je in de vorige stap op geavanceerd hebt geklikt, klik je in deze stap op “Geavanceerde instellingen” (er opent zich een vak op je scherm)

  5. De adapter die u op dit moment gebruikt, staat al in de bovenste helft van het scherm, met daaronder een uitsplitsing van zijn representatieve adapter (u zou de bindingen voor die adapter moeten zien). Markeer een van de bindingen in de lijst en je zou de pijlen aan de rechterkant moeten zien oplichten, gebruik die pijlen om de volgorde van de bindingen naar je voorkeur te veranderen en kies dan ok onderaan.

  6. Merk op dat net als wanneer je een protocol, service, of client installeert in je adapter eigenschappen. Hetzelfde geldt hier. dat is dat je één adapter verandert, en de rest volgt. Dus, bijvoorbeeld, als je IPV6 verkiest boven 4 op je draadloze adapter, verandert je LAN adapter ook.

Het is de eenvoudigste manier die ik kan bedenken om deze specifieke taak uit te voeren zonder al te veel na te hoeven denken over, of kennis te hebben van het routeren van pakketten op een inter-netwerk.

2
2
2
2018-10-31 02:38:41 +0000

Korte versie

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

Lange versie

RFC6724 definieerde een verandering in hoe adressen de voorkeur moeten krijgen. Met deze verandering is IPv6 niet langer het voorkeursadres in bijna alle gevallen :(

Deze vraag, die in juni 2012 werd gesteld, werd “opgelost” door een RFC van september 2012. Afhankelijk van uw Windows-versie, had u dit nieuwe beleid al uit de doos (Windows 8.1), of waarschijnlijk al geleverd via een update (Windows 8, Windows 7, Windows Vista).

We zijn hier omdat we willen dat IPv6 gebruikt wordt; we willen die verandering ongedaan maken.

Hoe het terug te zetten

Als je meerdere IP adressen voor een host krijgt, moet je machine beslissen welk adres hij gaat gebruiken. Een voorbeeld rangschikking zou kunnen zijn:

  • IPv6 loopback
  • Native IPv6
  • Unique-Local adressen (ULA’s), bijv. fdxx::
  • Site-local, bijv. fec0
  • 6bone
  • 6to4
  • IPv4compat
  • IPv4
  • Teredo, b.v. 2001

Op uw Windows machine wordt deze rangschikking de prefix policy genoemd.

Prefix policy

Je kunt de prefix policy van je computer bekijken door te draaien:

>netsh int ipv6 show prefixpolicies

In de oude tijden (oorspronkelijk gedefinieerd door RFC 3484 ), was de prefix policy:

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

Dus je ziet dat het vrijwel altijd IPv6 zou gebruiken (yay!):

  1. IPv6 loopback
  2. IPv6 loopback
  3. Native IPv6, ULAs, site-local, 6one
  4. 6to4
  5. IPv4compat
  6. IPv4
  7. Teredo

Als je de moeite hebt genomen om IPv6 te implementeren: het is gewoon gelukt.

Nieuwe Prefix Policy

In 2012 werd een nieuwe voorkeursvolgorde gedefinieerd door RFC6724 . Tegenwoordig zorgt de prefix policy er zo'n beetje voor dat je IPv6 nooit zult gebruiken:

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

Je zult zien dat je nooit in staat zult zijn om je Unique Local Addresses, of site-local adres te gebruiken; het is eeuwig kapot:

  1. IPv6 loopback
  2. Native IPv6
  3. IPv4
  4. 6to4
  5. Teredo
  6. ULAs
  7. site-local
  8. 6bone
  9. IPv6compat

Hoe los je het op?

Wat we willen is om IPv6 zo te maken dat ULAs de voorkeur krijgen boven IPv4. Op zijn minst willen we het gebruik van ULA’s (fc00::/7) boven dat van IPv4 duwen:

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

Wat gedaan wordt door:

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

Dat zal het slechts actief houden tot de volgende reboot. Om de verandering permanent te maken:

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

Als ik:

  • de moeite heb genomen om een globale ULA prefix te genereren voor mijn /48
  • en een subnet id te kiezen voor mijn /64
  • en ULA’s heb uitgerold naar iedere machine in de onderneming
  • en de DNS servers heb geupdate om IPv6 ULA adressen terug te geven naast IPv4 adressen

het minste wat de computer kan doen is de beleefdheid hebben om het adres te gebruiken.

Bonus Chatter

De fc00::/7 reeks is verdeeld in twee delen:

  • fd00::/8 - GlobalID prefix lokaal gegenereerd
  • fc00::/8 - ???

Niemand heeft ooit echt besloten waar fc goed voor zou zijn, en dus staat het daar maar.

De fd adressen zijn gedefinieerd als:

fd [40-bit random GlobalID] [16-bit subnet]

Dus als je [64-bits for host assignment] hebt gegenereerd als je cryptoghpcallly random 40-bit GlobalID, levert dat je /48 op:

  • a4d7f6dd66 /48
  • fda4:d7f5:dd66:: /64 (in het fda4:d7f5:dd66:face:: subnet)
  • face als host IP adres SixXS onderhoudt een openbare database van Unieke Local Address GlobalID voorvoegsels om de kans op collissies te verkleinen, bijv. b.v.:

  • fda4:d7f5:dd66:face::825: Apple Inc - Leopard OSX

  • fdee:e004:2208::/48: TekSavvy - Danny Murray

  • fdd4:43c8:ba34::/48: IBM Rational Build Forge - Chris Fuller

Maar vanwege het vertragende gebruik, en de dubieuze waarde in de eerste plaats, stopte SixXS de dienst in 2018.

Bonus Reading

0
0
0
2019-03-27 20:53:05 +0000

Er is een eenvoudiger methode die werkt voor mij. Ik veranderde gewoon de interface metric # om de prioriteit te bepalen. Ik had deze methode in het verleden gebruikt om de prioriteit van netwerkadapters te veranderen (Draadloze NIC prioriteit eerst, LAN NIC prioriteit tweede), maar ik ontdekte dat het ook werkt voor TCP/IPv4 en TCP/IPv6. In dit geval veranderde ik de interface metric van TCP/IPv4 van Automatisch naar 5, en TCP/IPv6 interface metric van Automatisch naar 10. Hoe lager het metrieknummer, hoe hoger de prioriteit. Start daarna uw PC opnieuw op. Dus als ik nu ping met de hostnaam, zal hij antwoorden met IPv4, in plaats van IPv6.

Hier is een meer gedetailleerde instructie https://www.windowscentral.com/how-change-priority-order-network-adapters-windows-10