Conectividade IPv6 em casa

Neste primeiro post falarei como obter um túnel que lhe dará apenas um IPv6 Real (global unicast) e fixo. Na Parte 2 falarei como obter toda uma sub-rede para que você possa dar à todos os dispositvos da sua casa um IPv6 real sem NAT.

Não falarei muito sobre formas de endereçamento do IPv6 pois devo me focar em como conseguir conectividade em casa através de túneis, apenas lembrando que são 128 bits, dos quais 48 são de prefixo, 16 de sub-rede e 64 de identificador de host em uma sub-rede. Para mais detalhes sugiro ler o curto artigo na Wikipédia sobre endereçamento IPv6.

Tunnel Brokers

Para conseguir conectividade IPv6 quando o nosso provedor não nos fornece IPv6 nativamente devemos usar um dos métodos de transição que já foram criados e normalizados com este intuito. Um deles é o 6in4, que utiliza-se de um stream de pacotes IPv4 entre dois nós da rede sobre o qual são encapsulados os pacotes IPv6. Este protocolo de encapsulamento utilzado pelo 6in4 é o protocolo-41 (41 é o número que irá aparecer no campo Protocol do cabeçalho do pacote IPv4) chamado de IPv6 Encapsulation.

Para conseguirmos nos conectar à Internet através de IPv6 precisamos de um nó que receba os pacotes IPv4 , desencapsule-os e os encaminhe à Internet IPv6 fazendo também o sentido contrário.

Os Tunnel Brokers são serviços que permitem a requisição de uma conectividade IPv6 e existem alguns gratuitos como o projeto SixXS com um ponto de acesso (nó que irá nos conectar à internet via IPv6) no Brasil. Por este motivo falarei mais de como obter um túnel no site www.sixxs.net.

Conectividade IPv6 com encapsulamento sobre IPv4

SixXS

O Tunnel Broker SixXS é gratuito. Porém para obtermos um túnel precisaremos seguir a receita de bolo:

Crie um Handle/Login no site www.sixxs.net. Tal Handle serve para identificar você legalmente então você deve preencher corretamente os dados pedidos. Isto é necessário para evitar que usuários utilizem a conectividade como uma forma de se tornarem anônimos e realizar ações ilegais na Internet.

Se você se deparar com avisos de perigo ao se logar no site com HTTPS você pode ignorá-los e continuar o acesso ao site, porém para não obter mais estes erros você deve instalar o Certificado de Raiz da CACert.org Classe 1 no formato PEM do site da CACert.org

Responda ao e-mail de verificação e espere de 1 dia até 1 semana (porém no meu caso foram apenas 12 horas) pelo e-mail de confirmação com o seu Handle/Login e Senha. A verificação é feita manualmente pelo pessoal do SixXS e por isso a demora.

Escolhendo o tipo de Túnel

Antes de prosseguirmos com a requisição de um túnel com IPv6 Real e Fixo, deve-se decidir qual tipo de túnel irá ser requisitado. Escolha:

  • 6in4-static – Quando você possui IPv4 real e fixo;
  • 6in4-heartbeat – Quando você possui IPv4 real variável (caso mais comum com PCs ligados diretamente à internet) OU quando você está atrás de um NAT  (isto é, o roteador possui o IPv4 real variável mas você possui um IP de rede privada como 192.168.x.x por exemplo) e pode configurar o seu IP local no DMZ do roteador de forma que todos os pacotes que vêm da Internet e vão para o IPv4 real do roteador doméstico sejam encaminhados pelo NAT para o seu IP local da forma 192.168.x.x;
  • AYIYA – Quando você está atrás de um NAT e não há como configurar o DMZ do seu roteador.

Neste post falarei apenas do segundo tipo de túnel que é o mais comum em cenários residenciais e é o qual eu uso em casa atualmente.

Requisitando e obtendo um Túnel

Logue e faça o request de um Túnel, escolhendo o Ponto De Acesso mais próximo a você. Por enquanto o único no Brasil fica em Uberlândia, MG e pelos meus testes, possui apenas 40ms de latência. O nome do PoP é brudi01. Quando for preencher o motivo pelo qual você escolheu este PoP pode dizer que é o único em seu país.

Novamente o seu pedido será analisado pelo pessoal do SixXS e a resposta deverá chegar no dia seguinte. Logue novamente no site e veja que agora há um túnel na sua lista de túneis. Clique nele.

