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

Priorità IPv4 vs IPv6 in Windows 7

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 sui loro domini principali. Sulla mia macchina Windows, IPv6 è preferito a IPv4. Questo significa che ogni volta che visito Google, tutto il traffico passa attraverso il mio tunnel per Hurricane Electric, il che aumenta 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 sono disponibili entrambi i record IPv4 e IPv6 per uno specifico nome di dominio?

Risposte (5)

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

Soluzione #1: Aggiungere una prefix policy per preferire gli indirizzi IPv4 a quelli IPv6

La tabella delle prefix policy è simile a una tabella di routing, determina quali indirizzi IP sono preferiti quando si effettua una connessione. Si noti che una precedenza più alta nelle politiche dei prefissi è rappresentata da un valore di “precedenza” più alto, esattamente opposto al valore di “costo” della tabella di routing.

Tabella dei prefissi di default di Windows:

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

Possiamo creare una politica che rende il tunnel IPv6 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 Precedence (molto bassa) e 6 è una Label.

avrei potuto usare un prefisso più generico, ma volevo essere sicuro che se e quando otterrò connettività IPv6 diretta da un ISP, avrà la precedenza su IPv4.

Se adattate questa soluzione, dovete sostituire un prefisso IPv6 appropriato al posto del mio Hurricane Electric.

Soluzione #2: modificare il registro per far sì che Windows preferisca sempre IPv4 a IPv6

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

  • Aprire RegEdit, navigare fino a HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters
  • Creare il valore di registro DisabledComponents DWORD, impostare il suo valore a 20 (esadecimale). Vedi Microsoft KB 929852 per maggiori informazioni su questa chiave di registro, specialmente se DisabledComponents esiste già sul tuo sistema.
  • Riavvio.
23
23
23
2014-05-15 12:13:20 +0000

Se il testo monospaziale e le tabelle con strani numeri e simboli vi spaventano, potete farlo con Microsoft Fix-its, semplici installatori di Microsoft che fanno i cambiamenti di configurazione per voi.

Questi fix its provengono da KB 2533454 , che spiega che vorresti farlo se la tua connettività IPv6 è interrotta. Devi essere un amministratore per eseguire le correzioni; dopo averle scaricate, fai clic destro e seleziona Esegui come amministratore.

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

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

  1. aprire Centro connessioni di rete e condivisione.

  2. Lì clicca su Modifica impostazioni adattatore

  3. Sulla “Barra dei menu” clicca su Avanzate. **Nota: se vedi solo “Organizza”, clicca su quello e poi dal menu a tendina scegli “Layout - Barra dei menu”

  4. Dopo aver cliccato su avanzato nel passo precedente, clicca su “Impostazioni avanzate” in questo passo (si aprirà una finestra sullo schermo)

  5. Ciò che viene visualizzato sono gli adattatori e le impostazioni e l'adattatore che stai attualmente usando sarà già evidenziato nella metà superiore e la sua ripartizione rappresentativa sotto (dovresti vedere i binding per quell'adattatore). Evidenzia uno qualsiasi dei binding nella lista e dovresti notare che le frecce a destra si illuminano, usa quelle frecce per cambiare l'ordine dei binding secondo le tue preferenze e poi scegli ok dal basso.

  6. Notate che proprio come quando installate un protocollo, un servizio o un client nelle proprietà del vostro adattatore. La stessa cosa si applica qui. che è che cambiate un adattatore, e il resto segue l'esempio. Così, per esempio, se scegli IPV6 preferendolo al 4 sul tuo adattatore wireless, anche il tuo adattatore LAN cambia.

È il modo più semplice che mi viene in mente per fare questo particolare compito senza dover pensare troppo, o avere troppe conoscenze sull'instradamento dei pacchetti su una rete.

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

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 in come gli indirizzi dovrebbero essere preferiti. Con questo cambiamento IPv6 non è più l'indirizzo preferito in quasi tutti i casi :(

Questa domanda, che è stata posta nel giugno del 2012 è stata “fissata” da una RFC del settembre 2012. A seconda della tua versione di Windows, hai avuto questa nuova politica fuori dalla scatola (Windows 8.1), o probabilmente già consegnato attraverso un aggiornamento (Windows 8, Windows 7, Windows Vista).

