domingo, 20 de outubro de 2013

Endereço IPv6 e Função EUI-64 no Microsoft Windows

Olá Pessoal.

Em outro artigo que escrevi, intitulado "Autoconfiguração de Endereços IPv6 (SLAAC)", expliquei ao leitor como funciona o processo de autoconfiguração de endereços no IPv6. De maneira bem resumida, apenas para relembrar, os roteadores são responsáveis por fazer o anúncio do(s) prefixo(s) através de mensagens ICMPv6 Tipo 134 (RA), enquanto que o sufixo identificador do host é automaticamente gerado a partir do endereço MAC da interface de rede.

Depois de aprendido o prefixo da rede, fica faltando apenas determinar o sufixo que será utilizado nos últimos 64 bits do Host-ID (sufixo de host). O sufixo de host é automaticamente gerado a partir do endereço físico (MAC) da interface de rede. O detalhe é que o MAC tem apenas 48 bis, por isso é aplicada uma função de expansão denominada IEEE EUI-64 (Extended Unique Identifier) no endereço físico que preenche os demais 16 bits através de um algoritmo padronizado, processo que pode ser relembrado na figura abaixo.


Esse é o comportamento padrão da maioria dos sistemas operacionais que seguem a RFC 2373, como acontece no Linux e no MacOS. No entanto, o Microsoft® Windows não utiliza a função de expansão EUI-64 para gerar o Host-ID a partir do MAC das interfaces. A Microsoft® optou por gerá-los aleatoriamente porque entende que é um risco de segurança incorporar os endereços físicos das interfaces de rede no próprio IPv6, o que é uma prática de privacidade proposta na RFC 4941 intitulada "Privacy Extensions for SLAAC in IPv6". Para exemplificar esse processo "padrão", a figura abaixo traz uma exibição das configurações de rede no Windows.


Reparem na imagem anterior que o endereço MAC da interface de rede é 00-22-5F-D1-BA-BD e o sufixo utilizado no endereço IPv6 é a5c9:9415:9239:e855 (anexado ao prefixo link-local fe80), ou seja, não existe nenhuma relação entre o sufixo gerado aleatoriamente e o endereço físico da interface de rede. Cabe destacar que o %X utilizado ao final dos endereços IPv6 no Windows é apenas um índice numérico utilizado para referenciar cada uma das interfaces instaladas no sistema e, portanto, não faz parte do endereço v6.

Apesar de gerar o sufixo aleatoriamente ser o comportamento padrão do Microsoft® Windows, isso pode trazer mais problemas de gestão do que benefícios. Esse processo pode tornar mais difícil o processo de monitoramento das máquinas e também requer sucessivas atualizações de DNS a cada vez que o endereço IPv6 do host é alterado em cada boot. O administrador pode optar por utilizar o método EUI-64 para gerar o sufixo de host em todas as interfaces do sistema, desativando as extensões de privacidade. Para fazê-lo, é necessário entrar no prompt de comandos com elevação de administrador e entrar com os seguintes comandos:.

netsh interface ipv6 set privacy state=disabled store=active
netsh interface ipv6 set privacy state=disabled store=persistent
netsh interface ipv6 set global randomizeidentifiers=disabled store=active
netsh interface ipv6 set global randomizeidentifiers=disabled store=persistent

Depois de feito isso, basta exibir novamente as configurações de rede no Windows para observar que a função EUI-64 já está em operação, conforme saída da figura abaixo. Caso o leitor queira reativar as extensões de privacidade e, portanto, desativar o EUI-64, basta repetir esse procedimento substituindo o parâmetro state=disabled por state=enabled


Reparem na figura acima que agora o sufixo utilizado no endereço IPv6 é 0222:5fff:fed1:babd (anexado ao prefixo fe80), ou seja, ele foi gerado a partir do MAC 00-22-5F-D1-BA-BD. Para que esse processo fique ainda mais claro, vamos aplicar a função EUI-64 passo-a-passo:

Os 48 bits do MAC são separados em dois blocos de 24 bits, ou seja, <00225F> e <D1BABD>. Feito isso, são inseridos os algarismos hexadecimais FFFE entre eles, ficando 00225FFFFED1BABD. Por fim, o sétimo bit tem seu valor invertido, o que faz com que o segundo algarismo 0 seja transformado em 2. Dessa forma chega-se ao resultado 02225FFFFED1BABD. O resultado é o sufixo 0222:5fff:fed1:babd utilizado no endereço IPv6. Façam seus testes...

Abraço.

Samuel.

3 comentários:

  1. Ótimo Post Samuel. Uma dúvida que sempre tive ao estudar IPv6, você sabe o porquê da escolha do valor FFFE? e também o porquê da escolha da alteração desse sétimo bit (U/L) nesta conversão do EUI-64? Abs e Parabéns !!!

    Roberto Mendonça

    ResponderExcluir
    Respostas
    1. Olá Roberto.

      A opção do valor FFFE foi simplesmente uma convenção adotada pelo IEEE. Como os primeiros 24 bits do MAC são administrados pelo IEEE para identificar univocamente os fabricantes (OUI), então o valor FFFE ficou reservado para identificar a função EUI-64, não sendo permitida a utilização desse valor nos primeiros 24 bits.

      O sétimo bit também é uma convenção do IEEE. Quando seu valor é 0 isso quer dizer que se trata de um endereço universal gerado pelo próprio IEEE (como é o caso do OUI do MAC). Quando seu valor é 1, isso quer dizer que ele foi gerado LOCALMENTE, por exemplo pela função EUI-64. Na prática isso quer dizer que o endereço MAC original foi manipulado quando seu valor está setado em 1.

      Você pode encontrar detalhes da padronização EUI-64 no documento oficial do IEEE:
      http://standards.ieee.org/develop/regauth/tut/eui64.pdf

      Abraço.

      Excluir
  2. Eu observei que não adianta fornecer IPv6 por dhcp, Pelo menos no windows a saída se dá preferencialmente pelo ip de auto configuração

    ResponderExcluir