IPv4 vs IPv6-Priorität in Windows 7

31

Ich habe IPv6-Konnektivität durch Hurricane Electric-Tunnel. Seit dem diesjährigen IPv6-Tag haben viele Dienste (google.com, facebook.com usw.) IPv6 auf ihren Hauptdomains aktiviert. Auf meinem Windows-Computer wird IPv6 IPv4 vorgezogen. Das bedeutet, dass bei jedem Besuch von Google der gesamte Datenverkehr durch meinen Tunnel zu Hurricane Electric geleitet wird, wodurch sich die Latenz um mehr als 100% erhöht:

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

Frage: Wie kann ich Windows 7 so konfigurieren, dass IPv4 immer bevorzugt wird, wenn sowohl IPv4- als auch IPv6-Einträge für einen bestimmten Domänennamen verfügbar sind?

haimg
quelle
4
Bei den meisten Betriebssystemen müssen Sie hierfür die Präfixrichtlinie konfigurieren - unter Windows über netsh interface ipv6 show prefixpolicy. Ich könnte morgen eine detailliertere Antwort veröffentlichen.
Grawity
1
@grawity Das sollte prefixpoliciesnicht sein prefixpolicy.
Peter Wood
@PeterWood Könnte also seit XP anders sein.
Grawity
1
@grawity Ja, ich arbeite unter Windows 7, und Anrufe werden netsh interface ipv6 showeinschließlich verwendet show prefixpolicies - Shows prefix policy entries, aber nicht prefixpolicy. Prost.
Peter Wood

Antworten:

40

Lösung 1: Fügen Sie eine Präfixrichtlinie hinzu, um IPv4-Adressen IPv6 vorzuziehen

Die Präfix-Richtlinientabelle ähnelt einer Routing-Tabelle. Sie bestimmt, welche IP-Adressen beim Herstellen einer Verbindung bevorzugt werden. Beachten Sie, dass eine höhere Priorität in Präfixrichtlinien durch einen höheren "Priorität" -Wert dargestellt wird, genau entgegengesetzt zum "Kosten" -Wert der Routing-Tabelle.

Standardmäßige Windows-Präfix-Richtlinientabelle:

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

Beachten Sie, dass IPv6-Adressen (:: / 0) IPv4-Adressen (:: / 96, :: ffff: 0: 0/96) vorgezogen werden.

Wir können eine Richtlinie erstellen, die den Hurricane Electric IPv6-Tunnel ungünstiger macht als jede andere IPv4-Adresse :

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

2001: 470 :: / 32 ist das Präfix von Hurricane Electric, 3 ist eine Rangfolge (sehr niedrig) und 6 ist ein Label.

Ich hätte ein allgemeineres Präfix verwenden können, aber ich wollte sicherstellen, dass, wenn ich eine direkte IPv6-Konnektivität von einem ISP erhalte, diese Vorrang vor IPv4 hat.

Wenn Sie diese Lösung anpassen, müssen Sie ein geeignetes IPv6-Präfix anstelle meines Hurricane Electric-Präfixes verwenden.

Lösung 2: Optimieren Sie die Registrierung, damit Windows IPv4 immer vor IPv6 bevorzugt

Diese Lösung ist allgemeiner, aber invasiver und weniger standardkonform. Am Ende wird Windows die Präfix-Richtlinientabelle noch für Sie ändern.

  • Öffnen Sie RegEdit und navigieren Sie zu HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters
  • Erstellen Sie den DisabledComponentsDWORD-Registrierungswert, und legen Sie den Wert auf 20 (hexadezimal) fest. Weitere Informationen zu diesem Registrierungsschlüssel finden Sie in Microsoft KB 929852 , insbesondere, wenn er DisabledComponentsbereits auf Ihrem System vorhanden ist.
  • Starten Sie neu.
haimg
quelle
PowerShell-Befehle für Lösung 2: Get-ItemProperty -Path hklm:SYSTEM\CurrentControlSet\Services\tcpip6\Parameters -Name "DisabledComponents" | select -exp DisabledComponents Set-Itemproperty -Path hklm:SYSTEM\CurrentControlSet\Services\tcpip6\Parameters -Name "DisabledComponents" -value 32
Sergii Volchkov
Es ist ein Mist, dass Sie diese Einstellung nicht pro Verbindung festlegen können (z. B. ich habe einen fehlerhaften Router), sondern nur global oder höchstens pro Adapter.
Mirh
23

Wenn Monospace-Text und Tabellen mit seltsamen Zahlen und Symbolen Sie erschrecken, können Sie dies mit Microsoft Fix-its, einfachen Installationsprogrammen von Microsoft, tun, die die Konfigurationsänderungen für Sie vornehmen.

