IPv6 e Brasil: sua conexão já suporta o novo protocolo da Internet?
Aproximadamente dois anos atrás escrevi um post em meu antigo blog sobre o esgotamento de endereços IPv4. Na época, simulações mostravam que não haveriam mais endereços IPv4 disponíveis a partir de dezembro de 2010. As simulações quase acertaram: os endereços acabaram agora, dia 1 de fevereiro de 2011!
Já vi algumas pessoas dizendo “E agora!! A internet vai deixar de funcionar?!!1?1”. Não, não vai. Ela ainda irá funcionar como sempre funcionou. A questão é que se nada fosse feito, acessar a internet seria uma verdadeira “dança das cadeiras”: uma ou mais pessoas ficariam sem poder acessar a rede mundial porque todos os endereços disponíveis estão em uso, não sobrando nenhum pra elas (até o momento que alguém se desconecte e libere alguns endereços).
Para salvar o mundo das cáries dessa terrível ameaça que é não conseguir ficar conectado 24 horas, foi desenvolvido a nova versão do protocolo de internet: o IPv6. Mas as nossas grandes e qualificadas operadoras de telefonia já suportam o novo protocolo da Internet? Eu testei com minha conexão banda larga da Oi (ex-Brasil Telecom) e a resposta você encontra nesse post!
Desde o início sabe-se que o protocolo IPv6 foi desenvolvido para solucionar vários requisitos não existentes no IPv4 (mobilidade, segurança, etc) e corrigir alguns outros (complexidade, espaço de endereçamento, etc). O requisito mais crítico é o número de endereços: 4,3 bilhões para IPv4. Vint Cerf, um dos pesquisadores que trabalhavam na DARPA no final da década de 70, assumiu recentemente que, na época, disse “Quem diabos sabia o tamanho do espaço de endereçamento que precisávamos?”.
Assim, com tantas diferenças, os protocolos IPv6 e IPv4 não são compatíveis entre si. Então é necessário criar mecanismos que tornem a transição entre as versões viável. Um destes mecanismos é o Teredo, desenvolvido pela Microsoft para prover conectividade IPv6 a hosts atrás de roteadores com NAT. Outro mecanismo é o 6to4 que, explicando de forma bem simplificada, funciona encaminhando pacotes de redes IPv6 através de redes IPv4:

Estes dois mecanismos foram os que utilizei para o teste de conectividade IPv6. Não entrarei em detalhes muito técnicos a respeito de como os protocolos funcionam, já existe vasta documentação na Internet explicando-os (RFCs para os pr0s e Wikipedia para os n00bs). Nesse post apenas mostrarei algumas informações que garimpei pela rede pra conseguir obter conectividade IPv6 com a Internet.
Teredo
A conectividade provida pelo Teredo não é 100% funcional, visto que possui as limitações de ser somente utilizável via endereços IPv6. Não é possível utilizar DNS através dele (navegação em sites, acesso a hosts via nomes, etc). A conexão só é possível de ser obtida caso você saiba o número do endereçoIPv6 que deseja se conectar.
Para utilizá-lo não há muito mistério: nas versões mais recentes do Windows (Vista e 7) ele já vem habilitado por padrão. Basta ligar o sistema na Internet e bingo, ele já configura um túnel entre seu sistema e um servidor/relay Teredo obtendo um endereço IPv6 global para sua conexão. Este túnel utiliza pacotes UDP para conseguir passar através do NAT de seu roteador/modem.
Para sistemas compatíveis com *nix, existe a implementação em software-livre Miredo. Ele é um daemon que faz basicamente (e automaticamente) a mesma coisa que a implementação Windows: cria um túnel utilizando UDP entre um servidor/relay Teredo e seu sistema provendo conectividade IPv6. Não é necessário nenhuma configuração extra, basta somente instalar e aguardar ele realizar a conexão. Para instalar em sistemas baseados em Debian (Ubuntu, Mint, Aptosid, etc) basta executar:
sudo apt-get install miredo
6to4
A conectividade provida pelo mecanismo 6to4 já é mais robusta pois possibilita o uso de DNS para traduzir nomes em endereços IPv6, além de ser disponibilizada pelo próprio provedor de serviços de Internet. Também possui as seguintes características:
- Delega um bloco de endereços IPv6 para qualquer host ou rede que tenha um endereço IPv4 global;
- Encapsula pacotes IPv6 dentro de pacotes IPv4 para transmissão através de redes IPv4 utilizando o mecanismo 6in4;
- Roteia tráfego entre redes 6to4 e redes IPv6 nativas.
O mecanismo 6to4 não tem como objetivo facilitar a comunicação entre hosts IPv4 e IPv6, ele é somente um mecanismo utilizado para transparência, como uma camada de transporte entre nós IPv6.
Dessa forma ambos os protocolos poderão operar de modo simultâneo (dualstack, ou pilha dupla) na Internet no período inicial de transição entre o IPv4 e o IPv6.
DSL
Aqui que ronda o verdadeiro segredo. A grande maioria dos modens DSL normalmente operam em 2 modos: roteador ou bridge (“ponte”).
No modo roteador, os modens além de trabalharem realmente como roteadores (entre a rede interna, da sua casa, e a rede externa, a Internet) eles trabalham como sistema de autenticação da conexão.
Internamente, eles possuem um software cliente do PPP (Point-to-Point Protocol) comumente utilizado por operadoras de telefonia para prover autenticação aos clientes. Este protocolo costuma ser normalmente encapsulado em quadros Ethernet (versão PPPoE, PPP over Ethernet) ou quadros ATM (versão PPPoA, PPP over ATM). Isso depende do tipo de infra-estrutura utilizada internamente pela operadora de telefonia. O problema real é: a grande maioria dos modens não tem suporte a pilha de protocolos necessários ao funcionamento do IPv6. Por isso que o esquema a seguir provavelmente não funciona nos nossos modens furrebas:

