Por que usar tunelamento para IPv6 com o IPv4?

Existe mais de uma possibilidade de transportar pacotes IPvb6 em links IPv4.

9.1.1. Túnel estático ponto a ponto: 6bone

Um túnel ponto a ponto é um túnel dedicado em direção a um ponto final., o qual sabe informações sobre uma rede IPv6A (para rotas de volta) e os endereços IPv4 deste túnel estão definidos na RFC 2893 / Transition Mechanisms for IPv6 Hosts and Routers. Necessidades:

  • O endereço IPv4 local do túnel precisa ser estático, global, único e acessível a partir da outra ponta

  • Um prefixo global IPv6 deve ser designado a voce (veja o registro 6bone)

  • Um ponto final remoto do túnel deve ser capaz de rotear seu prefixo IPv6para seu ponto final local (uma configuração manual pode ser necessária)

9.1.2. Túnel automático

Um túnel automático acontece quando um nó diretamente conectado a outro nó obtém um IPv4 do outro nó anterior.

9.1.3. 6to4-Tunneling

O túnel 6to4 (RFC 3056 / Connection of IPv6 Domains via IPv4 Clouds) utiliza um mecanismo simples para criar túneis automáticos. Cada nó com um endereço global único é capaz de ser uma ponta final de um túnel 6to4 (se nenhum firewall no meio do caminho bloquear este tipo de tráfego). Túneis 6to4 não costumam ser túneis um a um. Este tipo de túnel pode ser dividido em Upstream e Downstream. Além disso, um endereço especial IPv6 indica que este nó vai usar o tunelamento 6to4 para se conectar a redes IPv6 mundiais.

9.1.3.1. Geração de prefixo 6to4

O endereço 6to4 está definido abaixo (o esquema foi pego da RFC 3056 / Connection of IPv6 Domains via IPv4 Clouds):

|   3+13   |    32     |    16  |            64 bits             | 
+---+------+-----------+--------+--------------------------------+ 
|  FP+TLA  |  V4ADDR   | SLA ID |           Interface ID         | 
|  0x2002  |           |        |                                | 
+---+------+-----------+--------+--------------------------------+

FP e TLA juntos (16 bits) tem o valor 0x2002. V4ADDR é o endereço único IPv4 (em notação hexadecimal). SLA é o identificador de rede (65536 redes locais possíveis) e são usados para representar a sua estrutura de rede local.

Para os gateways, tal prefixo é gerado normalmente usando o SLA ”0000” e o sufixo "::1" (não é uma exigencia, pode ser arbitrário com um escopo local) e então assinalado a uma interface de túnel 6to4. Veja que a Microsoft também utiliza V4ADDR para o sufixo.

9.1.3.2. Tunelamento Upstream 6to4

O nó tem que saber para qual ponta remota de túnel os pacotes IPv4 com pacotes IPv6 devem ser encaminhados. No início dos tempos de tunelamento 6to4, upstreams dedicados aceitavam que os routers fizessem isso. Veja NSayer's 6to4 information para uma lista de routers.

Hoje em dia, os routers upstream 6to4 podem ser encontrados automaticamente, usando o endereço de unicast 192.88.99.1. Os protocolos de roteamento se incumbem desta função, veja RFC 3068 / An Anycast Prefix for 6to4 Relay Routers para mais detalhes.

9.1.3.3. Tunelamento Downstream 6to4

O downstream (6bone -> seu nó com 6to4 habilitado) não é realmente correto e pode variar de um host remoto estranho que originou os pacotes que foram enviados a voce. Existem duas possibilidades:

  • Estes hosts remotos usam endereços 6to4 e enviam os pacotes de volta diretamente a seu nó (veja abaixo)

  • Estes hosts remotos enviam os pacotes de volta à rede IPv6 e dependendo do roteamento, um router no meio do caminho cria um túnel automaticamente em direção ao seu nó.

9.1.3.4. Tráfego 6to4 possível

  • 6to4 para 6to4: normalmente é um túnel direto entre as duas pontas, ambos habilitados em 6to4

  • 6to4 para não-6to4: é enviado via um túnel upstream

  • não-6to4 para 6to4: é enviado via um túnel downstream

Rede IP I: Processos de Migração – 1

Processos de uma Migração – Coexistência IPv4/IPv6 e Suporte – Parte 1

Esta seção apresenta os mecanismos de coexistência e interação entre as duas versões do protocolo IP abordando os processos de: tunelamentos, traduções, segurança dos mecanismos e sistemas operacionais e o grau de maturidade da pilha IPv6 nos software e firmware.

Premissas

O “gatilho” inicial de uma migração de uma estrutura estável e funcional não é disparado facilmente. Ele deve ser convincente e extremamente necessário, pois estar-se-á mexendo diretamente com a confiabilidade, estabilidade e robustez da rede e seus serviços. Esse “gatilho” poderá ter início, na maior parte dos casos, a partir de duas entidades distintas que são as mais interessadas: a operadora de telecom ou o administrador da rede.

O administrador da rede teria necessidade de migrar sua rede de IPv4 para IPv6 pelos seguintes motivos:

  • A operadora iniciar a oferta de pools IPv6 e a restrição de endereços IPv4 válidos;
  • O aumento de sites e serviços on-line baseados puramente em IPv6
  • Em menor escala, mas também possível, é a necessidade de utilização do IPSec nativo do IPv6 para aumento da segurança da comunicação interna entre os hosts.

Supondo que a operadora de Telecom forneça apenas um pool IPv6 válido e somente um único IPv4 (prefixo de 30 bits) para o cliente. Entra-se, então, no cenário em que a rede interna, controlada pelo administrador, é IPv4 pura, e a operadora oferece 1 (um) único endereço IPv4 público e um pool de endereços (/48 a /56) IPv6, ou seja, se houver necessidade de se ter mais serviços e IP’s válidos, o uso de IPv6 torna-se obrigatório. Sob esse cenário o administrador da rede pode-se ver compelido a iniciar o processo de migração.

Mecanismos de coexistência e suas falhas

Para facilitar a transição entre o IPv4 e o IPv6 foram desenvolvidas técnicas, de forma a manter sua coexistência e compatibilidade por todo o processo de transição para o IPv6 puro.

Essas técnicas, por sua vez, possuem características específicas com seus PRÓS e CONTRAS, podendo ser utilizadas concomitante ou individualmente, de acordo com a necessidade.

Existem atualmente três categorias mais usuais para esses mecanismos de transição:

  • Dual-stack ou simplesmente pilha dupla: que é o IPv4 e o IPv6 habilitados na mesma interface de rede;
  • Tunelamento: tráfego de pacotes IPv6 sobre redes IPv4 ou vice-versa;
  • Tradução: que se restringe à comunicação entre hosts IPv4 puros com hosts IPv6 puros.

Apesar de, num futuro próximo, ser possível ter redes totalmente IPv6, o mais comum será ter IPv4 e IPv6 na mesma infraestrutura. E, para permitir isto, são necessários ferramentas e mecanismos de coexistência e integração (SILVIA, 2002). Considerando que haverá diversos serviços que ainda utilizarão o protocolo IPv4, a coexistência entre as duas versões de protocolos será duradoura, tornando os mecanismos acima de vital importância para esse período, chamado de “misto” e, assim, tentar garantir que a migração seja suave, segura e que não surjam isolamentos de comunicação em nenhum momento.

A internet é constituída por centenas de milhares de redes IPv4 e milhões de hosts IPv4. Para que a adoção do IPv6 seja bem sucedida, é necessária uma introdução gradual, sendo que o principal desafio passa por efetuar a integração e a transição o mais transparente possível para os usuários (SILVA,2002).

