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

Prioridade IPv4 vs IPv6 no Windows 7

Tenho conectividade IPv6 através do túnel Hurricane Electric. Desde o dia do IPv6 este ano, muitos serviços (google.com, facebook.com, etc.) activaram o IPv6 nos seus domínios principais. Na minha máquina Windows, o IPv6 é preferido em relação ao IPv4. Isto significa que sempre que visito o Google, todo o tráfego passa pelo meu túnel para o Hurricane Electric, o que aumenta a latência em mais de 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

Question: Como posso fazer com que o Windows 7 prefira sempre o IPv4, quando tanto o IPv4 como o IPv6 estão disponíveis para um nome de domínio específico?

Respostas (5)

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

Solução ## Solução #1: Adicionar uma política de prefixo para preferir endereços IPv4 em vez de IPv6

A tabela de política de prefixo é semelhante a uma tabela de encaminhamento, determina quais os endereços IP que são preferidos quando se faz uma ligação. Note-se que uma maior precedência nas políticas de prefixo é representada por um valor de “precedência” mais elevado, exactamente oposto ao valor de “custo” da tabela de encaminhamento.

Tabela de política de prefixos por defeito do 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

Note-se que os endereços IPv6 (::/0) são preferidos aos endereços IPv4 (::/96, ::ffff:0:0/96).

Podemos criar uma política que ** tornará o Hurricane Electric IPv6 tunnel menos favorável do que qualquer endereço IPv4** :

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

2001:470::/32 é o prefixo do Hurricane Electric, 3 é uma Precedência (muito baixa) e 6 é uma Etiqueta.

poderia ter usado um prefixo mais genérico, mas queria ter a certeza de que se e quando obtivesse conectividade directa IPv6 de um ISP, teria precedência sobre IPv4.

Se adaptar esta solução, terá de substituir um prefixo IPv6 apropriado em vez do meu Hurricane Electric.

Solução #2: Tweak registry para fazer com que o Windows prefira sempre o IPv4 em vez do IPv6

Esta solução é mais genérica, mas mais invasiva e menos compatível com as normas. No final, o Windows irá ainda modificar a tabela de política de prefixos para si.

  • Abrir RegEdit, navegar para HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters
  • Criar valor de registo DisabledComponents DWORD, definir o seu valor para 20 (Hexadecimal). Ver Microsoft KB 929852 para mais informações sobre esta chave de registo, especialmente se DisabledComponents já existe no seu sistema. & - Reiniciar.
23
23
23
2014-05-15 12:13:20 +0000

Se textos e tabelas monoespaciais com números e símbolos estranhos o assustam, pode fazê-lo com Microsoft Fix-its, instaladores simples da Microsoft que fazem as alterações de configuração para si.

Estes fixam a sua origem KB 2533454 , o que explica que gostaria de o fazer se a sua conectividade IPv6 fosse quebrada. Tem de ser um administrador para executar a sua reparação; após descarregar, clique com o botão direito do rato e seleccione Executar como administrador.

& - Prefere IPv4 sobre IPv6 - Prefere IPv6 sobre IPv4 (restabeleça o comportamento por defeito)

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

A forma mais simples, e estas são sempre tão simples que as ignoramos…

  1. Rede aberta e Centro de Partilha.

  2. Aí clique em Mudar Configurações do Adaptador

  3. Na “Barra de Menu” clicar em Avançado. **Se apenas vir “Organizar”, então clique nisso, e depois no menu de deslizamento escolha “Layout - Barra de Menu”

  4. Depois de clicar em “Advanced” no passo anterior, clique em “Advanced Settings” neste passo (uma caixa abrirá no seu ecrã)

  5. O que é apresentado são os adaptadores e definições e o adaptador que está a utilizar actualmente já será destacado na metade superior e a sua repartição representativa abaixo (deverá ver as ligações para esse adaptador). Realce qualquer uma das encadernações da lista e deverá notar que as setas à direita se iluminam, use essas setas para alterar a ordem de encadernação à sua preferência e depois escolha ok na parte inferior.

  6. Note que, tal como quando instala um protocolo, serviço, ou cliente nas suas propriedades de adaptador. O mesmo se aplica aqui. o que é que muda um adaptador, e o resto segue o mesmo procedimento. Assim, por exemplo, se escolher IPV6 preferir mais do que 4 no seu adaptador sem fios, o seu adaptador LAN também muda.

É a forma mais fácil de fazer esta tarefa em particular sem ter de pensar demasiado, ou ter demasiado conhecimento sobre o encaminhamento de pacotes numa inter rede.

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

Versão curta

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

Versão longa