Desta forma, ao realizar a autenticação via PPP (PPPoE ou PPPoA) o BB-RAS/RAR (servidor/roteador de acesso de banda-larga, normalmente ligado ao backbone de Internet da operadora de telefonia) define somente o endereço IPv4 ao modem. Equipamentos intermediários como o DSLAM não realizam a autenticação, somente funcionam na camada física e enlace, provendo um meio de comunicação viável para o tráfego de dados entre diversos dispositivos xDSL em paralelo. Um esquema de como uma conexão xDSL funciona pode ser visto na figura:

Com isso vem a pergunta “E se ao invés de se usar um equipamento que só suporta IPv4 usar um equipamento com suporte ao IPv6? O PPP suporta encaminhar esses pacotes?”. A resposta é: SIM! Tanto o PPP quanto suas variantes (PPPoE e PPPoA) são agnósticos com relação ao protocolo de rede utilizado.
E qual equipamento devemos usar pra conseguir receber endereço(s) IPv6? Simples, seu computador, utilizando o modem xDSL em modo bridge! No modo bridge o modem funciona somente como um modem (ou transceiver): apenas modula e demodula um sinal na linha telefônica (camada física e de enlace) sem se importar com funcionalidades das camadas superiores (PPP, rede, transporte, etc). Assim ele se torna um dispositivo “transparente” para a autenticação e comunicação com a rede da operadora de telefonia.