Exemplo de túnel 6in4 heartbeat aprovado

Os dados mais importantes que você deverá ter em mãos quando for configurar o túnel no seu computador são:

  • PoP IPv4
  • IPv6 Prefix
  • Your IPv6

Neste instante você possui apenas um IPv6 fixo real e um gateway padrão IPv6. No exemplo ao lado o endereço é 2001:1291:200:200::2 e o  gateway padrão é 2001:1291:200:200::1. A máscara de sub-rede é /64, isto é, 64 bits à esquerda são ‘1’s e os restantes à direita são ‘0’s.

Configurando o túnel no Windows Vista/7

Agora você irá criar e configurar o adaptador virtual 6in4 do seu computador através do comando netsh, pois infelizmente o Windows não exibe o adaptador virtual nas Conexões de Rede. Para isto abra o Prompt de Comando como Administrador e digite :

1) netsh in ipv6 add v6v4tunnel sixxs [seu endereço ipv4] [endereço ipv4 do PoP]

Isto irá criar o adaptador virtual de túnel.

O campo [seu ipv4] deverá ser o seu IPv4 da internet (caso você esta conectado diretamente à Internet) ou o seu IPv4 Local (caso você esteja atrás de um NAT, mas não esqueça de configurar este IP Local no DMZ do seu roteador!!!!).

2) netsh in ipv6 add address sixxs [seu endereço IPv6]

Isto irá definir o IPv6 real e fixo ao seu adaptador virtual recém criado

3) netsh in ipv6 add route [Prefixo IPv6, 64 bits à esq. apenas]/[Tamanho da máscara de sub-rede] sixxs

Isto irá dizer à tabela de roteamento qual o seu prefixo e a sua máscara de sub-rede e também que para acessar a sub-rede IPv6 (entre você e o seu PoP, deve-se usar a interface “sixxs” diretamente sem roteadores). Ignore caso o netsh retorne que esta rota já existe.

4) netsh interface ipv6 add route 0::/0 sixxs publish=yes

Isto irá dizer à tabela de roteamento que para acessar a rede 0::/0 (ou seja , toda a Internet IPv6) deve-se utilizar a interface “sixxs”.

Finalmente, se estiver no Windows Vista:

5) netsh firewall set icmpsetting SixXS enable all

Isto irá permitir que o computador seja “pingado”

Exemplos de alguns comandos:

Com uma conexão direta à Internet com  IPv4 real 189.56.76.123

1) netsh in ipv6 add v6v4tunnel sixxs 189.56.76.123 201.48.254.14

OU, se for rede local atrás de NAT com IPv4 local 192.168.0.11

1) netsh in ipv6 add v6v4tunnel sixxs 192.168.0.11 201.48.254.14

2) netsh interface ipv6 add address sixxs 2001:1291:200:200::2

3) netsh interface ipv6 add route 2001:1291:200:200::/64 sixxs

No passo 3 verifique que não foi utilizado o último algarismo “1”,  do prefixo, pois o prefixo é toda a parte do endereço que bate com a máscara (apenas 64 bits à esquerda) e o endereço 2001:1291:200:200::1 é na verdade o endereço IPv6 do seu PoP.

Mantendo o PoP informado da mudança do seu endereço IPv4 Real

O projeto SixXS criou um programa chamado AICCU para, entre outras coisas, implementar o protocolo de heartbeat mantendo o túnel ativo e informando ao PoP qual o seu IPv4 real.

Deve-se estar com o relógio do computador atualizado, pois o heartbeat usa ticks com timestamp para manter o túnel ativo.

Há duas versões, a console e gui. No momento, se você estiver usando Windows 64 bits com o túnel tipo AYIYA você deve utilizar a versão console, mas como estamos utilizando um túnel do tipo 6in4-heartbeat, a versão gui nos serve. Faça download do mesmo.

Abra o AICCU, logue com o seu Handle e Senha, escolha o seu túnel, marque Behind Nat se você estiver atrás de um NAT, e clique em Enable. Se você quiser que o túnel seja ativo automaticamente quando abrir o AICUU marque Auto Enable.

Feche a janela e o AICCU irá se minimizar. Você deve mantê-lo rodando para manter o túnel funcionando.

DNS com IPv6