RFC6724 definiu uma mudança na forma como os endereços devem ser preferidos. Com esta alteração o IPv6 já não é o endereço preferido em quase todos os casos :(

Esta pergunta, feita em Junho de 2012, foi “corrigida” por um RFC a partir de Setembro de 2012. Dependendo da sua versão Windows, ou tinha esta nova política fora da caixa (Windows 8.1), ou provavelmente já entregue através de uma actualização (Windows 8, Windows 7, Windows Vista).

Estamos aqui porque queremos* utilizar IPv6; queremos que essa mudança seja desfeita.

Como colocar de volta

Se obtiver múltiplos endereços IP para um único anfitrião, a sua máquina tem de decidir qual o endereço que irá utilizar. Um exemplo de classificação pode ser:

& - loopback IPv6 - Nativo IPv6 - Endereços locais únicos (ULAs), por exemplo fdxx:: - Site-local, por exemplo fec0 - 6bone - 6to4 - IPv4compat - IPv4 - Teredo, e.g. 2001

& Na sua máquina Windows, esta classificação é chamada de política de prefixos.

Política de prefixo

Pode ver a política de prefixo do seu computador executando:

>netsh int ipv6 show prefixpolicies

Nos velhos tempos (originalmente definidos por RFC 3484 ), a política de prefixo 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

Assim, verá que utilizaria praticamente de qualquer forma IPv6 (yay!):

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

Se passou pelo esforço de implementar IPv6: acabou de funcionar.

Nova Política de Prefixos

Em 2012 uma nova ordem de preferências foi definida por RFC6724 . Hoje em dia, a política de prefixos praticamente assegura que nunca usará 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

Verá que nunca poderá usar os seus Endereços Locais Únicos, ou endereço local; está perpetuamente quebrado:

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

Como repará-lo?

O que queremos é corrigir o IPv6 para que os ULAs sejam preferidos em relação ao IPv4. No mínimo, queremos empurrar o uso de ULAs (fc00::/7) acima do 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

O que é feito por:

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

Isso só o manterá activo até à próxima reinicialização. Para que a mudança permaneça permanente:

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

Se i:

  • tiver passado pelo esforço de gerar um prefixo global ULA para o meu /48
  • e escolher um id de sub-rede para o meu /64
  • e implementar ULAs em todas as máquinas da empresa
  • e actualizar os servidores DNS para devolver endereços ULA IPv6 para além dos endereços IPv4

o mínimo que o computador pode fazer é ter a cortesia comum de usar o endereço.

Bónus Chatter

O intervalo fc00::/7 está dividido em duas partes:

  • fd00::/8 - fc00::/8 - Prefixo GlobalID gerado localmente
  • fc - ???

& Nunca ninguém decidiu realmente que o fd seria bom para, e por isso fica apenas aí sentado.

Os fd endereços [40-bit random GlobalID] são definidos como:

[16-bit subnet] [64-bits for host assignment] a4d7f6dd66 fda4:d7f5:dd66:: fda4:d7f5:dd66:face::

Portanto, se gerou face como o seu GlobalID criptoghpcallly randomly 40-bit, isso dá-lhe o seu /48:

  • fda4:d7f5:dd66:face::825 /48 & - fdee:e004:2208::/48 /64 (na sub-rede fdd4:43c8:ba34::/48)
  • fdac:afbd:fea1::/48 como endereço IP anfitrião SixXS manteve uma base de dados pública de prefixos de Endereço Local Único GlobalID, a fim de reduzir a hipótese de colisões, e. g.:

& - 0x6&: Apple Inc - Leopard OSX - 0x6&: TekSavvy - Danny Murray

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

Mas devido ao uso lento, e ao valor duvidoso em primeiro lugar, SixXS descontinuou o serviço em 2018.

Leitura de Bónus

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

Há um método mais fácil que funciona para mim. Apenas mudei a métrica de interface # para determinar a sua prioridade. Tinha usado este método no passado para mudar a prioridade dos adaptadores de rede (prioridade Wireless NIC primeiro, prioridade LAN NIC segundo), mas descobri que funciona também em TCP/IPv4 e TCP/IPv6. Neste caso, mudei a métrica da interface TCP/IPv4 de Automático para 5, e a métrica da interface TCP/IPv6 de Automático para 10. Quanto menor for o número métrico, maior será a sua prioridade. Em seguida, reinicie o seu PC. Assim, agora sempre que pingar utilizando o hostname, ele responderá a partir do IPv4, em vez do Ipv6.

Aqui está uma instrução mais detalhada https://www.windowscentral.com/how-change-priority-order-network-adapters-windows-10