it-swarm.com.de

IPv4 vs IPv6-Priorität in Windows 7

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 dazu bringen, IPv4 immer vorzuziehen, wenn sowohl IPv4- als auch IPv6-Einträge für einen bestimmten Domainnamen verfügbar sind?

31
haimg

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 Routingtabelle.

Standardmäßige Windows-Präfixrichtlinientabelle:

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 IPv6-Tunnel von Hurricane Electric 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 anstelle meines Hurricane Electric ein geeignetes IPv6-Präfix 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.

  • Öffne RegEdit, navigiere zu HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters
  • Erstellen Sie den DWORD-Registrierungswert DisabledComponents, und legen Sie den Wert auf 20 (hexadezimal) fest. Weitere Informationen zu diesem Registrierungsschlüssel finden Sie in Microsoft KB 929852 , insbesondere wenn DisabledComponents bereits auf Ihrem System vorhanden ist.
  • Starten Sie neu.
40
haimg

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 . Dies erklärt, dass Sie dies tun möchten, wenn Ihre IPv6-Konnektivität unterbrochen ist. Sie müssen 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.

20
Michael Hampton

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". (Ein Fenster wird auf Ihrem Bildschirm 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 auf Ihrem WLAN-Adapter vorziehen, ä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.

7
StevenRowe6

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 sollten. 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 bereits vorinstalliert (Windows 8.1 ) oder wahrscheinlich bereits über ein Update (Windows 8, Windows 7, Windows Vista) ausgeliefert.

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), z. fdxx ::
  • Standortlokal, z.B. fec0
  • 6knochen
  • 6to4
  • IPv4compat
  • IPv4
  • Teredo, z.B. 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

Sie sehen 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 durch 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 standortbezogene Adresse verwenden können. es ist immer wieder kaputt:

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

Wie man es repariert?

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

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

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

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

Niemand hat wirklich entschieden, dass fc gut ist, und sitzt einfach da.

Die Adressen fd sind wie folgt definiert:

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

Wenn Sie also a4d7f6dd66 als Ihre zufällige 40-Bit-GlobalID generiert haben, erhalten Sie Ihre/48:

  • fda4:d7f5:dd66::/48
  • fda4:d7f5:dd66:face::/64 (im Subnetz face)
  • 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, zB :

  • 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

1
Ian Boyd

Es gibt eine einfachere Methode, die für mich funktioniert. Ich habe gerade die Schnittstellenmetrik # geändert, um ihre Priorität zu bestimmen. Ich habe diese Methode in der Vergangenheit verwendet, um die Priorität von Netzwerkadaptern zu ändern (WLAN-Priorität NIC zuerst, LAN-Priorität NIC zweitens), aber ich habe festgestellt, 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

0
Sam N