IPv6 e Brasil: sua conexão já suporta o novo protocolo da Internet?

Enviado por Renan, qua, 02/02/2011 - 01:26

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:

Encaminhamento de pacotes IPv6 por redes onde opera somente o protocolo 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 (UbuntuMintAptosid, 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:

Esquema ilustrando funcionamento de um modem DSL até a camada de rede

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.

Esquema ilustrando funcionamento de um modem DSL somente até a camada de enlace

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 ms

Depois 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

imagem de Anônimo

oi, me ajuda pois estou com

Enviado por Anônimo (não verificado) em dom, 15/01/2012 - 04:49.

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

imagem de jose

Ola Renan BRT/OI - RS , ok ,

Enviado por jose (não verificado) em sex, 23/09/2011 - 05:49.

Ola Renan

BRT/OI - RS , ok , 6to4 funcionando.

  1. stf0: flags=1<UP> mtu 1280
  2. 	inet6 2002:c942:c93d:1::1 prefixlen 16 
  3. ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1492
  4. 	inet 201.66.201.61 --> 201.66.200.254 netmask 0xffffff00 

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

  • Endereços de páginas de internet e emails viram links automaticamente.
  • Tags HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Quebras de linhas e parágrafos são feitos automaticamente.
  • Você pode habilitar o destaque da sintaxe de código fonte usando as seguintes tags: <code>, <blockcode>, <c>, <cpp>, <css>, <drupal6>, <html>, <java>, <javascript>, <jquery>, <php>, <python>, <ruby>, <sql>. Os estilos de tags permitidos são: <foo>, [foo].

Mais informações sobre as opções de formatação

Type the characters you see in this picture. (verify using audio)
Digite os caracteres que você vê na figura acima; se não consegue lê-los, envie o formulário e uma nova figura será gerada. Não é sensível a maiúsculas.
"Se debugar é o processo de remover bugs, programar deve ser o processo de colocá-los." Drupal theme by Kiwi Themes.