Siamo qui perché vogliamo usare IPv6; vogliamo che questo cambiamento venga annullato.

Come rimetterlo

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

  • IPv6 loopback
  • IPv6 nativo
  • Indirizzi Unique-Local (ULA), ad esempio fdxx::
  • Site-local, ad esempio fec0
  • 6bone
  • 6to4
  • IPv4compat
  • IPv4
  • Teredo, ad esempio 2001

Sulla tua macchina Windows, questa classifica è chiamata prefix policy.

Prefix policy

Puoi vedere la prefix policy del tuo computer eseguendo:

>netsh int ipv6 show prefixpolicies

Ai vecchi tempi (originariamente definita da RFC 3484 ), la prefix policy 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 praticamente sempre IPv6 (yay!):

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

Se hai fatto lo sforzo di implementare IPv6: ha appena funzionato.

Nuova politica dei prefissi

Nel 2012 è stato definito un nuovo ordine di preferenza da RFC6724 . Oggi la politica dei prefissi assicura praticamente che non userete 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

Vedrete che non sarete mai in grado di usare il vostro indirizzo locale unico, o indirizzo locale del sito; è perennemente rotto:

  1. IPv6 loopback
  2. IPv6 nativo
  3. IPv4
  4. 6to4
  5. Teredo
  6. ULA
  7. Sito-locale
  8. 6bone
  9. IPv6compat

Come risolvere il problema?

Quello che vogliamo è sistemare IPv6 in modo che gli ULA siano preferiti a IPv4. Come minimo vogliamo spingere l'uso degli ULA (fc00::/7) al di sopra di 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

Il che è fatto da:

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

Che lo terrà attivo solo fino al prossimo riavvio. Per rendere il cambiamento permanente:

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

Se io:

  • ho fatto lo sforzo di generare un prefisso globale ULA per il mio /48
  • e scegliere un id di sottorete per il mio /64
  • e distribuire gli ULA ad ogni macchina nell'impresa
  • e aggiornare i server DNS per restituire indirizzi IPv6 ULA in aggiunta agli indirizzi IPv4

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

Chiacchiere Bonus

La gamma fc00::/7 è divisa in due parti:

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

Nessuno ha mai veramente deciso a cosa servisse fc, e quindi se ne sta lì.

Gli indirizzi fd sono definiti come:

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

Quindi se hai generato fda4:d7f5:dd66:: come tuo criptoghpcallly random 40-bit GlobalID, questo ti dà il tuo /48:

  • fda4:d7f5:dd66:face:: /48
  • face /64 (nella sottorete fda4:d7f5:dd66:face::825)
  • fdee:e004:2208::/48 come indirizzo IP dell'host SixXS ha mantenuto un database pubblico di prefissi Unique Local Address GlobalID per ridurre la possibilità di collisioni, e. g.:

  • fdd4:43c8:ba34::/48: Apple Inc - Leopard OSX

  • fdac:afbd:fea1::/48: TekSavvy - Danny Murray

  • 0x6&: IBM Rational Build Forge - Chris Fuller

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

Bonus Reading

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

C'è un metodo più semplice che funziona per me. Ho appena cambiato il numero di metrica dell'interfaccia per determinare la sua priorità. Avevo usato questo metodo in passato per cambiare la priorità delle schede di rete (priorità Wireless NIC prima, priorità LAN NIC seconda), ma ho scoperto che funziona anche su TCP/IPv4 e TCP/IPv6. In questo caso, ho cambiato la metrica dell'interfaccia TCP/IPv4 da Automatic a 5, e la metrica dell'interfaccia TCP/IPv6 da Automatic a 10. Più basso è il numero di metrica, più alta è la sua priorità. Poi riavvia il tuo PC. Così ora ogni volta che faccio un ping usando il nome dell'host, esso risponderà da IPv4, invece che da Ipv6.

Ecco un'istruzione più dettagliata https://www.windowscentral.com/how-change-priority-order-network-adapters-windows-10