Diese Fixes stammen aus KB 2533454 , was erklärt, dass Sie dies tun möchten, wenn Ihre IPv6-Konnektivität unterbrochen ist. Sie müssen ein Administrator sein, um das Update ausführen zu können. Klicken Sie nach dem Herunterladen mit der rechten Maustaste und wählen Sie Als Administrator ausführen.

Michael Hampton
quelle
+1 mit einem Druckknopf Weg, um dies zu aktivieren / deaktivieren, ist wirklich ausgezeichnet,
Prost
7

Der einfachste Weg, und diese sind immer so einfach, dass wir sie übersehen ...

  1. Öffnen Sie das Netzwerk- und Freigabecenter.

  2. Klicken Sie dort auf Adaptereinstellungen ändern

  3. Klicken Sie in der "Menüleiste" auf Erweitert. ** Hinweis ... Wenn Sie nur "Organisieren" sehen, klicken Sie darauf und wählen Sie dann in der Dropdown-Liste "Layout - Menüleiste".

  4. Nachdem Sie im vorherigen Schritt auf "Erweitert" geklickt haben, klicken Sie in diesem Schritt auf "Erweiterte Einstellungen". (Auf Ihrem Bildschirm wird ein Fenster geöffnet.)

  5. Was angezeigt wird, sind Adapter und Einstellungen und der Adapter, den Sie gerade verwenden, wird bereits in der oberen Hälfte und seiner repräsentativen Aufschlüsselung unten hervorgehoben (Sie sollten Bindungen für diesen Adapter sehen). Markieren Sie eine der Bindungen in der Liste, und beachten Sie, dass die Pfeile rechts aufleuchten. Verwenden Sie diese Pfeile, um die Bindungsreihenfolge nach Ihren Wünschen zu ändern. Wählen Sie dann unten OK aus.

  6. Beachten Sie dies genauso, wie Sie ein Protokoll, einen Dienst oder einen Client in Ihren Adaptereigenschaften installieren. Gleiches gilt hier. Das heißt, Sie wechseln einen Adapter, und der Rest folgt. Wenn Sie beispielsweise IPV6 anstelle von 4 für Ihren WLAN-Adapter auswählen, ändert sich auch Ihr LAN-Adapter.

Es ist der einfachste Weg, diese bestimmte Aufgabe zu erledigen, ohne zu viel darüber nachdenken zu müssen oder zu viel Wissen über das Routing von Paketen in einem Inter-Netzwerk zu haben.

StevenRowe6
quelle
2
Wenn ich dorthin gehe, ist IPv4 in beiden Kategorien bereits als erstes aufgeführt. Wenn ich jedoch zu den Eigenschaften meines Netzwerkadapters gehe, wird IPv6 zuerst aufgelistet.
Kojow7
1

Kurze Version

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 Version

