Priorità IPv4 vs IPv6 in Windows 7


31

Ho la connettività IPv6 attraverso il tunnel Hurricane Electric. Dal giorno IPv6 di quest'anno, molti servizi (google.com, facebook.com, ecc.) Hanno abilitato IPv6 nei loro domini principali. Sul mio computer Windows, IPv6 è preferito su IPv4. Ciò significa che ogni volta che visito Google, tutto il traffico passa attraverso il mio tunnel verso l'uragano elettrico, aumentando la latenza di oltre il 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

Domanda: Come posso fare in modo che Windows 7 preferisca sempre IPv4, quando sia i record IPv4 che IPv6 sono disponibili per un nome di dominio specifico?


4
Il modo corretto per questo, sulla maggior parte dei sistemi operativi, è configurare il criterio prefisso - su Windows, tramite netsh interface ipv6 show prefixpolicy. Potrei pubblicare una risposta più dettagliata domani.
gravità

1
@grawity Dovrebbe essere prefixpolicies, no prefixpolicy.
Peter Wood,

@PeterWood Potrebbe essere diverso da XP, quindi.
Grawity

1
@grawity Sì, sono su Windows 7 e la chiamata netsh interface ipv6 showdà utilizzo incluso show prefixpolicies - Shows prefix policy entries, ma no prefixpolicy. Saluti.
Peter Wood,

Risposte:


40

Soluzione n. 1: aggiungere un criterio prefisso per preferire gli indirizzi IPv4 rispetto a IPv6

La tabella dei criteri del prefisso è simile a una tabella di routing, determina quali indirizzi IP sono preferiti quando si effettua una connessione. Si noti che una precedenza maggiore nelle politiche dei prefissi è rappresentata da un valore "precedenza" lager, esattamente opposto al valore "costo" della tabella di routing.

Tabella criteri prefisso Windows predefinita:

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

Si noti che gli indirizzi IPv6 (:: / 0) sono preferiti agli indirizzi IPv4 (:: / 96, :: ffff: 0: 0/96).

Siamo in grado di creare una politica che renderà il tunnel IPv6 di Hurricane Electric meno favorevole di qualsiasi indirizzo IPv4 :

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

2001: 470 :: / 32 è il prefisso di Hurricane Electric, 3 è una precedenza (molto bassa) e 6 è un'etichetta.

Avrei potuto usare un prefisso più generico, ma volevo assicurarmi che se e quando ottengo una connettività IPv6 diretta da un ISP, avrà la precedenza su IPv4.

Se si adatta questa soluzione, è necessario sostituire un prefisso IPv6 appropriato anziché il mio Hurricane Electric.

Soluzione n. 2: modifica il registro per fare in modo che Windows preferisca sempre IPv4 su IPv6

Questa soluzione è più generica, ma più invasiva e meno conforme agli standard. Alla fine, Windows modificherà comunque la tabella dei criteri del prefisso per te.

  • Apri RegEdit, vai a HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters
  • Crea il DisabledComponentsvalore del registro DWORD, imposta il valore su 20 (esadecimale). Vedere Microsoft KB 929852 per ulteriori informazioni su questa chiave di registro, soprattutto se DisabledComponentsesiste già sul sistema.
  • Reboot.

Comandi PowerShell per la soluzione n. 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,

È un peccato che non sia possibile impostare questa preferenza per connessione (ad esempio, ho un router difettoso) ma solo a livello globale o al massimo per adattatore.
mirh

23

Se il testo e le tabelle monospaziali con numeri e simboli strani ti spaventano, puoi farlo con Microsoft Fix-it, semplici programmi di installazione di Microsoft che apportano le modifiche alla configurazione per te.

Queste correzioni provengono da KB 2533454 , il che spiega che vorresti farlo se la tua connettività IPv6 è rotta. È necessario essere un amministratore per eseguire la correzione; dopo il download, fare clic con il tasto destro e selezionare Esegui come amministratore.


+1 avere un pulsante per abilitare / disabilitare questo è davvero eccellente, evviva
ashes999

7

Il modo più semplice, e questi sono sempre così semplici che li trascuriamo ...

  1. rete aperta e centro di condivisione.

  2. Qui fai clic su Modifica impostazioni adattatore

  3. Nella "barra dei menu" fai clic su Avanzate. ** Nota..Se vedi solo "Organizza", fai clic su quello, quindi dal menu a discesa scegli "Layout - Barra dei menu"

  4. Dopo aver fatto clic su Avanzate nel passaggio precedente, fai clic su "Impostazioni avanzate" in questo passaggio (sullo schermo verrà visualizzata una finestra)

  5. Ciò che viene visualizzato sono gli adattatori e le impostazioni e l'adattatore attualmente in uso verrà già evidenziato nella metà superiore e la relativa ripartizione rappresentativa di seguito (dovresti vedere i collegamenti per quell'adattatore). Evidenzia uno qualsiasi dei collegamenti nell'elenco e dovresti notare che le frecce a destra si illuminano, usa quelle frecce per cambiare l'ordine di rilegatura secondo le tue preferenze e quindi scegli ok dal basso.

  6. Si noti che proprio come quando si installa un protocollo, un servizio o un client nelle proprietà dell'adattatore. Lo stesso vale qui. che è che si cambia un adattatore, e il resto segue l'esempio. Quindi, ad esempio, se si sceglie IPV6 preferire 4 al proprio adattatore wireless, anche l'adattatore LAN cambia.

È il modo più semplice a cui riesco a pensare di svolgere questo particolare compito senza doverci pensare troppo o avere troppe conoscenze sull'instradamento dei pacchetti su una rete.