Por que usar tunelamento para IPv6 com o IPv4?

Figura 12: Coexistência - IPv6 e IPv4

Há a expectativa de que o IPv4 e o IPv6 coexistam durante um longo período de tempo e, considerando este cenário, os três tipos de mecanismos podem ser empregados: Em algumas redes, como por exemplo, pequenas redes empresariais, será possível a coexistência de IPv4 e de IPv6 na mesma infraestrutura, usando o dual-stack (pilha dupla) e, assim, as aplicações e serviços podem utilizar um dos protocolos, fazendo com que este mecanismo seja o preferido. Contudo, é necessária uma forma destas redes IPv6 se comunicarem entre si, isto é, transportar IPv6 sobre a rede IPv4 existente hoje das operadoras. Para estes casos os túneis são a resposta mais certa.

E em alguns casos, os sistemas IPv4 necessitam se comunicar com sistemas IPv6. Essa é a situação mais complexa de implantação, pois são necessários sistemas de “tradução” entre o IPv4 e o IPv6. A tradução, neste caso, pode ocorrer na camada IP, de transporte ou de aplicação. A forma mais simples de introduzir IPv6 numa rede passa pela utilização de dual-stack, o que permite que as aplicações IPv4 e IPv6 coexistam na mesma rede, sendo que a comunicação IPv4 é efetuada pela pilha IPv4 e a IPv6 pela pilha IPv6. Os mecanismos de tunelamento obrigam que os hosts finais do túnel suportem o dual-stack e uma interface virtual de tunelamento. Um equipamento dual-stack com interface virtual de tunelamento pode enviar pacotes IPv6 através de um túnel IPv4, para um host remoto IPv6, sem existência de infraestrutura IPv6.

Pilha dupla (dual-stack)

O dual-stack é um método para integrar, ativamente, o IPv6 e, assim, não são necessários mecanismos reais de tradução. Na maioria das plataformas, para que um host passe a ser dual-stack é necessário que se habilite o IPv6 ou uma atualização de firmware, para que o IPv6 seja incorporado. Deste modo, o host passa a ter uma stack híbrida, com capacidades IPv4 e IPv6 completas. A comunicação por IPv4 utiliza esse protocolo para o encaminhamento de pacotes IPv4, baseados em rotas aprendidas por protocolos de encaminhamento específicos do IPv4. A comunicação IPv6, por sua vez, utiliza a pilha IPv6, através das rotas descobertas pelos protocolos de encaminhamento IPv6. A introdução de dual-stack em uma rede permite que os hosts terminais e as aplicações efetuem uma migração baseada do IPv4 para o IPv6. Foi, também, definida uma nova API com suporte de endereços e de pedidos DNS IPv4 e IPv6. Quando os dois protocolos estão disponíveis, as aplicações utilizam IPv4 ou IPv6 dependendo da resposta do servidor DNS. A aplicação, então, seleciona o endereço de destino, com base no tipo de tráfego IP e nos requisitos particulares da comunicação.

Assim que o IPv6 é habilitado, há certas medidas de segurança que devem ser tomadas para proteger a rede, esta medidas serão descritas no capítulo de configurações e melhores práticas. Atualmente, o encaminhamento dual-stack é a melhor estratégia para introdução do IPv6.

Por que usar tunelamento para IPv6 com o IPv4?

Figura 13: Tráfego de pacotes com a arquitetura de pilha dupla

Assim, cada host que possuir o método dual-stack vai possuir endereçamento IPv4 atribuído por DHCPv4, ou mesmo manualmente, e IPv6 atribuído por DHCPv6 ou stateless, de acordo com a configuração adotada pelo administrador. Este método permite uma transição gradual, para que, caso um host específico (como uma impressora de rede) que, em seu firmware, possua suporte somente a IPv4 possa se comunicar com os demais hosts da rede (hosts IPv4 ou IPv4/IPv6). Com isso, o administrador pode ir implantando serviços e, com o tempo, ir trocando o hardware obsoleto por dispositivos que suportem IPv6 até o momento em que toda a rede utilize somente tráfego IPv6 e, então desabilitar a pilha IPv4 nos hosts.

O método dual-stack não é livre de falhas, e possui algumas implicações nas configurações de alguns serviços de rede, que devem ser analisadas antes de sua implementação. Alguns dos serviços que precisam sofrer alterações são o DNS, o DHCP, a configuração dos protocolos de roteamento e, principalmente, regras do firewall.

Segurança em dual-stack (Pilha Dupla)

A maior parte dos problemas do dual-stack está relacionada à forma com que o sistema operacional que realiza a função de pilha dupla vai tratar a obtenção e manutenção desses dois ou mais endereços. Dar preferência à comunicação IPv6 sobre a IPv4 é o que prescreve na RFC 3484: “The default policy table gives IPv6 addresses higher precedence than IPv4 addresses. This means that applications will use IPv6 in preference to IPv4 when the two are equally suitable.”. Mas a implementação depende do fabricante do software. Basicamente a utilização de dual-stack não aumenta em si as falhas de segurança individuais do protocolo IPv4 ou IPv6 como é descrito na RFC 4477: “... There are no security considerations in this problem statement per se, as it does not propose a new protocol”. Maiores detalhes estão descritos na RFC 4477.

Tunelamento

O tunelamento se baseia em encapsular todo o tráfego IPv6 em pacote IPv4, de forma a permitir uma comunicação entre dois hosts puramente IPv6, através de uma rede puramente IPv4. Essas técnicas são tratadas na RFC 4213 e tem sido muito utilizadas no início da implantação e testes da tecnologia do IPv6. Várias formas de layout de túneis podem ser configuradas, entre eles são:

  • Host-a-Hostpermite a hosts dual-stack conversarem entre si por uma rede IPv4, utilizando pacotes IPv6 encapsulados em pacote IPv4. Consiste em uma comunicação direta tipo P2P, é utilizada na maioria dos tipos de tunelamento utilizados e será bastante citada neste capitulo.

Por que usar tunelamento para IPv6 com o IPv4?

Figura 14: Configuração Host a Host

  • Host-a-Roteador - Hosts IPv6/IPv4 enviam pacotes IPv6 a um roteador IPv6/IPv4 intermediário via rede IPv4, ligando o primeiro segmento no caminho entre dois hosts,permitindo a comunicação entre esses dois hosts por IPv6;

Por que usar tunelamento para IPv6 com o IPv4?

Figura 15: Configuração Host a Roteador

  • Roteador-a-Roteador – gateways dual-stack IPv6/IPv4 e com uma conexão IPv4 entre si são configurados para trocarem pacotes IPv6 de redes IPv6 passando por uma rede IPv4 (por exemplo, a rede da operadora de Telecom) permitindo a comunicação de dois segmentos de rede IPv6;

Por que usar tunelamento para IPv6 com o IPv4?

Figura 16: Configuração Roteador a Roteador

O encapsulamento, de uma forma geral, é algo simples e dinâmico. O primeiro host (A) pega o pacote IPv6 e o insere em um pacote com cabeçalho IPv4 e então o transmite. O host de destino (B) recebe esse pacote IPv4, desencapsula retirando o cabeçalho IPv4 e processa o pacote IPv6 recebido.

Por que usar tunelamento para IPv6 com o IPv4?

Figura 17: Pilha Dupla IPv6 encapsulado IPv4