A resolução de nomes DNS é independente da versão do IP que você usa para fazer pedidos DNS aos servidores DNS.

Por exemplo, os servidores DNS do Google 8.8.8.8 e 8.8.4.4 retornam tanto endereços v4 quanto v6  para o nome www.google.com

O importante é que você deve utilizar servidores DNS que retornem endereços IPv6 também. Sugiro o uso dos servidores DNS do Google que permitem o acesso o Facebook através de www.v6.facebook.com ou http://ipv6.google.com.

Testando a conexão

Tente ping ipv6.google.com

Acesse www.sixxs.net e verifique no rodapé que o site reconheceu que a sua conexão foi feita por IPv6.

Acesse www.v6.facebook.com.

O site Test-IPv6 é uma ótima forma de testar a conectividade IPv6.

Ao término deste tutorial, todos os demais dispositivos da sua rede em casa que possuam suporte ao IPv6 conseguirão conectar-se à internet via IPv6.

Após seguir o tutorial você já deve  possuir umas das duas configurações abaixo:

  • Com roteador doméstico + NAT:
  • Computador direto na internet com IPv4 público Global Unicast:

Sub rede com ips válidos na internet IPv6

Até alguns meses atrás, após conseguir o túnel pelo site do projeto SIXXS, era necessário manter o túnel ativo por uma semana para conseguir realizar o pedido de alocação de subrede . Porém hoje, todos os usuários que possuem um túnel já possuem também um prefixo de subrede /64 alocado.
Faça o seguinte:

  1. Entre no site do projeto SIXXS no endereço www.sixxs.net e faça o login no link Login for Existing Users.
  2. Na tela de configurações onde são exibidos os dados do usuário e os túneis haverá também uma tabela com as subredes. Verifique se o prefixo de subrede está ativado, caso contrário, clique no ID da subrede e ative o mesmo.

Pronto. Agora o PoP anuncia a rota na Internet IPv6 dizendo que a sua subrede, por exemplo, 2001:1291:200:8123::/64 é acessível pelo roteador cujo IP é o IPv6 do túnel: 2001:1291:200:123::2.

Anote o Subnet Prefix da sua subrede pois será necessário na configuração do computador como roteador.

Detalhes do IPv6

Antes de configurar o Windows para funcionar como um roteador IPv6 é interessante conhecer uma parte do funcionamento do IPv6.

O IPv6 não implementa broadcast, logo não existe no IPv6 o equivalente a mandar um pacote para o endereço 192.168.1.255 sendo que todos os computadores da sub rede 192.168.1.xxx irão receber o pacote. No IPv6 a funcionalidade do broadcast é feita com multicast.

Mas, para o multicast funcionar as placas de rede devem possuir um endereço IP já atribuído e realizar o join no IP do grupo multicast. Sendo assim como funciona, por exemplo, o DHCPv6 já que não existe broadcast? E o ARP? Para responder isto basta você verificar que todas as suas placas de rede, mesmo antes de começar o tutorial na Parte 1, já possuíam um endereço IP começando com fe80::.

O IPv6 define que os 64 bits mais significativos são usados para definir as redes e os 64 bits menos significativos sejam usados para definir os hosts. Isto mesmo, a recomendação é que para cada usuário final seja fornecido um prefixo IP com 64 bits sobrando para usar nos dispositivos em casa, logo na sua casa você poderá ter 2^64 dispositivos com IPs diferentes todos com IPs reais da internet.

Endereços Link-Local

Todo dispositivo IPv6 possui um endereço IP automaticamente gerado assim que o driver IPv6 é ativado na interface e este endereço IP sempre pertence à rede fe80::/10.
A geração automática dos 64 bits menos significativos é feita automaticamente. Mas como garantir que não haja conflito? A resposta é se basear em algo que já esteja garantido em não conflitar. Se você pensou no endereço da camada de enlace você acertou. O MAC-Address é utilizado na geração automática dos 64 bits menos significativos dos IPs automáticos das placas de rede, porém o MAC-Address possui apenas 48 bits e para gerar 64 bits a partir dele segue-se a receita do padrão EUI-64 que insere os 16 bits 0xFFFE no meio dos 48 bits e inverte o 7º bit mais significativo do valor final.

IPv6 Link-Local gerado automaticamente