Explica logo essa bagaça!
Pois bem. O segredo é: coloque seu modem para trabalhar em bridge. A função interna de roteamento do modem é prática e simplifica a configuração e funcionamento da rede, mas impede a comunicação via IPv6. Infelizmente os modens não tem uma interface unificada de configuração, não tenho como cobrir neste artigo essa etapa de configuração de cada modem existente na face da Terra. Ainda bem que existe o Google. :)
Depois de colocar o modem para trabalhar em bridge o que resta é conectar via PPPoE em sua operadora de telefonia utilizando seu próprio computador. O Windows nas versões mais recentes (Vista e 7) já possui um cliente PPPoE nativo para isto. É simples de instalar e configurar, tudo gráfico. Basta ir na central de redes e adicionar uma nova conexão via DSL. O Linux também possui o seu cliente. Se for uma distribuição baseada em Debian (Ubuntu, Mint, Aptosid, etc) basta instalá-lo e configurá-lo com:
sudo apt-get install ppp pppoe && pppoeconf
Em seguida, ambos os sistemas vão buscar pela rede o modem DSL e usá-lo para se conectar a sua operadora de telefonia que lhe provê Internet. No Windows ele irá obter um IPv4, um IPv6 para o túnel Teredo e um IPv6 (um ou uma faixa de endereços) para o túnel 6to4 que sua operadora de telefonia provê. Caso você não receba este último endereço (ou faixa de endereços) provavelmente sua operadora ainda não fez a lição de casa para prover conectividade IPv6 para os clientes.
Um exemplo de como foi minha conexão IPv6 no Windows pode ser visto nas imagens e nos logs abaixo:
Configuração de IP do Windows
Adaptador PPP PPPoE:
Sufixo DNS específico de conexão. . . . . . :
Endereço IPv4. . . . . . . . . . . . . . . : 201.40.60.132
Máscara de Sub-rede . . . . . . . . . . . . : 255.255.255.255
Gateway Padrão. . . . . . . . . . . . . . . : 0.0.0.0
Adaptador Ethernet Conexão local:
Sufixo DNS específico de conexão. . . . . . : lan
Endereço IPv6 de link local . . . . . . . . : fe80::8522:4081:9a5a:f554%11
Endereço IPv4. . . . . . . . . . . . . . . : 10.0.0.1
Máscara de Sub-rede . . . . . . . . . . . . : 255.255.255.0
Gateway Padrão. . . . . . . . . . . . . . . : 10.0.0.138
Adaptador de túnel isatap.lan:
Estado da mídia. . . . . . . . . . . . . . : mídia desconectada
Sufixo DNS específico de conexão. . . . . . : lan
Adaptador de túnel isatap.{85CB7530-2F8B-47A8-A68B-EF1611B640B1}:
Estado da mídia. . . . . . . . . . . . . . : mídia desconectada
Sufixo DNS específico de conexão. . . . . . :
Adaptador de túnel Teredo Tunneling Pseudo-Interface:
Sufixo DNS específico de conexão. . . . . . :
Endereço IPv6 . . . . . . . . . . . . . . . : 2001:0:4137:9e76:3000:38af:36d7:c37b
Endereço IPv6 de link local . . . . . . . . : fe80::3000:38af:36d7:c37b%13
Gateway Padrão. . . . . . . . . . . . . . . :
Adaptador de túnel 6TO4 Adapter:
Sufixo DNS específico de conexão. . . . . . :
Endereço IPv6 . . . . . . . . . . . . . . . : 2002:c928:3c84::c928:3c84
Gateway Padrão. . . . . . . . . . . . . . . : 2002:c058:6301::c058:6301
--------------------------------
PS C:\Users\Renan> tracert ipv6.google.com
Rastreando a rota para ipv6.l.google.com [2001:4860:800f::68]
com no máximo 30 saltos:
1 * * * Esgotado o tempo limite do pedido.
2 227 ms 226 ms 227 ms sl-crs1-rly-po0-5-5-2.v6.sprintlink.net [2600:0:2:1239:144:232:2:54]
3 228 ms 228 ms 227 ms sl-crs1-dc-bu-1.v6.sprintlink.net [2600:0:2:1239:144:232:20:14]
4 229 ms 230 ms 229 ms sl-st30-ash-po0-1-0-0.v6.sprintlink.net [2600:0:2:1239:144:232:19:228]
5 227 ms 227 ms 226 ms 2001:4860:1:1:0:4d7:0:8
6 227 ms 228 ms 228 ms 2001:4860::1:0:9ff
7 227 ms 228 ms 233 ms 2001:4860:0:1::14d
8 227 ms 227 ms 228 ms iad04s01-in-x68.1e100.net [2001:4860:800f::68]
Rastreamento concluído.No Linux o assunto já é um pouco mais complexo. O cliente PPPoE ainda não possui a funcionalidade de automaticamente obter o endereço IPv6 via 6to4 para sua conexão, restando para isso que você configure sua máquina manualmente. Como o processo é relativamente longo e complexo, deixo aqui o link da página onde é explicado detalhadamente cada parte do processo.
Contudo, todavia, entretanto, existe um software que provê conectividade IPv6 automágica (igual no Windows) também usando túneis, mas com suporte a DNS e sem as limitações do Teredo. O software chama-se Gogoc e utiliza o protocolo TSP para acesso às redes IPv6. Porém este túnel é provido pelo tunnelbroker Gogo6 (ex-Gateway6) e não pela sua própria operadora, o que pode causar um delay relativamente maior no acesso a redes e hosts IPv6.
Um exemplo de como foi minha conexão IPv6 no Linux pode ser visto nas imagens e nos logs abaixo:
teredo Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet6 addr: 2001:0:53aa:64c:2cd3:2ed0:44ca:71b2/32 Scope:Global
inet6 addr: fe80::ffff:ffff:ffff/64 Scope:Link
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1280 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 B) TX bytes:144 (144.0 B)
tun Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet6 addr: 2001:5c0:1000:b::8873/128 Scope:Global
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1280 Metric:1
RX packets:3 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:200 (200.0 B) TX bytes:0 (0.0 B)
wlan0 Link encap:Ethernet
inet addr:10.0.0.2 Bcast:10.255.255.255 Mask:255.255.255.0
inet6 addr: fe80::216:44ff:fed0:6220/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:40865 errors:0 dropped:0 overruns:0 frame:0
TX packets:38293 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:34445254 (32.8 MiB) TX bytes:5776027 (5.5 MiB)
$ traceroute ipv6.google.com
traceroute to ipv6.google.com (2001:4860:800a::68), 30 hops max, 80 byte packets
1 2001:5c0:1000:b::871e (2001:5c0:1000:b::871e) 236.487 ms 242.479 ms 244.349 ms
2 ix-5-0-1.6bb1.MTT-Montreal.ipv6.as6453.net (2001:5a0:300::5) 249.330 ms 253.130 ms 253.215 ms
3 if-12-3.mcore3.MTT-Montreal.ipv6.as6453.net (2001:5a0:300:100::21) 254.088 ms 258.390 ms 261.385 ms
4 POS13-0.mcore4.NYY-NewYork.ipv6.as6453.net (2001:5a0:300:100::2) 266.860 ms 270.561 ms 272.665 ms
5 if-5-0-0.976.mcore5.NYY-NewYork.ipv6.as6453.net (2001:5a0:400:400::5) 273.844 ms 277.732 ms 281.130 ms
6 if-11-0-0.723.core4.AEQ-Ashburn.ipv6.as6453.net (2001:5a0:600:200::1) 287.211 ms 264.607 ms 348.957 ms
7 2001:4860:1:1:0:1935:0:4 (2001:4860:1:1:0:1935:0:4) 312.110 ms 312.859 ms 315.196 ms
8 2001:4860::1:0:9ff (2001:4860::1:0:9ff) 320.433 ms 321.519 ms 324.227 ms
9 2001:4860::1:0:489 (2001:4860::1:0:489) 389.397 ms 389.783 ms 2001:4860::1:0:5db (2001:4860::1:0:5db) 356.668 ms
10 2001:4860::2:0:a7 (2001:4860::2:0:a7) 362.454 ms 363.174 ms 363.993 ms
11 2001:4860:0:1::10b (2001:4860:0:1::10b) 367.369 ms 368.003 ms 390.382 ms
12 yx-in-x68.1e100.net (2001:4860:800a::68) 355.138 ms 356.237 ms 355.879 msDepois de passar pelo teste de conectividade do site www.test-ipv6.com obtive os seguintes resultados no Windows e Linux, respectivamente:
Clica que aumenta
Ou seja: uma conectividade não perfeita, mas muito boa para que possa a usufruir da Internet em IPv6 sem problemas!
Em breve começarão a surgir novos modens e roteadores e pontos de acesso Wifi com suporte ao IPv6 e essa “gambiarra” de usar o modem em modo bridge é apenas temporária. Há a alternativa de usar o excelente firmware livre Open DD-WRT no seu ponto de acesso Wifi para ter conectividade IPv6 sem comprar um novo hardware. Mas isso é assunto pra outro post. ;)
Por fim, gostaria de concluir que a operadora de telefonia fixa que uso (Brasil Telecom/Oi) de Campo Grande, Mato Grosso do Sul, já disponibiliza conexões de pilha dupla (IPv4 e IPv6) para seus clientes. Basta somente que nós utilizemos esta nova infraestrutura.
PS: Se tiver alguém aí de outras operadoras de telefonia (GVT, Telefônica, Embratel, etc) experimentem fazer o mesmo e ver se elas proveem conectividade IPv6 e por favor reportem nos comentários!
PS2: É isso galera. Desculpem pelo post longo, mas fazia tempo que não postava nada e o blog precisa de conteúdo. Abraços!
Fontes: IPv6 over xDSL, Wikipedia