Essa forma de encapsulamento é conhecimento como protocolo 41 ou como 6in4 e é utilizado nos tipos de tunelamento que serão vistos a seguir: ISATAP, 6to4 e Túnel Broker (com exceção do TEREDO).

Os túneis podem ser criados com configuração manual, que podem utilizar mecanimos genéricos de encapsulamento. Há, também, mecanismos de criação semiautomáticas de túneis, como, por exemplo, os serviços de túnel Broker e existem, também, mecanismos totalmente automáticos para a criação de túneis, por exemplo: o 6to4, o ISATAP ou o Teredo.

Túneis manuais são usados entre dois pontos e necessitam da configuração dos endereços de origem e destino do túnel. Os túneis automáticos necessitam apenas serem ativados, e o respectivo protocolo é responsável pela criação e manutenção dos túneis.

As variedades de cenários existentes corroboram com a existência de diversos tipos de túneis, com variações em desempenho, implementação e segurança. Algumas técnicas de tunelamento serão descritas abaixo:

Túneis ISATAP

O tipo de tunelamento Intra-Site Automatic Tunnel Addressing Protocol (ISATAP), tem sua fundamentação emtúneis criados pelo roteador ISATAP com prefixos definidos para clientes IPv4 se comunicarem com hosts IPv6. O prefixo definido no roteador ISATAP é associado ao endereço IPv4 do cliente formando assim um endereço IPv6, facilitando ao host ISATAP determinar os pontos de entrada e saída dos túneis. Este processo melhor explicado e definido na RFC 5214 juntamente com a RFC 4213, para a criação de túneis 6in4 com o uso do protocolo 41.

Por que usar tunelamento para IPv6 com o IPv4?

Figura 18: Estrutura de pacote ISATAP

Por que usar tunelamento para IPv6 com o IPv4?

Figura 19: Topologia utilizando túnel ISATAP

A figura 18 mostra a estrutura de um pacote ISATAP, onde:

  • Prefixo Unicast : Prefixo escopo link-local (FE80::/64) ou Prefixo escopo global fornecido pela operadora;
  • ID IPv4 público ou privado: Aqui se diferencia o tipo de endereço IPv4, podendo ser endereço público ou privado. Se for público, o campo deve conter o valor "200", se for privado (192.168.0.0/16, 172.16.0.0/12 e 10.0.0.0/8) o valor do campo é zero;
  • ID ISATAP: Valor fixo referente ao tipo ISATAP que é 5EFE;
  • Endereço IPv4: É o endereço puro IPv4 no formato convencional.

Um exemplo de endereço ISATAP de um endereço IPv4 público 201.200.45.1 seria 2001:10fe:0:8003:200:5efe:201.200.45.1. Note que somente o prefixo da rede 2001:10fe:0:8003 mais 200, ID IPv4 público, mais o prefixo ISATAP :5efe são adicionados ao endereço IPv4 para a composição do endereço ISATAP.

O ISATAP também monta um endereço de escopo link-local utilizando-se das regras mostradas acima, mas com o IPv4 do cliente (prefixo “FE80::/10”) e, em se tratando de uma comunicação interna (entre clientes ISATAP na mesma LAN), essa interface é utilizada.

Modelo de comunicação ISAPTAP

Para a criação do túnel ISATAP, o processo de inicialização é descrito nos passos a seguir:

  • O cliente determina o endereço do roteador ISATAP que pode ser atribuído por resolução DNS ou por configuração manual do cliente;
  • O cliente, então, envia um pacote IPv4 de RS (Router Solicitation) ao roteador ISATAP;
  • O Roteador ISATAP devolve, em resposta à requisição do cliente, um RA (Router Advertisement) em IPv4.
  • De posse dessa informação, o cliente configura seus endereços IPv6/ISATAP.
  •  

Por que usar tunelamento para IPv6 com o IPv4?

Figura 20: Inicialização do ISATAP

Depois de configurada a interface virtual ISATAP, a comunicação deste host a um host IPv4 puro é feita por IPv4 de sua interface normal. No caso da comunicação entre dois clientes com o ISATAP configurado depois de suas respectivas inicializações os seguintes passos são tomados:

  • O cliente C2 (ISATAP) utiliza o protocolo 41 para enviar um pacote IPv6 (ISATAP) encapsulado em IPv4 para o endereço IPv4 do cliente C1;
  • O cliente C1 (ISATAP) recebe o pacote e desencapsula sobrando então o pacote IPv6 (ISATAP).
  • O cliente C1 (ISATAP) utiliza novamente o protocolo 41 para encapsular o pacote IPv6 (ISATAP) com um cabeçalho IPv4 e retransmite para o endereço IPv4 de C2.

Por que usar tunelamento para IPv6 com o IPv4?

Figura 21: Comunicação entre máquinas com ISATAP configurada no mesmo segmento de rede

O ISATAP também fornece suporte à comunicação entre clientes em sub-redes distintas. Os clientes, neste caso utilizam seus roteadores específicos como gateways para alcançarem um ao outro:

  • O cliente C1 (ISATAP) envia um pacote IPv6 encapsulado no protocolo 41 para o endereço IPv4 do roteador R1;
  • O roteador R1, desencapsula o pacote IPv4 (protocolo 41) utilizando a interface virtual ISATAP. De posse do endereço IPv6 do destino ele reenvia (utilizando uma rede IPv6) pura para o outro roteador R2, que, neste caso, também é ISATAP;
  • R2, então, recebe o pacote IPv6 de R1 em IPv6 nativo e, verificando o endereço de destino, sabe que ele pertence a sua sub-rede, mas não a IPv4 e sim a ISATAP. R2 encapsula novamente o pacote em um pacote IPv4 (protocolo 41) e transmite através de sua interface virtual ISATAP para a interface virtual ISATAP do cliente C2 que, por sua vez, desencapsula-o e extrai o pacote IPv6;
  • C2 responde, encapsulando o pacote IPv6 em IPv4 (protocolo 41), e o reenvia através da interface virtual ISATAP para o endereço IPv4 do roteador R2;
  • R2 recebe o pacote IPv6 encapsulado e o encaminha para sua interface IPv6;
  • R1 recebe o pacote de R2 em IPv6, repassa o pacote para sua interface ISATAP, encapsula novamente para IPv4 e o encaminha para o endereço IPv4 de C1.

Por que usar tunelamento para IPv6 com o IPv4?

Figura 22: Comunicação entre máquinas com ISATAP configurada em diferentes segmentos de rede

Ainda existe uma variante possível e importante nestes cenários, quando o cliente ISATAP precisar conversar com um cliente IPv6 puro. Partindo novamente da premissa de que toda a inicialização do cliente já foi efetuada como mostrado anteriormente, o processo de comunicação é o que se segue:

  • O cliente (ISATAP) inicia o envio de um pacote IPv6 encapsulado IPv4 (protocolo 41) por sua interface virtual ISATAP para o endereço IPv4 do roteador ISATAP;
  • O roteador (ISATAP) desencapsula o pacote IPv4 na sua interface virtual ISATAP e extrai o pacote IPv6; com o endereço IPv6 em mãos ele envia o pacote para seu destino, que no exemplo, é o servidor com endereço IPv6 puro;
  • O servidor IPv6 puro responde ao cliente ISATAP através de sua rota padrão IPv6 (ou seja seu gateway é o roteador ISATAP);
  • O roteador de posse do pacote sabe que o destino é o cliente ISATAP: com isso ele encapsula o pacote IPv6 na sua interface virtual ISATAP (protocolo 41) e o encaminha para o cliente ISATAP que, por sua vez desencapsula-o e trata a informação.

