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

IPv4 vs. IPv6 Priorität in Windows 7

Ich habe IPv6-Konnektivität durch Hurricane Electric Tunnel. Seit dem IPv6-Tag in diesem Jahr haben viele Dienste (google.com, facebook.com, etc.) IPv6 auf ihren Hauptdomänen aktiviert. Auf meinem Windows-Rechner wird IPv6 gegenüber IPv4 bevorzugt. Das bedeutet, dass, wann immer ich Google besuche, der gesamte Verkehr durch meinen Tunnel zu Hurricane Electric geht, was 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 dazu bringen, immer IPv4 zu bevorzugen, wenn sowohl IPv4- als auch IPv6-Einträge für einen bestimmten Domainnamen verfügbar sind?

Antworten (5)

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

Lösung #1: Fügen Sie eine Präfix-Richtlinie hinzu, um IPv4-Adressen gegenüber IPv6 zu bevorzugen

Die Präfix-Richtlinien-Tabelle ist ähnlich einer Routing-Tabelle, sie bestimmt, welche IP-Adressen beim Verbindungsaufbau bevorzugt werden. Beachten Sie, dass eine höhere Präferenz in Präfixrichtlinien durch einen höheren “Präzedenz”-Wert dargestellt wird, der dem “Kosten”-Wert der Routing-Tabelle genau entgegengesetzt ist.

Standard-Windows-Präfixrichtlinien-Tabelle:

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) gegenüber IPv4-Adressen (::/96, ::ffff:0:0/96) bevorzugt werden.

Wir können eine Richtlinie erstellen, die den elektrischen IPv6-Tunnel von Hurricane gegenüber jeder IPv4-Adresse ungünstiger macht:

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

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

Ich hätte ein allgemeineres Präfix verwenden können, aber ich wollte sicherstellen, dass, falls und wenn ich direkte IPv6-Verbindungen von einem ISP erhalte, diese Vorrang vor IPv4 haben.

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

Lösung #2: Die Registrierung so anpassen, dass Windows immer IPv4 gegenüber IPv6 bevorzugt

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

  • Öffnen Sie RegEdit, navigieren Sie zu HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters
  • Erstellen Sie den Registrierungswert DisabledComponents DWORD, setzen Sie seinen Wert auf 20 (hexadezimal). Siehe Microsoft KB 929852 für weitere Informationen über diesen Registrierungsschlüssel, insbesondere wenn DisabledComponents bereits auf Ihrem System vorhanden ist.
  • Neustart.
23
23
23
2014-05-15 12:13:20 +0000

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

Diese Fix-its stammen aus KB 2533454 , in dem erklärt wird, dass Sie dies tun sollten, wenn Ihre IPv6-Konnektivität gestört ist. Sie müssen ein Administrator sein, um die Fix its auszuführen; klicken Sie nach dem Herunterladen mit der rechten Maustaste und wählen Sie Als Administrator ausführen.

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

Der einfachste Weg, und die 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. **Wenn Sie nur “Organisieren” sehen, klicken Sie darauf, und wählen Sie dann im Dropdown-Menü “Layout - Menüleiste”

  4. Nachdem Sie im vorherigen Schritt auf “Erweitert” geklickt haben, klicken Sie in diesem Schritt auf “Erweiterte Einstellungen” (Es öffnet sich ein Feld auf Ihrem Bildschirm)

  5. Was angezeigt wird, sind Adapter und Einstellungen und der Adapter, den Sie gerade verwenden, wird bereits in der oberen Hälfte hervorgehoben und seine repräsentative Aufschlüsselung darunter (Sie sollten Bindungen für diesen Adapter sehen). Markieren Sie eine der Bindungen in der Liste und Sie sollten bemerken, dass die Pfeile auf der rechten Seite aufleuchten, verwenden Sie diese Pfeile, um die Reihenfolge der Bindungen nach Ihren Wünschen zu ändern und wählen Sie dann unten ok.

  6. Beachten Sie, dass genau wie bei der Installation eines Protokolls, Dienstes oder Clients in Ihren Adaptereigenschaften. Das Gleiche gilt auch hier, d. h. Sie ändern einen Adapter, und der Rest folgt entsprechend. Wenn Sie also z. B. IPV6 gegenüber 4 auf Ihrem Wireless-Adapter bevorzugen, ändert sich auch Ihr LAN-Adapter.

Das ist der einfachste Weg, den ich mir vorstellen kann, um diese spezielle Aufgabe zu erledigen, ohne zu viel darüber nachdenken zu müssen, oder zu viel Wissen über das Routing von Paketen in einem Netzwerk zu haben.

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

Kurzversion

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

Langversion

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