2 comments
oi, me ajuda pois estou com
oi, me ajuda pois estou com dificuldades porr causa do tunel e turedo, isatap ate isatap#7 e 6to4 todos estavam com esclamação , tentei atalizar os dives mas nao funcionou tentei procurar na net drives para instalar nao conseguir entao vi em uma pagina que se eu desinstalar o tunel turedo e depois renicializar a maquina ele volta, mas nao voltou, onde eu encontro esse drives na net? e dar algum prolema , e esse ipv6 implica em problemas no meu notbook, meu sistema operacional é windows home premium ,intel i5 , 500 gb de HD . obrigado
Ola Renan BRT/OI - RS , ok ,
Ola Renan
BRT/OI - RS , ok , 6to4 funcionando.
traceroute6 to ipv6.l.google.com (2001:4860:8006::68) from 2002:c942:c93d:1::1, 64 hops max, 12 byte packets
1 2002:9164:bc1d::1 279.707 ms 277.919 ms 276.895 ms
2 2001:610:188:140:145:100:188:1 277.835 ms 278.338 ms 277.979 ms
3 2001:610:f01:9168::169 277.914 ms 277.556 ms 277.981 ms
4 ae1.500.jnr02.asd002a.surf.net 278.866 ms 277.491 ms 278.989 ms
5 2001:4860:1:1:0:44f:: 276.881 ms 277.378 ms 276.914 ms
6 2001:4860::1:0:4b3 277.927 ms 276.760 ms 276.905 ms
7 2001:4860::1:0:15f 271.941 ms 271.414 ms 271.924 ms
8 2001:4860::1:0:5dc 285.936 ms 281.376 ms 280.898 ms
9 2001:4860::1:0:7d9 292.911 ms 291.594 ms 291.934 ms
10 2001:4860::2:0:3a3 291.537 ms 292.703 ms 292.032 ms
11 2001:4860:0:1::4b 294.896 ms 292.597 ms 303.067 ms
12 vw-in-x68.1e100.net 291.862 ms 292.763 ms 291.996 ms
Comentar