Por que usar tunelamento para IPv6 com o IPv4?

Figura 23: Comunicação entre máquinas com ISATAP – diferentes segmentos de rede IPv6

Segurança de Túnel ISATAP

Os pontos negativos em relação ao ISATAP são:

  • Incompatibilidade de alguns sistemas operacionais com a tecnologia ISATAP, inclusive em se ter suporte ao cliente ISATAP.
  • As interfaces virtuais do tunelamento têm, geralmente, a segurança mais vulnerável do que a interface real física, tendo em vista que o invasor tem a possibilidade de enviar pacote IPv6 encapsulado de qualquer lugar da Internet, ou mesmo interno à rede e, com isso, desencadear ataques onde se injeta tráfego na rede invadida através de pacote IPv6 encapsulados com IPv4 (ISATAP), mas com endereço de origem falso. Uma forma de se conter esse tipo de invasão seria criar regras IPv4 no roteador ISATAP limitando o acesso à interface ISATAP apenas a hosts conhecidos assim como a filtragem nos roteadores de borda de pacotes utilizando o protocolo 41.
  • Outro problema relacionado à interface virtual ISATAP é que, se o tráfego for interno (entre dois clientes ISATAP, mas dentro da mesma LAN), ele será feito pela interface virtual com todo o processo de encapsulamento com o protocolo 41, ao invés da interface de escopo link-local. Isso ocorre porque o ISATAP também cria um endereço de escopo link-local e o mesmo obtém prioridade maior em relação à interface link-local autoconfigurada (“FE80::/10), gerando, assim, um maior processamento nos clientes.

Túnel 6to4

O tipo de tunelamento automático 6to4, que é definido na RFC 3056, permite a conexão ponto-a-ponto entre hosts IPv6 em uma rede IPv4 ou sub-redes IPv6 em uma rede também IPv4. Os endereços IPv6 são formados a partir de um prefixo “2002::/10”, reservado pela IANA, que será utilizado única e exclusivamente para túneis 6to4, e seguido do endereço IPv4 convertido em hexadecimal como no exemplo 2002:aabb:ccdd::/48, onde aabb:ccdd é o endereço IPv4 público do cliente já convertido para o formato hexadecimal de dois dígitos.

Por que usar tunelamento para IPv6 com o IPv4?

Figura 24: Estrutura do endereço do túnel 6to4

Como exemplo de transformação, utilizaremos o endereço IPv4: 201.64.70.2. Cada campo de 8 bits do endereçamento IPv4 é convertido em seu respectivo hexadecimal de 2 dígitos:

DECIMAL

HEXADECIMAL

201

C9

64

40

70

46

2

02

Após a conversão, o endereço fica da seguinte forma: 2002:C940:4602::.

Neste modelo o campo ID da interface e o ID da subrede são utilizados para segmentar a rede e pode ser colocado de forma dinâmica (por DHCP) ou manual fixa.

Apesar da RFC 3056 determinar uma forma de construção de um endereço de escopo link-local para uma interface 6to4, ela simplesmente foi deixada de lado pelos implementadores das pilhas IP nos sistemas operacionais por não ter utilidade real, pois o endereço formado não pode ser roteado. Ao invés de se formar o endereço link-local com a interface virtual 6to4 o sistema operacional, utilizando dual-stack, simplesmente utiliza o endereço formado automaticamente por sua interface de rede física com o prefixo “FE80::/10”.

O layout da conexão de um dos cenários utilizando o tunelamento 6to4 e com todos os agentes possíveis é apresentado na figura abaixo:

Por que usar tunelamento para IPv6 com o IPv4?

Figura 25: Estrutura da conexão 6to4

Os possíveis hosts que fazem parte desse cenário serão explicados abaixo:

  • Roteador 6to4: equipamento com suporte ao tipo de tunelamento 6to4, que faz o papel de gateway para uma rede IPv6 nativa, caso esta tenha necessidade de alcançar outra rede IPv6;
  • Cliente/Roteador 6to4: este cliente possui um endereço IPv4 público e suporte ao túnel 6to4 através de interface virtual, necessitando apenas de um relay 6to4 para acesso a uma rede IPv6 pura. Diferentemente do cliente 6to4, ele gera seu próprio endereço 6to4 através de seu IPv4 válido. Esse agente não terá, neste trabalho, um cenário específico para ele, pois suas funcionalidades e possibilidades de aplicação serão incluídas dentro do agente Roteador 6to4;
  • Cliente 6to4: cliente que possui endereço IPv6 no formato 6to4, mas que pode ser obtido através de RA emitido pelo roteador 6to4 e assimilado como se fosse um endereço IPv6 normal, mas com a diferença de que esse endereço IPv6 vai possuir o prefixo 2002:aabb:ccdd:: pois adquire o prefixo do Roteador 6to4 montado com o IPv4 válido do roteador. Pode ser utilizado com pilha dupla para também possuir um endereço IPv4 local. Necessita de um Roteador 6to4 para acesso à rede IPv6 puras e 6to4;
  • Relay 6to4: roteador com suporte a 6to4 e IPv6 de puro, possibilitando assim se comunicar com todos os segmentos (IPv6, 6to4 e IPv4).

Como cenário inicial, tem-se a comunicação de dois clientes 6to4 em redes diferentes, interligados pela Internet (IPv4). Os clientes 6to4, apesar de apresentarem o prefixo 2002:aabb:ccdd:: das redes 6to4, podem ser vistos como estações que possuem IPv6 puras, pois o endereço desses clientes foram obtidos através do RA emitido pelo Roteador 6to4, e os campos “aabb:ccdd” não foram gerados internamente por seus IPv4’s. Para isso, a figura abaixo mostrará o layout desse cenário específico, incluindo, para melhor entendimento, a tabela de roteamento dos equipamentos envolvidos:

Por que usar tunelamento para IPv6 com o IPv4?

Figura 26: Comunicação do túnel 6to4

EQUIPAMENTO

ROTA

Cliente 1

::/0 (default IPv6) por R1

2002:0102:0304:1::/64 através da interface LAN

Roteador 1

::/0 (default IPv6) pelo relay 6to4 e pela interface virtual 6to4 que neste cenário não será utilizado

2002::/16 pela interface virtual 6to4

2002:0102:0304:1/64 rota para a LAN

Cliente 2

::/0 através de R2

2002:0102:0305:1:/64 para a rede local através da interface LAN

Roteador 2

::/0 através do relay 6to4 utilizando a interface virtual 6to4 (Rota não utilizada neste cenário)

2002::/16 através da interface Virtual 6to4

2002:0102:0305:1:/64 para a rede local através da interface LAN

  • O pacote no exemplo acima é originado na rede IPv6 local (com prefixo 6to4) e enviado pela rota padrão para o roteador R1; analisando a tabela de roteamento, nota-se que o pacote é enviado através da rota default IPv6 (::/0) para o roteador R1;
  • O pacote IPv6 é recebido por R1 através da interface LAN; R1 verifica sua tabela de roteamento e descobre que deve enviar o pacote para a sua interface virtual 6to4 (rota para rede 2002::/16); nesta interface, o pacote IPv6 é encapsulado em um pacote IPv4 (protocolo tipo 41) que é endereçado ao roteador R2 (endereço extraído do endereço IPv6 do destinatário do pacote original);
  • O pacote IPv6 encapsulado em IPv4 é recebido por R2, através da sua interface IPV4 ou WAN; como o pacote é do tipo 41, ele é encaminhado à interface virtual 6to4, que o desencapsula; consultando a sua tabela de roteamento, R2 descobre que o pacote é destinado à sua rede local 2002:0102:03:05:1::/64 (6to4), sendo assim, ele encaminha, através da sua rede local, o pacote IPv6 ao computador C2.
  • O pacote retorna percorrendo o mesmo caminho e é analisado de forma semelhante aos processos descritos nos itens a,b e c.