Alguns SOs não seguem o padrão EUI-64 para evitar que possa inferido facilmente o MAC Address da interface.

Assim, se você possui outros dispositivos IPv6 na sua rede local e se já compartilhava arquivos pelos compartilhamento do Windows, você já estava usando IPv6.:

Ping de resposta de um computador na rede do Windows

Grupo multicast all-nodes

Agora com todas as placas de rede com endereços IPv6 automaticamente gerados todas elas automaticamente assim que são ativadas realizam o join no grupo multicast all-nodes que representa “todos os dispositivos da camada de enlace”. A implementação do IPv6 definiu este grupo multicast com o endereço ff02::1. Assim, para realizar o equivalente ao broadcast do IPv4 basta enviar um pacote para o grupo multicast ff02::1.

Porém todos estes endereços IPv6 da subrede fe80::/10 são apenas endereços locais que servem para comunicação na rede local e não são endereços válidos na internet . Para os computadores acessarem a internet é necessário um roteador e que as placas de redes todas possuam um endereço válido. A implementação do IPv6 inclui um mecanismo feito para facilitar a configuração de redes IPv6 simples como é o cenário doméstico e que não utiliza necessariamente o bom e velho DHCP.

Router Advertisements

Após ingressar no grupo multicast os dispositivos enviam um pacote ICMPv6 do tipo Router Solicitation para o grupo multicast all-routers, ff02::2, e os roteadores que estiverem configurados respodem com o pacote Router Advertisement que informa o seu endereço IPv6 e qual o prefixo dos 64 bits superiores que a placa de rede deve usar para a autoconfiguração. Este funcionamento difere do DHCP pois não há a necessidade de configurar no roteador um intervalo de IPs.

Com o 64 bits superiores  a placa de rede gera os 64 bits inferiores usando o padrão EUI-64 e registra o endereço IPv6 do roteador que respondeu com o Router Advertisement como gateway para a internet. Assim a placa de rede conterá dois IPs. Um endereço link-local e um endereço real.

IPv6 após a resposta do gateway com Router Advertisement

O mecanismo acima descrito é chamado de Stateless Address Autoconfiguration em contraste com o uso do DHCPv6 para alocação de endereços IPv6 que é chamado de Stateful Configuration.

Se você quiser aprender mais sobre o IPv6 principalmente com relação ao serviços que usam o grupo multicast Link-Local recomendo o mini curso de IPv6 em flash do site www.ipv6.br. É extremamante didático e o capítulo Serviços Básicos do IPv6 foca nos pacotes ICMPv6 usados, por exemplo, no Router Advertisement e Router Solicitation.

Configurando o Windows 7, 8 e 10/Vista para funcionar como um gateway IPv6

Basta agora configurar o Windows para encaminhar pacotes e respoder à pacotes Router Solicitation. Tenha em mãos o seu Subnet Prefix e o nome da conexão local usada para comunicar com os outros computadores da rede interna, por exemplo, “Conexão Local 1″ ou “Local Connection 2″.  Abra o Prompt de Comando como Administrador e digite :

1) netsh interface ipv6 add route [Seu Subnet Prefix]/64 [Nome da conexão local] publish=yes

Isto irá definir um endereço IPv6 real com o seu prefixo alocado pelo PoP  à sua placa de rede.

2) netsh interface ipv6 set interface [Adaptador virtual do túnel] forwarding=enabled

Isto irá ativar o encaminhamento de pacotes no adaptador de rede virtual do túnel 6in4.

3) netsh interface ipv6 set interface [Nome da conexão local] forwarding=enabled advertise=enabled
Irá ativar o envio de Router Advertisements na rede local.

Exemplo com os dados do início do post:

1) netsh interface ipv6 add route 2001:1291:200:8123::/64 “Conexão local 1″ publish=yes

2) netsh interface ipv6 set interface “sixxs” forwarding=enabled

3) netsh interface ipv6 set interface “Conexão local 1″ forwarding=enabled advertise=enabled

Pronto. Agora todos os dispositivos da sua rede doméstica terão endereços IPv6 reais da internet. Vá em outro computador e tente rodar o comando

ping ipv6.google.com

ou usando o seu celular via wi-fi na sua rede local navege para o site test-ipv6.com. Os celulares com Android já possuem suporte ao IPv6 via wi-fi.

Fonte: ipv6.com