RFC6724 definierte eine Änderung, wie Adressen bevorzugt werden sollen. Mit dieser Änderung ist IPv6 in fast allen Fällen nicht mehr die bevorzugte Adresse :(

Diese Frage, die im Juni 2012 gestellt wurde, wurde von einem RFC ab September 2012 "behoben" . Abhängig von Ihrer Windows-Version hatten Sie diese neue Richtlinie entweder sofort (Windows 8.1) oder wahrscheinlich bereits über ein Update ( Windows 8, Windows 7, Windows Vista).

Wir sind hier, weil wir IPv6 verwenden möchten . Wir wollen, dass diese Änderung rückgängig gemacht wird.

Wie man es zurücklegt

Wenn Sie mehrere IP-Adressen für einen einzelnen Host erhalten, muss Ihr Computer entscheiden, welche Adresse er verwenden soll. Ein Beispiel für ein Ranking könnte sein:

  • IPv6-Loopback
  • Natives IPv6
  • Unique-Local-Adressen (ULAs), zB fdxx ::
  • Standortlokal, zB fec0
  • 6knochen
  • 6to4
  • IPv4compat
  • IPv4
  • Teredo, zB 2001

Auf Ihrem Windows-Computer wird dieses Ranking als Präfixrichtlinie bezeichnet .

Präfix-Richtlinie

Sie können die Präfixrichtlinie Ihres Computers anzeigen, indem Sie Folgendes ausführen:

>netsh int ipv6 show prefixpolicies

In früheren Zeiten (ursprünglich definiert durch RFC 3484 ) lautete die Präfixrichtlinie:

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

Du siehst also, dass es so ziemlich immer IPv6 verwenden würde (yay!):

  1. IPv6-Loopback
  2. Natives IPv6, ULAs, standortlokal, 6one
  3. 6to4
  4. IPv4compat
  5. IPv4
  6. Teredo

Wenn Sie sich um die Bereitstellung von IPv6 bemüht haben: Es hat einfach funktioniert.

Neue Präfixrichtlinie

Im Jahr 2012 wurde eine neue Präferenzreihenfolge von RFC6724 definiert . Heutzutage stellt die Präfixrichtlinie so ziemlich sicher, dass Sie IPv6 niemals verwenden werden:

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          

Sie werden feststellen, dass Sie niemals Ihre eindeutigen lokalen Adressen oder die standortlokale Adresse verwenden können. es ist immer wieder kaputt:

  1. IPv6-Loopback
  2. Natives IPv6
  3. IPv4
  4. 6to4
  5. Teredo
  6. ULAs
  7. Standortlokal
  8. 6knochen
  9. IPv6-Komp

Wie man es repariert?

Wir möchten, dass IPv6 so repariert wird, dass ULAs gegenüber IPv4 bevorzugt werden. Zumindest wollen wir die Verwendung von ULAs ( fc00::/7) über die von IPv4 hinaus forcieren :

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          

Welches geschieht durch:

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

Dadurch bleibt es nur bis zum nächsten Neustart aktiv. So machen Sie die Änderung dauerhaft:

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

Wenn ich:

  • Wir haben uns bemüht, ein globales ULA-Präfix für my / 48 zu generieren
  • und wählen Sie eine Subnetz-ID für mein / 64
  • und stellen Sie ULAs für jeden Computer im Unternehmen bereit
  • und aktualisieren Sie die DNS-Server, um IPv6-ULA-Adressen zusätzlich zu IPv4-Adressen zurückzugeben

Das Mindeste, was der Computer tun könnte, ist die gemeinsame Höflichkeit, die Adresse zu verwenden.

Bonus Chatter

Das fc00::/7Sortiment ist in zwei Teile gegliedert:

  • fd00::/8 - GlobalID-Präfix wird lokal generiert
  • fc00::/8 - ???

Niemand hat jemals wirklich entschieden, fcdass es gut für ihn sein würde, und sitzt einfach da.

Die fdAdressen sind definiert als:

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

Also, wenn Sie a4d7f6dd66als Ihre kryptografisch zufällige 40-Bit- GlobalID generiert haben, erhalten Sie Ihre / 48:

  • fda4:d7f5:dd66:: / 48
  • fda4:d7f5:dd66:face::/ 64 (im faceSubnetz)
  • fda4:d7f5:dd66:face::825 als Host-IP-Adresse

SixXS unterhielt eine öffentliche Datenbank mit GlobalID-Präfixen für eindeutige lokale Adressen, um die Wahrscheinlichkeit von Kollisionen zu verringern, z.

  • 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

Aufgrund der langsameren Nutzung und des zunächst zweifelhaften Werts stellte SixXS den Service 2018 ein.

Bonus Lesung

Ian Boyd
quelle
Das fc00::/7Netzwerk ist wirklich in zwei Teile geteilt. Das fc00::/8Netzwerk ist für eine zukünftige globale Berechtigung reserviert, von der es zugewiesen werden kann, und kann derzeit nicht verwendet werden. Es ist jedoch fd00::/8für die lokale Zuweisung verfügbar, erfordert jedoch die zufällige Auswahl der nächsten 40 Bits.
Ron Maupin
Eigentlich sind wir hier, weil wir (und OP) IPv6 NICHT verwenden wollen und es immer noch im Loopback aktiv ist, obwohl ich jede IPv6-Instanz deaktiviert habe, die ich finden konnte!
AaA
0

Es gibt eine einfachere Methode, die für mich funktioniert. Ich habe gerade die Schnittstellenmetrik # geändert, um ihre Priorität zu bestimmen. Ich hatte diese Methode in der Vergangenheit verwendet, um die Priorität von Netzwerkadaptern zu ändern (WLAN-NIC-Priorität zuerst, LAN-NIC-Priorität zweitens), aber ich fand heraus, dass sie auch für TCP / IPv4 und TCP / IPv6 funktioniert. In diesem Fall habe ich die Schnittstellenmetrik von TCP / IPv4 von Automatisch in 5 und die TCP / IPv6-Schnittstellenmetrik von Automatisch in 10 geändert. Je niedriger die Metriknummer, desto höher die Priorität. Starten Sie dann Ihren PC neu. Wenn ich jetzt mit dem Hostnamen pinge, antwortet er von IPv4 anstelle von IPv6.

Hier ist eine detailliertere Anleitung

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

Sam N
quelle