Note que o encapsulamento e desencapsulamento com o protocolo 41 é feito somente nas bordas da rede, ou seja, nos Clientes 6to4 para o Roteador 6to4 ou até mesmo numa comunicação interna (na mesma rede) entre Clientes 6to4, onde os pacotes saem de suas respectivas interfaces como IPv6 puros sem nenhum tipo de encapsulamento, sendo eles de escopo global ou link-local.

Comunicação Cliente 6to4/Roteador 6to4 com Servidor IPv6 Nativo

Neste cenário será descrita a comunicação de um cliente 6to4 / Roteador 6to4 com um servidor IPv6 nativo, considerando a hipótese mais completa que seria a utilização de um de dois relay’s 6to4, um para o tráfego de ida e outro para o tráfego de volta.

A figura e a tabela de roteamento abaixo representam o envio de um pacote IPv6 do cliente C2 para o servidor S2:

Por que usar tunelamento para IPv6 com o IPv4?

Figura 27: Comunicação relay/roteador 6to4 com servidor IPv6

EQUIPAMENTO

ROTA

Relay 1

::/0 rede IPv6 através da interface LAN

2002::/16 através da interface virtual 6to4

Relay 2

::/0 rede IPv6 através da interface LAN

2002::/16 através da interface virtual 6to4

Servidor 2

Rota padrão através de R3

Roteador 3

2002::/16 através do relay RL2 (rota descoberta através da divulgação via BGP)

Roteador 1

::/0 através do relay 6to4 RL1 ou RL2 utilizando a interface virtual 6to4

2002::/16 através da interface virtual 6to4

2002:0102:0304:1/64 para a rede local através da interface LAN

Cliente 1

::/0 através de R1

2002:0102:0304:1::/64 através da interface LAN

Cliente 2

::/0 através de R1

2002:0102:0304:1::/64 através da interface LAN

  • De acordo com a tabela de roteamento acima, o pacote será enviado através de sua rede local IPv6 para o roteador R1, utilizando sua rota default ::/0;
  • O pacote IPv6 é recebido pelo R1 através da interface LAN, que, por sua vez, verifica em sua tabela de roteamento para onde deve enviar, descobre que o pacote deve ser enviado para a interface virtual 6to4 (rota para rede 2002::/16); nesta interface o pacote IPv6 é encapsulado em um pacote IPv4 (protocolo tipo 41) e enviado ao relay RL1 ou RL2 (o relay 6to4 pode ser definido manualmente no roteador 6to4, ou então, automaticamente através da utilização do endereço Anycast 192.88.99.1); neste caso, vamos supor que o pacote tenha sido enviado para o relay RL1;
  • RL1 recebe o pacote 6to4, através da interface IPv4, verifica que o pacote utiliza o protocolo 41 e faz o encaminhamento para a interface virtual; esta, por sua vez, desencapsula o pacote IPv6 e verifica em sua tabela de roteamento que deve enviá-lo pela interface LAN através do roteador R3, que, por sua vez, repassa o pacote IPv6 ao servidor S2;
  • S2 responde o pacote com o envio de outro pacote IPv6 com destino ao Cliente C2, utilizando a sua rota padrão que aponta para o roteador R3; o roteador R3, por sua vez, recebe o pacote e, através da rota recebida via protocolo BGP, ele sabe que deve enviá-lo para o relay mais próximo, sendo o RL2, neste caso;
  • RL2 recebe o pacote IPv6 e verifica que o destino é a rede 6to4 (2002::/16); deste modo, de acordo com tabela de roteamento, ele deve encaminhar o pacote para a interface virtual 6to4, que, por sua vez empacota em um pacote IPv4 (protocolo 41) e envia ao endereço IPv4 que está implícito no endereço IPv6 do destinatário do pacote;
  • O roteador R1 recebe o pacote através de seu endereço IPv4, verifica que o pacote está utilizando o protocolo 41 e o encaminha à interface virtual 6to4; esta o desencapsula e verifica o endereço de destino; de acordo com sua tabela de roteamento e o endereço de destino, o pacote IPv6 é enviado através da sua interface LAN para o Cliente 6to4 C2.

Segurança e Limitações do Túnel 6to4

O tunelamento do tipo 6to4 não suporta NAT, ou seja, o host que tiver uma interface virtual 6to4 (em cima de uma rede IPv4) deverá, obrigatoriamente, possuir um endereço IPv4 válido na Internet, sem qualquer tipo de NAT, nem mesmo o simétrico. Isso gera alguns problemas, pois, para se ter suporte ao 6to4, os equipamentos de borda (que, muitas das vezes, são apenas CPE soho) tem que possuir suporte nativo ao tunelamento 6to4, além de possuir um endereço IPv4 válido, e grande parte desses CPE’s só suportariam essa nova tecnologia em sua interface externa com atualizações de firmware do fabricante.

Em relação à segurança, dois aspectos devem ser observados de forma mais criteriosa, pois eles são responsáveis pela maioria das brechas:

  • Os pacote IPv4 vindos de qualquer outro roteador 6to4 ou relay são desencapsulados, sem exceção a regra, por todos os roteadores 6to4;
  • Hosts que possuem IPv6 puro enviam pacotes sem nenhuma restrição à relays e roteadores 6to4;.
  • A montagem dos endereços IPv6 é realizada com os endereços IPv4 públicos dos clientes 6to4 e isso gera uma certa “falta de controle” em relação aos endereços e à entrada da Internet IPv6 (exemplo: usuário residenciais).

Essas brechas implicam em aberturas na segurança, sendo vulneráveis a ataques do tipo Man-in-the-Middle e DoS , já que a não verificação dos pacotes 6to4 em seus respectivos hosts permite que eles sejam incluídos em um tráfego, sem a garantia de que os endereços existentes nos cabeçalhos IPv4 e IPv6 sejam ou não verdadeiros. Essas brechas, por sua vez, devem ser contornadas com filtragem do protocolo 41 como no ISATAP. Para maiores informações sobre a segurança no túnel 6to4, pode ser consultada a RFC 3964.

Túnel Broker

Descrito na RFC 3053 e sendo um das técnicas mais populares na comunidade IPv6, permite que hosts IPv6/IPv4 isolados em uma rede IPv4, ou até mesmo redes LAN IPv4 inteiras acessem redes e hosts IPv6. O túnel Broker é uma forma de tunelamento simples, semelhante ao 6to4, porém com algumas diferenças que, para os administradores de rede (público-alvo deste trabalho), são de grande importância e que serão discutidas mais adiante.

Primeiramente, é necessário cadastrar-se em um provedor de acesso túnel Broker (utilizamos neste trabalho o Broker Freenet6 encontrado no site www.freenet6.com) para adquirir usuário e senha. Diferentemente do 6to4, é necessário realizar o download de um software cliente, ou script de configuração, que servirá para conectar com o túnel e se autenticar, receber as configurações necessárias e montar o túnel. Os elementos principais utilizados nessa topologia são:

  • “Tunnel Broker”, abreviado “TB”, é o servidor responsável por receber as requisições de túnel dos clientes e suas autenticações; o TB também é responsável por fazer a troca dos endereços IPv6 e IPv4 entre o Tunnel Server e o Broker Client para o fechamento do túnel; pode estar separado, fisicamente, do Tunnel Server ou não;
  • Tunnel Server abreviado, “TS”, é o servidor que fecha o túnel com o Broker Client, fazendo o interfaceamento entre a Internet IPv6 com a Internet IPv4 (onde encapsula os pacotes IPv6); pode estar ou não separado fisicamente, do túnel Broker;
  • Broker Client, abreviado “BC”, é o cliente do Broker que faz a requisição do túnel para acesso à Internet IPv6.