Diese Frage, die im Juni 2012 gestellt wurde, wurde durch einen RFC vom September 2012 “behoben”. Je nach Windows-Version hatten Sie diese neue Richtlinie entweder von Haus aus (Windows 8.1), oder sie wurde wahrscheinlich bereits durch ein Update bereitgestellt (Windows 8, Windows 7, Windows Vista).

Wir sind hier, weil wir IPv6 verwenden wollen; wir wollen diese Änderung rückgängig machen.

So machen Sie es wieder rückgängig

Wenn Sie mehrere IP-Adressen für einen einzelnen Host erhalten, muss Ihr Rechner entscheiden, welche Adresse er verwenden will. Eine Beispielreihenfolge könnte sein:

  • IPv6-Loopback
  • Natives IPv6
  • Unique-Local-Adressen (ULAs), z. B. fdxx::
  • Site-local, z. B. fec0
  • 6bone
  • 6to4
  • IPv4compat
  • IPv4
  • Teredo, z. B. 2001

Auf Ihrem Windows-Rechner wird diese Rangfolge Prefix-Richtlinie genannt.

Präfix-Richtlinie

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

>netsh int ipv6 show prefixpolicies

In den alten Zeiten (ursprünglich definiert durch RFC 3484 ) lautete die Präfix-Richtlinie:

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

Sie sehen also, dass so gut wie immer IPv6 verwendet wird (juhu!):

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

Wenn Sie sich die Mühe gemacht haben, IPv6 zu implementieren: Es hat gerade funktioniert.

Neue Präfix-Policy

Im Jahr 2012 wurde eine neue Präferenzordnung durch RFC6724 definiert. Heutzutage stellt die Präfix-Policy so ziemlich sicher, dass Sie IPv6 niemals benutzen 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 sehen, dass Sie niemals in der Lage sein werden, Ihre Unique Local Addresses oder site-local address zu benutzen; sie ist für immer kaputt:

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

Wie kann man das beheben?

Was wir wollen, ist, IPv6 so zu reparieren, dass ULAs gegenüber IPv4 bevorzugt werden. Zumindest wollen wir die Verwendung von ULAs (fc00::/7) über die von IPv4 schieben:

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

& Das wird erreicht durch:

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

Das hält die Änderung nur bis zum nächsten Neustart aktiv. Um die Änderung dauerhaft zu machen:

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

Wenn ich:

  • mir die Mühe mache, ein globales ULA-Präfix für mein /48 zu generieren
  • und eine Subnetz-ID für mein /64 auswähle
  • und ULAs an jeden Rechner im Unternehmen verteile
  • und die DNS-Server aktualisiere, damit sie neben IPv4-Adressen auch IPv6-ULA-Adressen zurückgeben

  • dann könnte der Rechner wenigstens die Höflichkeit haben, die Adresse zu verwenden.

Bonus Chatter

Der fc00::/7-Bereich ist in zwei Teile unterteilt:

  • fd00::/8 - GlobalID-Präfix, das lokal erzeugt wird
  • fc00::/8 - ???

Niemand hat jemals wirklich entschieden, wofür fc gut sein soll, und so sitzt es einfach da.

Die fd-Adressen sind definiert als:

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

Wenn Sie also [64-bits for host assignment] als Ihre kryptografisch zufällige 40-Bit-“_GlobalID” generiert haben, ergibt das Ihre /48:

  • a4d7f6dd66 /48
  • fda4:d7f5:dd66:: /64 (im fda4:d7f5:dd66:face::-Subnetz)
  • face als Host-IP-Adresse SixXS unterhält eine öffentliche Datenbank mit eindeutigen lokalen Adress-GlobalID-Präfixen, um die Wahrscheinlichkeit von Kollisionen zu verringern, z. z. B.:

  • 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

Aber aufgrund der schleppenden Nutzung und des zweifelhaften Nutzens hat SixXS den Dienst im Jahr 2018 eingestellt.

Bonus Reading

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

Es gibt eine einfachere Methode, die bei mir funktioniert. Ich habe einfach 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 (Wireless NIC-Priorität zuerst, LAN NIC-Priorität an zweiter Stelle), aber ich habe herausgefunden, dass sie auch bei TCP/IPv4 und TCP/IPv6 funktioniert. In diesem Fall änderte ich die Schnittstellenmetrik von TCP/IPv4 von Automatisch auf 5 und die TCP/IPv6-Schnittstellenmetrik von Automatisch auf 10. Je niedriger die Metriknummer, desto höher die Priorität. Starten Sie dann Ihren PC neu. Wenn ich nun einen Ping mit dem Hostnamen tätige, antwortet er mit IPv4 statt mit Ipv6.

Hier ist eine ausführlichere Anleitung https://www.windowscentral.com/how-change-priority-order-network-adapters-windows-10