2
Quando ci vado, IPv4 è già elencato per primo in entrambe le categorie. Tuttavia, quando vado alle proprietà della mia scheda di rete, IPv6 è elencato per primo.
kojow7,

1

Versione breve

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

Versione lunga

RFC6724 ha definito un cambiamento nel modo in cui gli indirizzi dovrebbero essere preferiti. Con questa modifica IPv6 non è più l'indirizzo preferito in quasi tutti i casi :(

Questa domanda, che è stata posta nel giugno del 2012, è stata "risolta" da un RFC a partire da settembre 2012. A seconda della versione di Windows, questo nuovo criterio era già pronto (Windows 8.1) o probabilmente già consegnato tramite un aggiornamento ( Windows 8, Windows 7, Windows Vista).

Siamo qui perché vogliamo usare IPv6; vogliamo che quel cambiamento sia annullato.

Come rimetterlo

Se si ottengono più indirizzi IP per un singolo host, la macchina deve decidere quale indirizzo utilizzare. Una classifica di esempio potrebbe essere:

  • Loopback IPv6
  • IPv6 nativo
  • Indirizzi univoci locali (ULA), ad es. Fdxx ::
  • Sito locale, ad esempio fec0
  • 6bone
  • 6to4
  • IPv4compat
  • IPv4
  • Teredo, ad esempio 2001

Sul tuo computer Windows, questa classifica si chiama criterio prefisso .

Prefisso politica

È possibile visualizzare il criterio prefisso del computer eseguendo:

>netsh int ipv6 show prefixpolicies

Ai vecchi tempi (originariamente definito da RFC 3484 ), la politica del prefisso era:

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

Quindi vedi che userebbe quasi sempre IPv6 (yay!):

  1. Loopback IPv6
  2. IPv6 nativo, ULAs, site-local, 6one
  3. 6to4
  4. IPv4compat
  5. IPv4
  6. Teredo

Se hai passato lo sforzo di distribuire IPv6: ha funzionato.

Nuova politica sui prefissi

Nel 2012 un nuovo ordine di preferenza è stato definito da RFC6724 . Al giorno d'oggi la politica di prefisso garantisce praticamente che non utilizzerai mai 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          

Vedrai che non sarai mai in grado di utilizzare i tuoi indirizzi locali univoci o l'indirizzo locale del sito; è perpetuamente rotto:

  1. Loopback IPv6
  2. IPv6 nativo
  3. IPv4
  4. 6to4
  5. Teredo
  6. Ulas
  7. sito locale
  8. 6bone
  9. IPv6compat

Come sistemarlo?

Quello che vogliamo è riparare IPv6 in modo che gli ULA siano preferiti rispetto a IPv4. Almeno vogliamo spingere l'uso di ULA ( fc00::/7) sopra quello di 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          

Che è fatto da:

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

Ciò lo manterrà attivo solo fino al prossimo riavvio. Per rendere permanente la modifica:

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

Se io:

  • ha attraversato lo sforzo di generare un prefisso globale ULA per il mio / 48
  • e scegliere un ID subnet per my / 64
  • e distribuire gli ULA su ogni macchina dell'azienda
  • e aggiorna i server DNS per restituire gli indirizzi IPv6 ULA oltre agli indirizzi IPv4

il minimo che il computer possa fare è avere la cortesia comune di usare l'indirizzo.

Bonus Chatter

L' fc00::/7intervallo è diviso in due parti:

  • fd00::/8 - Prefisso GlobalID generato localmente
  • fc00::/8 - ???

Nessuno ha mai veramente deciso che fcsarebbe stato un bene, e quindi resta seduto lì.

Gli fdindirizzi sono definiti come:

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

Quindi, se hai generato a4d7f6dd66come GlobalID cryptoghpcallly a 40 bit casualmente , questo ti dà il tuo / 48:

  • fda4:d7f5:dd66:: / 48
  • fda4:d7f5:dd66:face::/ 64 (nella facesottorete)
  • fda4:d7f5:dd66:face::825 come indirizzo IP host

SixXS ha gestito un database pubblico di prefissi GlobalID con indirizzo locale univoco al fine di ridurre il rischio di collisioni, ad esempio:

  • 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

Ma a causa del rallentamento dell'utilizzo e, in primo luogo, del dubbio valore, SixXS ha interrotto il servizio nel 2018.

Lettura bonus


La fc00::/7rete è davvero divisa in due parti. La fc00::/8rete è riservata a una futura autorità globale da cui assegnare e non può essere attualmente utilizzata, ma fd00::/8è disponibile per l'assegnazione locale, ma richiede che i successivi 40 bit vengano scelti in modo casuale.
Ron Maupin

In realtà siamo qui perché noi (e OP) NON VOGLIAMO usare IPv6 ed è ancora attivo su loopback anche se ho disabilitato tutte le istanze di IPv6 che sono riuscito a trovare!
AaA

0

C'è un metodo più semplice che funziona per me. Ho appena cambiato l'interfaccia metrica # per determinarne la priorità. In passato avevo usato questo metodo per cambiare la priorità degli adattatori di rete (priorità NIC wireless prima, priorità NIC LAN seconda), ma ho scoperto che funziona anche su TCP / IPv4 e TCP / IPv6. In questo caso, ho modificato la metrica dell'interfaccia di TCP / IPv4 da Automatico a 5 e la metrica dell'interfaccia TCP / IPv6 da Automatico a 10. Più basso è il numero della metrica, maggiore è la sua priorità. Quindi riavviare il PC. Quindi ora ogni volta che eseguo il ping usando il nome host, risponderà da IPv4, invece di Ipv6.

Ecco un'istruzione più dettagliata

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.