Estes elementos e suas interações estão bem detalhados na figura abaixo:

Por que usar tunelamento para IPv6 com o IPv4?

Figura 28: Comunicação túnel Broker

Apesar de diversos cenários serem possíveis, como por exemplo, um único computador pode acessar ao serviço de tunelamento do Broker (um assinante residencial de Internet), o contexto utilizado, aqui neste trabalho, engloba os diversos cenários usuais. Estes cenários também foram utilizados para os testes no laboratório.

A figura abaixo representa o processo de inicialização do Broker e sua descrição detalhada se encontra a seguir:

Por que usar tunelamento para IPv6 com o IPv4?

Figura 29: Inicialização do túnel Broker

  • O roteador de borda do cliente, que possui o autenticador do Broker (BC), envia um pacote por sua rota IPv4 (Internet IPv4), autenticando-se e requisitando serviço de túnel para o Broker (TB);
  • O TB envia um pacote ao Tunnel Server (TS), indicando o endereço IPv4 do BC (outra ponta do túnel) e o endereço IPv6 que o BC utilizará para ser adicionado em sua tabela de roteamento;
  • O TB envia um pacote para BC, indicando o endereço IPv4 e IPv6 do TS para que se feche o túnel entre os dois pela Internet IPv4, utilizando o protocolo 41; o BC utiliza esses parâmetros recebidos para também alterar sua tabela de roteamento;
  • O túnel é, então, estabelecido entre o BC e o TS, que utilizaram o protocolo 41 para encapsularem os pacotes IPv6 ao serem enviados eles pela Internet IPv4; o protocolo é utilizado tanto para o TS quanto para o BC;
  • A partir deste ponto as estações da LAN podem utilizar o prefixo (obtido por RA do BC) e auto-configurar seus endereços IPv6 de escopo global para que possam se comunicar com o servidor WEB IPv6 como se estivessem conectados ao backbone IPv6;
  • Toda a comunicação interna em IPv6 da LAN continua a ser realizada normalmente pelo endereço “FE80::/10” de escopo link-local possibilitando seu uso juntamente com o cenário de pilha-dupla (IPv4/IPv6) e todos os recursos e serviços IPv6 disponíveis.

A conexão do túnel pode ser estabelecida através de NAT, diferentemente do 6to4, já que a conexão pode ser totalmente configurada, e podem ser utilizados pacotes UDP ao invés de pacotes TCP.

No laboratório o túnel Broker foi utilizado de forma concomitante com a dual-stack nos hosts internos de uma LAN, pois o endereço obtido por RA pelos hosts que utilizam o dual-stack (IPv4 nativo/IPv6 nativo) provém de pacotes RA’s gerados pelo roteador de borda com endereço fornecido pelo túnel Broker, e é interpretado pelos hosts internos como sendo o prefixo de link-global IPv6 nativo.

O tunelamento via Broker foi o tunelamento utilizado neste trabalho como link de saída IPv6 válido no laboratório, assim como seu prefixo através do RA gerado pelo roteador de borda (cliente Broker), foi utilizado também pelas estações para a geração de seus endereços individuais (estações que possuem a pilha dupla).

Segurança Túnel Broker

Para a análise das falhas de segurança do túnel Broker devem ser tratadas duas áreas em separado, que, juntas, fecham o serviço de túnel. Essas áreas possuem dois elementos distintos e a segurança deve ser analisada na interação entre eles:

  • Interação Túnel Broker – DNS: as falhas são tratadas na seção DNSv6 em relação à atualização dinâmica do DNS e não serão abordadas aqui.
  • Interação Cliente – Túnel Broker: uma das falhas possíveis é o problema de autenticação (usuário e senha) do cliente para ter acesso ao Broker. Essa autenticação pode ser mais bem assegurada utilizando-se de recursos como SSL para autenticações HTTP ou preferencialmente, a utilização de um AAA (Radius) reforçando, assim, o controle de acesso.

Outro problema possível é a ocorrência de um ataque do tipo DDoS que ocorreria se um cliente malicioso abrisse indefinidamente sessões de túnel com o Broker, causando assim a indisponibilidade do serviço. Esta situação é facilmente resolvida limitando a quantidade de túneis que um determinado usuário pode abrir ao mesmo tempo.

Outra situação é quando o usuário de uma conexão discada é desconectado sem mandar o encerramento da conexão para o Broker. O tráfego IPv6 continua sendo mandado pelo Broker para o IPv4 do cliente e, no caso, esse IP pode não ser mais do mesmo cliente (foi remanejado para outro assinante dial-up, por exemplo). Em suma, o Broker continua enviando o tráfego IPv6 para um cliente qualquer, que pode aproveitar isso de forma maliciosa. A solução para esta situação é a implementação de controle do tipo “keep-alive” pelo cliente, de forma a manter o Broker informado de que o túnel ainda está no ativo.

Outro problema, mas isso já faz parte mais especificamente do sistema operacional do cliente, é a utilização de scripts fornecidos pelo Broker para sua inicialização, alteração de DNS e tabela de roteamento, autenticação e manutenção do túnel (keep-alive). Esses scripts geralmente são executados com permissão de administrador ou superusuário, o que pode abrir falhas de segurança no sistema do cliente.

Apesar de todos os problemas discutidos, ainda assim é a melhor alternativa para os administradores por algumas razões:

  • Diferentemente do 6to4, ele pode requerer (geralmente requer e isso é bom) autenticação, pois a falta da mesma pode gerar certos tipos de “abuso”;
  • A inicialização e montagem do túnel pode ser automática ou manual, diferentemente da 6to4 que é automática;
  • Facilidade de gerenciamento dos parâmetros em comparação com outras tecnologias de túnel (ideal para redes gerenciadas);
  • Possui possibilidade de uso tanto com NAT como sem ele (IPv4 público).

Porém, existe uma deficiência em relação ao volume de tráfego, pois o túnel Server concentra toda entrada de tráfego para o mundo da Internet IPv6 por ele, diferentemente das outras tecnologias de túneis disponíveis. Não quer dizer que essa é uma característica ruim, porém em alguns casos, Brasil como exemplo, onde não se possuem localmente os TS para se acessar uma página em IPv6 dessa localidade, o tráfego deverá percorrer todo o caminho até o Broker, que pode estar do outro lado do planeta, e retornar até o site em questão, e sua resposta deverá fazer o mesmo caminho de volta, podendo gerar um atraso.

Túnel Teredo

Na brecha deixada pelo tunelamento 6to4 e pelo túnel Broker tem-se essa nova tecnologia de túnel, chamado Teredo, que funciona através do protocolo UDP e permite o seu funcionamento através de NAT e sem autenticação. Essa técnica não é eficiente, pois sua complexidade exige muito processamento, mas, é uma das únicas formas de conexão para clientes que estão atrás de NAT, seja ele do tipo Cone Full ou Cone restrito (não funciona através de NAT do tipo Simétrico) e desejam se conectar a Internet IPv6 independente do administrador de Rede e sem autenticação com um túnel Broker.

Apesar de essa técnica ser tratada neste trabalho como uma brecha de segurança para o administrador de rede e uma migração segura (foco o trabalho), ela será explicada, pois terá uma grande importância para a migração IPv4/IPv6 no âmbito do uso residencial, já que, neste segmento, não existe a figura do administrador de rede e a segurança fica a cargo do próprio usuário. O grande empecilho, no entanto, é que os servidores Teredo, são definidos para descartar pacotes provenientes de NAT-Simétricos. Na RFC 4380 é mencionada a questão. “1) Clients located behind a symmetric NAT will only be able to use Teredo if they can somehow program the NAT and reserve a Teredo service port for each client, for example, using the DMZ functions of the NAT. This is obviously an onerous requirement, at odds with the design goal of an automatic solution. However, measurement campaigns and studies of documentations have shown that, at least in simple "unmanaged" networks, symmetric NATs are a small minority; moreover,it seems that new NAT models or firmware upgrades avoid the "symmetric" design.” “…2) If the UDP packet is not a Teredo bubble or an ICMPv6 message, it SHOULD be discarded… “

Apesar de ter sido citado no parágrafo acima que a “minoria dos equipamentos” fazem o NAT do tipo simétrico, as marcas de CPE’s aqui do Brasil (D-Link, Linksys, Netgear, NEC, entre outros) fazem esse tipo de NAT, o que impossibilita a comunicação para a Internet IPv6 através do tunelamento Teredo, salvo a orientação colocada na RFC 4380 para a utilização da função “DMZ”, que alguns CPE’s possuem. Outro CPE como, por exemplo, no caso da marca D-Link, possui uma opção referente ao NAT Simétrico, mas não de forma explícita. Neste caso em específico (D-link modelo DI-524), deve-se utilizar a opção para se desabilitar o NAT Simétrico e utilizar o NAT do tipo Cone-Full, habilitando suporte à opção “XBOX Suporte” na aba tools na opção misc. Em suma, para obter suporte ao NAT Cone-Full, o CPE deve possuir esse suporte nativo no firmware fornecido pelo fabricante.

Outra observação citada acima é a forma como os servidores Teredo devem agir, caso os pacotes não sejam do tipo ICMP ou participantes do túnel Teredo (como os do tipo NAT-Simetrico), sendo requisitado que os servidores realizem os descartes. Essas medidas foram amplamente discutidas em sites e em fóruns, inclusive do próprio IETF. O NAT-Simetrico, no início do desenvolvimento do Túnel Teredo era até permitido em seu funcionamento, sendo verificado mais tarde que ele causava um aumento no processamento do Servidor Teredo, podendo causar indisponibilidade ou lentidão em seu serviço. Assim, o suporte ao NAT-Simetrico foi retirado, pois se imaginava um cenário onde poucos servidores Teredo existiriam para suprir os túneis para todos os clientes Teredo da Internet. Exemplo é a discussão no IETF: “… As Pekka pointed out, the traversal of symmetric NAT could easily be added to Teredo. It was in fact supported in the early drafts. It was removed later in an effort to avoid overload on the servers, in a deployment scenario where there are just a few Teredo servers for the entire Internet

Uma nova implementação de tunelamento para ser utilizada junto com os diversos tipos de NAT está sendo desenvolvida pela IETF, mas existe ainda apenas como draft (draft-liumin-v6ops-silkroad-02.txt) e se chama SilkRoad.

Para a técnica de tunelamento Teredo, o túnel é fechado diretamente da máquina do cliente, ou seja, sem a necessidade de um túnel-gateway, sendo que a comunicação existe, basicamente, entre o cliente, relay e servidor Teredo. Para tanto, o NAT-gateway não pode causar “interferência” na comunicação, e isso é obtido na figura abaixo:

Por que usar tunelamento para IPv6 com o IPv4?

Figura 30: Configuração Teredo

  • Como início do processo, o cliente Teredo precisa determinar que tipo de NAT o gateway está utilizando para dar o acesso à Internet IPv4 e, então, o cliente envia uma mensagem de RS com destino ao IP primário (IPv4) do servidor Teredo, que necessita possuir dois endereços IPv4 públicos (primário e secundário). A resposta ao RS do cliente é um RA, mas, como o pacote RS do cliente veio com a flag do NAT tipo Cone ativado (atribuído pelo próprio cliente), o endereço de origem deste pacote RA gerado como resposta pelo servidor Teredo é com seu endereço IPv4 secundário. Dessa forma, verificando esse endereço secundário no pacote RA, o cliente consegue determinar que o tipo de NAT atrás do qual ele se encontra é do tipo Cone Full
  • Caso o pacote RA, enviado pelo servidor Teredo, não tiver sido recebido, o cliente Teredo envia outro pacote RS sem a marcação da flag “Cone” no pacote. O servidor Teredo, então, este novo RS e verifica que a flag está, dessa vez, desmarcada. Em consequência, ele responde com um pacote RA, mas com o endereço de origem como sendo seu endereço IPv4 primário. O cliente, recebendo esse novo pacote determina que ele esteja atrás de um NAT do tipo Cone Restrito;
  • O Cliente, então, faz o último teste, que é a verificação de que ele não está atrás de um NAT do tipo simétrico, pois o mesmo é incompatível com o tunelamento Teredo. Para tanto, o cliente manda novamente para o servidor Teredo um pacote RS, mas como destino o endereço IPv4 secundário do servidor Teredo. O servidor, por sua vez, responde à requisição com um pacote RA e, no momento em que o cliente recebe este pacote, ele verifica os campos de endereço e porta UDP de origem e compara-os com o pacote RA recebido com o endereço primário do servidor Teredo. Caso os campos sejam diferentes nas mensagens o cliente entende que está atrás de um NAT do tipo Simétrico e que o tunelamento Teredo não tem possibilidade de ser utilizado. O mapeamento das portas UDP no NAT é mantido por pacotes chamados de “bubbles”, enviados pelo cliente para o servidor Teredo, que envia uma resposta (com a periodicidade padrão de 30s) de forma a manter o mapeamento feito nas portas UDP do NAT-Gateway por todo o tempo de conexão.

O endereço Teredo é formado por 5 campos distintos, e seu prefixo definido pela IANA é 2001:0000. O primeiro campo é o próprio prefixo 2001:0000; o segundo campo é o endereço IPv4 primário do servidor Teredo que enviou o pacote de RA para o cliente; o terceiro é um campo de 32 bits utilizado para “atribuição de flags”; mas somente o primeiro bit é utilizado e identifica o tipo de NAT que o cliente se encontra (1 para NAT do tipo Cone-Full); o resto dos bits desse campo ainda não possui definição, o que ocorrerá no futuro; no quarto campo aparece a porta UDP de saída do NAT, mascaradas por inversão dos bits (mascaramento necessário para evitar a substituição que alguns NAT’s fazem das mesmas pelas portas públicas); e o quinto e último campo é o endereço público do NAT-Gateway, também mascarado por inversão dos bits para que o próprio não encontre endereços públicos ou privados e os altere.

Referentes à utilização do túnel Teredo serão considerados que a comunicação é feita entre o cliente Teredo e um host IPv6 nativo. Também será considerado que o host IPv6 nativo pode iniciar uma conexão com o cliente Teredo e serão variados os dois tipos de NAT que o cliente pode estar atrás: o tipo restrito e o tipo cone. O Cenário correspondente ao NAT do tipo Cone estará implícito no cenário do NAT do tipo restrito, pois o mesmo se dá pelo acréscimo de alguns passos, além do processo de comunicação do NAT tipo cone, tornando-se uma forma mais “completa” e geral.

Referente ao NAT do tipo restrito, com o cliente Teredo iniciando uma conexão com um host IPv6 nativo, temos os seguintes passos:

Por que usar tunelamento para IPv6 com o IPv4?

Figura 31: Conexão Teredo com NAT do tipo restrito

    • Depois de iniciado todo o procedimento de determinação do tipo de NAT utilizado pelo NAT-Gateway de sua rede, o cliente precisa descobrir o endereço IPv4 do relay Teredo; para obter isso o Cliente envia uma mensagem ICMPv6, através do servidor Teredo, para o host IPv6 nativo;
    • O host IPv6 nativo manda um pacote de reposta ICMPv6 (reply) ao cliente Teredo que havia feito a requisição (request), enviando o pacote pelo relay Teredo mais próximo;
    • Aqui inicia a diferença entre o NAT Restrito e o NAT tipo Cone; para o tipo Cone basta, simplesmente, ir diretamente ao passo 8 deste passo-a-passo; para o tipo restrito, e através do pacote ICMPv6 recebido, o relay verifica que o cliente Teredo está atrás de um NAT do tipo restrito e que, se tentar uma conexão direta com ele através do NAT-Gateway, seus pacotes serão descartados devido a inexistência de uma mapeamento de portas referente ao tráfego Teredo no NAT-Gateway; o relay guarda o ICMPv6 (reply) em sua fila para uma comparação posterior e, então, envia um pacote “bubble”, tendo como destino o cliente Teredo, através do servidor Teredo (que já possui uma conexão aberta para o cliente Teredo pelo NAT);
    • De posse do pacote “bubble”, o servidor Teredo o encaminha para o cliente Teredo, mas trocando o endereço e porta de origem do pacote “bubble”, colocando o endereço e a porta do relay Teredo no campo origem do pacote; com isso o pacote atravessa o NAT-Gateway e chega ao cliente Teredo;
    • De posse do pacote, o cliente Teredo envia para o endereço de origem e porta (relay Teredo) um pacote “bubble” para o relay Teredo para que o NAT-Gateway de sua rede abra um mapeamento de porta para o túnel Teredo no NAT;
    • Ao receber o pacote “bubble” enviado pelo cliente Teredo, o relay Teredo descobre que ele pode corresponder, agora diretamente, com o cliente Teredo através do NAT Restrito, com base no endereço obtido no pacote “bubble” recebido do Cliente Teredo e comparando-o com o pacote ICMPv6 que ele havia guardado na fila;
    • O relay Teredo manda, então, o pacote ICMPv6 que ele havia guardado para o Cliente Teredo, demonstrando para o cliente que o túnel Teredo com a Internet IPv6 já está operacional pelo NAT e que o host IPv6 nativo já é alcançável;
    • Depois de recebido o pacote, o Cliente Teredo inicia e sua comunicação diretamente com o host IPv6 nativo, utilizando sempre o relay Teredo como gateway entre o túnel Teredo e a internet IPv6.

Segurança do túnel Teredo

O principal problema de segurança apresentado pelos túneis Teredo é o fato do tráfego poder passar despercebido pelos filtros e firewalls se os mesmos não estiverem preparados para interpretá-lo. Sendo assim, os computadores e a rede interna ficam totalmente expostos aos ataques vindos da Internet IPv6. Para resolver este problema, antes de implementar o Teredo, é necessário que se faça uma revisão nas regras dos filtros e firewalls da rede, ou, ao menos, nos computadores que utilizarão esta técnica. Além deste problema, ainda é possível observar os seguintes:

  • O cliente Teredo divulga, na rede, a porta aberta por ele no NAT e o tipo de NAT que ele está utilizando, possibilitando assim um ataque através dela;
  • A quantidade de endereços Teredo é bem menor que os de IPv6 nativos, facilitando assim a localização de computadores vulneráveis através de address scanning;
  • Um ataque por negação de serviço é fácil de ser aplicado tanto no cliente quanto no relay;
  • Devido ao método de escolha do relay pelo host de destino, pode se criar um relay falso e utilizá-lo para coletar a comunicação deste host com os seus clientes (ataques Man-in-the-Middle).

Esses tipos de ataques são difíceis de serem impedidos, caso o invasor não tenha atitudes diferentes das permitidas no NAT. Entretanto, é possível atenuar este problema com atitudes como: implementar servidores Teredo redundantes, utilizados em caso de "queda" por negação de serviço; utilizar firewalls e filtros de pacotes; e utilizar os serviços de segurança do IPv6, como IKE, AH, ou ESP.

O Teredo já vem instalado e ativo por padrão em alguns OS como por exemplo, o Windows Vista e o 2008 Server, ao contrário do Linux e do FreeBSD.

Problemas com Túneis

Alguns problemas de comunicação devem ser tratados pelo host de entrada do túnel. É preciso determinar quando fragmentar o pacote ou quando reportar ao host de origem um erro ICMPv6 "packet too big", além de traduzir erros ICMPv4, reportados pelos roteadores ao longo do caminho do túnel, em erros ICMPv6 e transmiti-los de volta ao host de origem. O primeiro problema, remete à implementação de Static Tunnel MTU ou Dynamic Tunnel MTU, informações podem ser obtidas através da RFC 4213. O segundo depende do modo como o roteador devolve a mensagem de erro, visto que roteadores mais antigos retornam apenas 8 bytes de dados, além do cabeçalho IPv4, o que não é suficiente para incluir o campo de endereço do cabeçalho IPv6. Entretanto, roteadores mais novos, são capazes de retornar além do cabeçalho IPv4, os dados do cabeçalho IPv6, permitindo ao host encapsulador extrair o pacote IPv6 encapsulado, e usá-lo para gerar uma mensagem ICMPv6, direcionando-a para o host IPv6 de origem.

Interessante ressaltar, que as técnicas de tunelamento são tratadas pela camada IPv6 como um modelo " single-hop ”, isto é, todo o trajeto entre origem e destino do pacote IPv6 é visto como um único salto. Isto ocorre porque o campo hop Limit do cabeçalho IPv6 só é decrementado no encaminhamento do pacote e, assim, os hosts de entrada e saída do túnel não o decrementam.

Pode usar IPv4 e IPv6 juntos?

Para redes corporativas que já utilizam NAT isso não é um impendimento: o IPv6 nativo pode ser utilizado em conjunto com o IPv4 compartilhado.

Qual a importância do IPv6 em relação ao IPv4?

A disponibilidade de um número quase ilimitado de endereços IP é um dos maiores benefícios da implementação de redes IPv6. Comparado ao IPv4, o IPv6 aumenta o número de bits do endereço por um fator 4. Desta forma, o endereço que na versão 4 era de 32 bits, passa a ter 128 bits.

Qual a principal razão da transição de IPv4 para IPv6?

O esgotamento do IPv4 e a necessidade de mais endereços na Internet. O principal motivo para a implantação do IPv6 na Internet é a necessidade de mais endereços, porque a disponibilidade de endereços livres IPv4 terminou.

Qual é a técnica de coexistência e transição do IPv6 para IPv4?

A forma mais simples de introduzir IPv6 numa rede passa pela utilização de dual-stack, o que permite que as aplicações IPv4 e IPv6 coexistam na mesma rede, sendo que a comunicação IPv4 é efetuada pela pilha IPv4 e a IPv6 pela pilha IPv6.