Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
br
DlteC do Brasil®
www.dltec.com.br
info@dltec.com.br | 41 3045.7810
DLTEC DO
BRASIL
APOSTILA/E-BOOK DO CURSO IPV6
Sobre o E-book/Apostila
O presente material traz conteúdo teórico do curso Online, porém temos que
deixar claro que não é um curso e sim uma adaptação do nosso material
online para e-book/apostila. Portanto recursos como exercícios, simulados,
tutoria (tira dúvidas com professores) e vídeo aulas não fazem parte desse e-
book, pois são exclusivos para alunos devidamente matriculados em nosso site
oficial.
Direitos Autorais
Aviso Importante!
Copyright © 2015.
Indice
Capítulo 01 - Introdução
Objetivos do Capítulo
Olá,
Capítulo 02 - O Protocolo
IPv6
Nesse primeiro capítulo do
curso vamos estudar em Objetivos do Capítulo
detalhe o funcionamento do
Ao final desse capítulo você deverá ter
IP versão 6 para entender estudado e compreendido os seguintes
as principais diferenças com assuntos:
a versão anterior (IPv4),
assim como novas Diferença entre o IPv6 e IPv4
funcionalidades que foram Principais características do IPv6
introduzidas nessa nova Principais recursos do IPv6
Técnicas de convivência e transição
versão do protocolo IP.
entre IPv4 e IPv6
IPv4: 4,294,967,296
IPv6: 340,282,366,920,938,463,463,374,607,431,768,211,456
Outras diferenças importantes são a introdução dos endereços de anycast e a retirada dos
endereços de broadcast. Isso mesmo, o grande vilão do IPv4, o broadcast, no IPv6 não existe
mais. Agora no IPv6 temos endereços de unicast, multicast e anycast. Caso seja necessário
enviar uma mensagem a todos os hosts pode-se utilizar um pacote de multicast para o
endereço de link-local de destino chamado de “all nodes address” (FF02::1).
Outro ponto importante é que no IPv6 ainda temos a parte de rede, subrede e host, como no
IPv4, mas não utilizamos mais o termo máscara e sim somente prefixo. O prefixo do IPv6
tem a mesma funcionalidade do prefixo do CIDR e conta a quantidade de bits de rede ou
subrede que a máscara tem, sendo que os bits 1 continuam indicando a porção de redes e os
bits zero os hosts. No exemplo dado na tabela anterior temos a rede 3FFE:F200:0234::/48 e o
/48 representa o prefixo dessa rede, ou seja, os primeiros 48 bits do endereço são bits de rede
e os demais 80 bits (128-48) são de host. Isso mesmo, temos 80 bits para hosts nesse
exemplo.
Aqui vem mais uma diferença do IPv6, pois no IPv4 o cabeçalho base continha todas as
informações principais e opcionais (mesmo que não fossem utilizadas). Já o IPv6 trata essas
informações adicionais como cabeçalhos opcionais chamados de “cabeçalhos de extensão”.
Portanto, o cabeçalho do IPv6 além de ser mais simples que o do IPv4, também trata de
questões como QoS e segurança de maneira nativa, ou seja, dentro do próprio cabeçalho sem a
necessidade de implementações e recursos adicionais como era necessário para o IPv4.
Veja a figura a seguir com a representação de cada um dos três tipos de comunicação.
Para visualizar a diferença e aplicação do uso do unicast para multicast considere a figura
abaixo, onde você tem um dispositivo de vídeo que irá transmitir o sinal para três hosts na
rede.
Caso a transmissão seja feita utilizando unicast terão que ser criados três fluxos, um para cada
host de destino, ocupando mais banda, pois a mesma informação é triplicada. Já no caso do
uso do multicast o transmissor envia as informações para um único endereço que está
configurado em todos os hosts que participam do mesmo “grupo de multicast” que ele, portanto
a informação é transmitida utilizando apenas um fluxo até os hosts.
Por exemplo, você tem três servidores DNS e configura o mesmo IP de anycast nos três, porém
cada um está conectado por caminhos diferentes (roteadores distintos ou larguras de bandas
diferentes). Quando o computador for realizar uma consulta ao DNS ele enviará o pacote para o
IP de anycast (destino) configurado em sua placa de rede, porém quando a rede receber o
pacote com o endereço de destino sendo um anycast os roteadores encaminharão esse pacote
para o melhor destino em relação à origem. Ou seja, mesmo tendo três servidores com o
mesmo IP de Anycast o que tiver melhor métrica em relação ao protocolo de roteamento
utilizado é o que receberá a solicitação.
Por exemplo, você está utilizando OSPFv3, o qual utiliza um custo como métrica para encontrar
o melhor caminho, se um dos servidores tem custo 25 (Server A), o segundo custo 40 (Server
B) e o terceiro custo 20 (Server C) qual dos três irá receber a consulta enviada pelo cliente?
Com certeza será o que possui menor custo (menor métrica), portanto o Server C receberá os
pacotes referentes à consulta de nomes e deverá responder ao cliente.
Duas dicas importantes, o IP de anycast não é utilizado como origem em um pacote IPv6,
somente como destino e precisa estar anunciado entre os roteadores (através do
protocolo de roteamento) para que possa ser encaminhado conforme exemplo anterior.
Portanto não é só configurar um IP, o uso do anycast exige configurações de roteamento na
rede.
Como já visto em capítulos anteriores, o endereço IPv6 possui 128 bits e é escrito em
hexadecimal, diferente do IPv4 que eram 32 bits (4 conjuntos de 8 bits escritos em decimal
pontuado). Portanto, agora cada algarismo de um IPv6 pode ter os números de 0 a 9, assim
como as letras de A a F, totalizando 16 algarismos, por isso o nome hexadecimal. Veja quanto
vale de A a F em decimal (você pode escrever as letras do hexadecimal tanto em maiúsculo
como em minúsculo, tanto faz!):
Como cada algarismo em hexadecimal tem 4 bits, em 128 bits temos um total de 32 algarismos
hexadecimais divididos de 4 em 4, ou seja, oito conjuntos de quatro algarismos em
hexadecimal separados por dois pontos “:” (não mais pelo ponto “.” como era no IPv4). Um
exemplo de IPv6 é “2000:1234:ade4:ffa0:2234:0000:0000:0012”.
Existem ainda três contrações (reduções) que podemos fazer nos endereços IPv6:
A única recomendação é que não haja ambiguidade para a terceira contração. Para entender
vamos ver um exemplo com o IP 2000:1234:ade4:0000:0000:2234:0000:12. Se escrevermos
ele com a contração 2000:1234:ade4::2234::12 nós sabemos, por visualizar o IP que deu
origem, que existem dois conjuntos de 4 zeros à esquerda do 2234 e um só conjunto à direita.
No entanto, como um dispositivo (roteador ou computador) irá distinguir como ele deve
completar isso na prática? Pois se pegarmos apenas o IP contraído 2000:1234:ade4::2234::12
ele pode ser tanto 2000:1234:ade4:0000:2234:0000:0000:12 como
2000:1234:ade4:0000:0000:2234:0000:12.
Logo, essa notação é inválida, pois para o dispositivo ela é ambígua uma vez que ele não vai
saber como preencher os espaços com os zeros. Portando, o IP deveria ser escrito como
“2000:1234:ade4:0:0:2234::12” ou “2000:1234:ade4::2234:0:12”.
Um endereço IPv6 pode ser dividido em um Prefixo Global (Global Prefix), Subrede (subnet ID)
e endereço da Interface (Interface ID). O prefixo global normalmente é um /32, já o prefixo de
subrede pode ser /48 (usuários corporativos) ou /56 a /64 (para usuários residenciais)
dependendo do uso e recomendação de cada país. Já o endereço da interface utiliza os bits
restantes do prefixo, ou seja, 128 bits menos o prefixo de subrede.
Vamos a um exemplo utilizando a rede 2001:db:3000:1::/64, onde sabemos que temos 128
bits totais no endereço, porém 64 bits são utilizados para identificar a sub-rede, portanto
termos:
Prefixo 2001:db:3000:1::/64
Prefixo global 2001:db::/32
ID da sub-rede 3000:1
ID de host: temos 64 bits (ou seja, 2^64= 18.446.744.073.709.551.616 endereços IP)
Da mesma maneira que mostramos no IPv4 com o CIDR e a notação em prefixos, no IPv6
podemos fazer a agregação de várias subredes de maneira hierárquica para reduzir a
quantidade de redes anunciadas pelos protocolos de roteamento, além de continuar valendo o
conceito de subrede e a utilização de diferentes prefixos conforme a necessidade de cada rede
IPv6, similar ao VLSM.
Com relação a representação dos endereços IPv6 em URLs (Uniform Resource Locators), eles
agora passam a ser representados entre colchetes. Deste modo, não haverá ambiguidades
caso seja necessário indicar o número de uma porta juntamente com a URL, por exemplo:
http://[2001:db:3000:1::22]/index.html
http://[2001:db:3000:1::22]:8080
Portanto, vamos agora analisar a divisão dos endereços IPv6 e algumas faixas dedicadas a uso
especial.
FEC0::/10 Site-local unicast, porém sua utilização foi substituída pelos endereços
ULA e ele caiu em desuso.
FF00::/8 Faixa de endereços de multicast. Por exemplo, o IP FF02::9 é o endereço
de multicast utilizado pelo protocolo de roteamento RIPng enviar seus anúncios de
roteamento.
Para os endereços de Unicast (os roteáveis na Internet) está reservada para atribuição de
endereços a faixa 2000::/3, ou seja, dos endereços de 2000:: a 3fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff.
Isso representa 13% do total de endereços possíveis com IPv6. O nome dado aos endereços
de Unicast é “Global Unicast” ou endereço global unicast.
A faixa 2800::/12 foi destinada à LACNIC para alocação na América Latina. No Brasil o NIC.br
possui um /16 que faz parte deste /12 para distribuir entre as instituições e ISPs do nosso país.
Os endereços de Anycast são criados a partir da faixa de endereços unicast e não há diferenças
de notação entre eles. O que os diferencia é a configuração realizada nos roteadores e um
anúncio explícito de que aquele IP é de Anycast. Dessa maneira vai haver o roteamento e troca
de informações sobre esses endereços de Anycast entre os roteadores, além disso, evita que os
roteadores interpretem esse endereço como um IP duplicado e gere erros, pois o Anycast é um
mesmo IP de Unicast configurado em vários hosts!
Sabemos que um endereço MAC tem 48 bits e já é escrito em Hexadecimal, portanto para
completar os 64 bits faltam apenas 16 bits, ou seja, quatro algarismos em Hexadecimal. Isto é
feito com a inserção no meio do endereço MAC dos algarismos 0xfffe (FF-FE). Além disso, o
sétimo bit mais a esquerda (chamado de bit U/L – Universal/Local) do endereço MAC deve ser
invertido, isto é, se for 1 será alterado para 0 e se for 0 será alterado para 1.
Veja a figura a seguir, no meio do endereço MAC foi inserida a palavra em hexadecimal 0xfffe e
como os dois primeiros algarismos do MAC são 00, que em binário é 00000000, se trocarmos o
sétimo bit ele fica 00000010 ou 02 em hexadecimal (lembre que a cada 4 bits temos um
algarismo em hexadecimal).
Lembre-se que se recebermos um prefixo /64 podemos perfeitamente utilizar o EUI-64 para
formar o Interface ID e assim termos o endereço global do computador (endereço de Internet),
além do link local. Esse processo se chama autoconfiguração do IPv6. Por exemplo, um
computador que tem como endereço MAC 001e.130b.1aee e recebe um prefixo 2001::/64 do
seu roteador terá os seguintes endereços de Link Local e Global Unicast:
FE80::21E:13FF:FE0B:1AEE
2001::21E:13FF:FE0B:1AEE -> Prefixo 2001::/64
Como chegamos nesses valores acima? Note que o MAC é 001e.130b.1aee, portanto vamos
achar o sétimo bit e fazer a inversão: 00 -> 00000000 -> 00000010 -> 02. Agora vamos
inserir o FF-FE no meio e formar o EUI 64: 021e:13ff:fe0b:1aee.
Além disso, com mecanismos como a autoconfiguração, o DHCPv6 pode funcionar de maneiras
diferentes.
Outro detalhe é que algumas funcionalidades que eram externas ao cabeçalho do IPv4 foram
trazidas para dentro do cabeçalho do IPv6, como a parte de segurança e criptografia.
6.1 ICMPv6
O protocolo ICMPv6, assim como já era o ICMPv4, é responsável pelas funções de relatar erros
no processamento de pacotes, realizar diagnósticos e informar características da rede. O
cabeçalho do ICMPv6 vem logo após o cabeçalho principal do IPv6 ou de algum cabeçalho de
extensão (quando existir) com o campo de próximo cabeçalho (Next Header) indicando o
código 58. Veja o cabeçalho do ICMPv6 na figura a seguir.
O ICMPv6 tem mais mensagens que a versão anterior, pois além das mensagens padrões ele
incorpora funções de outros protocolos como o ARP/RARP e IGMP (Internet Group Management
Protocol). Tais protocolos são importantes para:
Existem ainda as mensagens de informação, as quais são utilizadas pelos protocolos que
estudaremos a seguir.
Cód
Mensagem ICMP Função
ICMP
Mensagens utilizadas para que hosts requisitem aos
roteadores as mensagens de Router Advertisements
133 Router Solicitation
proativamente, ou seja, sem esperar um anúncio por parte
do roteador.
Mensagens enviadas periodicamente pelos roteadores ou em
resposta a uma Router Solicitation enviada por um host. São
134 Router Adivertisement
utilizadas pelos roteadores para anunciar sua presença em
uma rede local ou na Internet.
Mensagem de multicast enviada por um nó para determinar
135 Neighbor Solicitation o endereço MAC e a acessibilidade de um vizinho. Utilizada
também para detectar a existência de endereços duplicados.
Mensagem enviada como resposta a um Neighbor
136 Neighbor Advertisement Solicitation. Pode também ser enviada para anunciar a
mudança de algum endereço MAC dentro do enlace.
Mensagem utilizada por roteadores para informar ao host
137 Redirect Message que existe um roteador mais indicado para se alcançar um
destino, ou seja, um redirecionamento.
Já no IPv6 o processo é realizado através da troca de mensagens ICMP e funciona com um host
enviando uma mensagem Neighbor Solicitation informando no campo de dados seu
endereço MAC e também solicitando o endereço MAC do vizinho. Ao receber a
mensagem, o vizinho a responde enviando uma mensagem Neighbor Advertisement
informando seu endereço MAC. Após essa troca de mensagens o computador de origem tem
condições de iniciar a troca de pacotes com o computador de destino. Veja a figura.
Mais para frente você aprenderá mais sobre a autoconfiguração e o DHCPv6, os quais utilizam o
processo de descoberta de roteadores no seu funcionamento.
Também é possível que o host receba uma mensagem de Router Advertisement sem ter
enviado a solicitação (Router Solicitation), isso porque os roteadores fazem o anúncio de suas
redes periodicamente, de maneira proativa.
Neighbor Cache: Mantém uma lista de vizinhos locais para os quais foi enviado tráfego
recentemente. Essas listas contém o endereço IP, o endereço MAC, um flag que
identifica se esse IP é um Host ou um Router, se há pacotes na fila para serem enviados
a esse destino, a sua acessibilidade e a próxima vez que um evento de detecção de
vizinhos está agendado. É semelhante à tabela ARP do IPv4.
Destination Cache: Mantém informações sobre destinos, locais e/ou remotos, para os
quais foi enviado tráfego recentemente. As entradas dessa tabela são atualizadas com
informações recebidas por mensagens "Redirect". A tabela Neighbor Cache pode ser
considerada como um subconjunto dessa tabela.
Assim como na versão 4 do protocolo IP, a primeira etapa para que um host tenha acesso à
rede é a atribuição de um endereço de host à sua Interface. No IPv4 tínhamos a possibilidade
de configurar um IP estaticamente (manual) ou através de um servidor DHCP.
Assim como para o IPv4, o IPv6 vem configurado para pegar os dados automaticamente via
DHCP ou autoconfiguração no Windows 7, porém você pode clicar na opção de “Usar o seguinte
endereço IPv6” e definir manualmente o endereço, prefixo, gateway padrão e servidor DNS.
Para testar a configuração podemos utilizar o ping para o IP do gateway configurado, veja a
saída do comando na tela da figura a seguir (a esquerda). Na direita, você tem a tela do acesso
via HTTPS ao roteador com IP 2001::1, assim testamos a conectividade das camadas 2 e 3 com
o ping e até a camada 7 com o acesso HTTPS.
Para verificar as configurações você pode utilizar o comando “ipconfig /all” ou “netsh int ipv6 sh
addr”, conforme mostrado abaixo.
O prefixo será descoberto por meio da comunicação entre o host com algum roteador
previamente configurado. Para que essa atribuição automática ocorra o protocolo NDP
(Neighbor Discovery Protocol – Protocolo de Descoberta de Vizinhos) é utilizado entre o host e o
roteador.
Com isso o computador já tem seu endereço de Internet e o IP do roteador padrão. Além disso,
o roteador pode passar o MTU e o limite de encaminhamento do cabeçalho IPv6.
Os Flags que são passados na mensagem de RA pelos roteadores aos hosts é que dizem como o
host deve se configurar (autoconfig, DHCPv6 Stateful ou Stateless), veja o que eles significam:
“M” flag (“Managed Address Configuration”): diz ao host que tem um servidor DHCPv6
disponível para alocação de IP e parâmetros de rede.
“A” flag (“Autonomous Address Configuration”): diz ao host que a autoconfiguração está
disponível (SLAAC) para alocação de IPs e parâmetros de rede.
“O” flag (“Other Stateful Configuration”): diz ao computador que existe um servidor
DHCPv6 disponível para que ele possa pegar apenas os parâmetros de rede, mas não
para atribuição de endereço.
Além disso, existe uma variação desse serviço de DHCPv6 denominada Stateless, na qual
servidor não mantém nenhum registro dos endereços atribuídos. Nesse caso a configuração do
IP é feita pelo processo de autoconfiguração pelo próprio roteador (vista no tópico anterior) e
depois o computador faz uma solicitação ao servidor DHCP requisitando os parâmetros
adicionais, tais como nome de domínio e servidores DNS.
Veja a figura abaixo, onde o roteador envia o RA com o “A-Flag” em ON e “O-Flag” também em
ON, ou seja, o flag A diz que o computador deve usar a autoconfiguração para pegar seu
endereço IP e o flag O diz que ele deve ainda solicitar ao DHCP as demais configurações de
rede.
A grande vantagem do DHCPv6 em relação ao DHCPv4 é que não existem mais broadcasts no
IPv6 e a descoberta do servidor não inunda mais o switch com ARP Requests. Agora a busca é
feita através de um endereço multicast que identifica todos os servidores DHCPv6 (FF05::1:3
ou FF02::1:2).
Em ambos os casos, DHCPv6 stateful ou stateless, se o servidor DHCP não estiver na mesma
rede local que os clientes é utilizado um DHCP Relay para o encaminhamento das mensagens
até o servidor DHCP. Nesse caso a configuração é feita nos roteadores para que eles sirvam de
intermediário entre os hosts e o servidor DHCP.
6.4 Fragmentação
O Path MTU Discovery assume que o MTU de todo o caminho é igual ao MTU do primeiro salto.
Se o tamanho de qualquer um dos pacotes enviados for maior do que o suportado por algum
roteador ao longo do caminho, este irá descartá-lo e retornar uma mensagem ICMPv6 -
Packet Too Big (pacote muito grande). Após o recebimento dessa mensagem, o nó de origem
reduzirá o tamanho dos pacotes de acordo com o MTU do caminho indicado na mensagem
packet too big. O procedimento termina quando o tamanho do pacote for igual ou inferior ao
menor MTU do caminho e todos os roteadores deixarem o pacote seguir até seu destino.
Outra diferença entre o IPv4 e o IPv6 é referente ao envio de pacotes de tamanho elevado,
chamados jumbograms. No IPv6 existe uma opção do cabeçalho de extensão hop-by-hop
(chamada jumbo payload), que permite o envio de pacotes com cargas úteis (payload) entre
65.536 e 4.294.967.295 bytes de comprimento, o que no IPv4 existia uma limitação de
64Kbytes.
6.5 Mobilidade
O suporte à mobilidade no IPv6 permite que um dispositivo móvel se desloque de uma rede
para outra, sem necessidade de alterar seu IP de origem. Quando um dispositivo móvel se
desloca da sua rede de origem, ele obtém um novo endereço IPv6 na rede remota. Este
endereço remoto pode ser obtido através de mecanismos de autoconfiguração stateless ou
statefull.
Para ter certeza de que os pacotes IPv6 cheguem a sua rede remota, é necessária a associação
entre o endereço remoto (Care-of Address) e o endereço de origem (Home Address). Essa
associação é feita pelo agente de origem, o qual registra o endereço remoto enviado em uma
mensagem binding update pelo dispositivo móvel e responde com uma mensagem binding
acknowledgement.
Para que tudo isso seja possível um novo cabeçalho de extensão foi criado e chamado
Mobility, além disso, foi adicionado um novo tipo de cabeçalho routing, o Type 2, para dar
suporte ao recurso de mobilidade no IPv6. Foram criadas também quatro novas mensagens
ICMPv6 para mobilidade:
Foram designados dois campos do cabeçalho IPv6 para o tratamento de QoS: "classe de
tráfego" (utilizando valores de DSCP) e "indicador de fluxo", ambos com o objetivo de
implementar a priorização do fluxo de determinados pacotes.
O QoS é importante, tanto em uma rede IPv4 como em uma rede Ipv6, para que determinados
tipos de fluxos possam ser devidamente identificados, através da marcação da classe do
tráfego, para que eles recebam a prioridade e a largura de banda necessária para seu
funcionamento.
Por exemplo, tráfegos de tempo real como voz e vídeo sobre IP necessitam de um mínimo de
atraso e uma quantidade de largura de banda garantida. Com a marcação correta dos fluxos de
voz e vídeo, seus pacotes podem receber o tratamento correto pelos roteadores (através das
configurações de QoS) e não serão afetados mesmo sendo transmitidos com protocolos mais
agressivos como o HTTP, FTP ou programas P2P.
Os protocolos de roteamento para o IPv6 continuam tendo a mesma base dos utilizados para o
IPv4, porém recebem novos nomes. Os principais protocolos de roteamento interno para IPv6
(IGP) são:
Além dos protocolos IGP acima, ainda existe um protocolo proprietário do fabricante Cisco
chamado EIGRP que tem também sua versão para IPv6 chamado EIGRPv6.
Todos eles têm seu princípio de funcionamento, cálculo de melhor rota (métrica) e formas de
trocar informações (updates) mantidas da mesma maneira que no IPv4, porém tudo agora
baseado no endereçamento IPv6.
Já para o roteamento externo (EGP) o BGP continua sendo utilizado, porém com uma extensão
multiprotocolo (MBGP – BGP Multiprotocolo ou Multiprotocol Border Gateway Protocol), a qual
possui as mesmas funcionalidades do BGP para IPv4, porém com capacidade de tratar
endereços tanto do IP versão 4 como da versão 6.
Capítulo 03 -
Implementando o IPv6
Agora nesse capítulo vamos
analisar com mais
profundidade aspectos
Objetivos do Capítulo
práticos da ativação e
configuração do IPv6 nos Como podemos fazer essas configurações
clientes, assim como no IPv6? Quais as características de cada
estudar as opções de sistema operacional? Será que tudo é tão
configuração automática simples como para o IPv4?
dos clientes.
Nesse capítulo temos como objetivo
responder a essas perguntas e também
mostrar como ativar o IPv6 em alguns
Assim como você já deve ter sistemas operacionais
estudado para o IPv4, uma
rede com IPv6 possui Ao final desse capítulo você deverá
conhecer as possibilidades de configuração
clientes e servidores, pois
de endereços IPv6 nos principais sistemas
não estamos alterando as operacionais de clientes e as mudanças em
camadas superiores da relação a servidores DNS e aplicativos.
pilha do protocolo TCP/IP,
portanto um cliente para se
comunicar em rede
precisará de um endereço
IPv6 com um prefixo de rede
(equivalente a máscara do
IPv4), um roteador padrão
para acessar endereços
externos e um endereço de
servidor DNS para realizar
a tradução de nomes de
domínio para endereços
IPv6.
Normalmente nessa saída de Internet utilizamos no IPv4 um processo de tradução com o NAT
(Network Address Translation) ou um servidor Proxy, pois o IP da Intranet é privativo e não
roteado na Internet pública. Veja a figura a seguir.
Essa é uma grande diferença do IPv6, pois com a quantidade de endereços disponíveis não
precisaremos mais utilizar redes privativas, portanto todos os endereços de host das empresas
serão endereços de Internet válidos, possibilitando comunicação fim a fim entre dispositivos na
Internet IPv6.
Você verá que essa é uma vantagem do IPv6 que precisa de um cuidado maior com a
segurança das redes, hosts e dispositivos de redes, pois todos os dispositivos estarão expostos
na rede pública, o que com os IP’s privativos não acontecia, pois eles escondem os hosts da
rede interna dificultando um ataque direto aos hosts da rede. Isso traz uma preocupação maior
com a implantação das redes IPv6 no que tange aos firewalls, IPS’s e demais dispositivos de
segurança. Mais para frente estudaremos os conceitos de segurança com o IPv6.
Assim como no IPv4 o IPv6 foi dividido em diversas faixas pela IANA para divisão entre as
regiões que administram os endereços de Internet, seus ISPs e empresas. Essa divisão gerou o
que é chamado de “Global Address Space” e na Internet a faixa reservada para Unicast é a
2000::/3, o que resulta na faixa iniciando em 2000:0:0:0:0:0:0:0 até
Portanto a IANA dividiu essa faixa de endereços entre cada uma das regiões (RIR) e o bloco
2800::/12 corresponde ao espaço reservado para o LACNIC alocar na América Latina. O NIC.br
(responsável pelas alocações do IPv6 no Brasil) por sua vez, trabalhará com um /16 que faz
parte deste /12.
Essa divisão de endereços é top-down, ou seja, a IANA definiu um bloco de IPv6 para cada
região ou RIR, os quais passarão para seus ISPs, que por sua vez distribuirão suas faixas de
IPv6 em regiões para seus clientes e usuários finais, possibilitando uma agregação de rotas
mais eficiente do que a atual para o IPv4. No projeto do IPv6 para sair de uma região para
outra apenas uma rota IPv6 será necessária, por exemplo, para que um roteador de borda da
Europa alcance determinada rede nos Estados Unidos apenas uma rota será necessária, assim
como para um cliente alcançar as rotas do seu ISP também apenas uma rota será necessária,
reduzindo a tabela de roteamento e aumentando a eficiência do IPv6 em relação ao roteamento
no IPv4.
Os endereços globais de Unicast ou “Global Routing Prefix” são divididos em porção de rede e
porção de host, porém a porção de rede terá algumas “fatias” que representam a região. Por
exemplo, 2800::/12 representa que é um IP da LACNIC (América Latina), depois terá mais um
pedaço que representará o Brasil (/16) e mais um pedaço do seu service provider ou ISP,
normalmente um /32. Quando o ISP passar o bloco de endereço para o cliente será passado um
/48 aí ele terá mais 16 bits para fazer subrede, uma vez que normalmente os hosts utilizam 64
bits para sua identificação.
Veja a figura abaixo com um resumo do que será um endereço de Internet em IPv6. Temos
três campos básicos, o de identificação do ISP (/48) que tem dentro dele também a
identificação do RIR e da entidade local que administra os IPv6 (por exemplo, NIC.BR), depois
mais 16 bits de subrede e 64 bits para host.
Note que a máscara de subrede utiliza a notação Classless Interdomain Routing (CIDR) com a
barra “/” e a quantidade de bits de rede da máscara, conforma já citada anteriormente.
E o prefixo ou rede IPv6 é representada como um endereço IPv6 normal, porém com a porção
de hosts toda em zero (assim como já era no IPv4). Portanto a notação e simplificação de um
prefixo IPv6 é como para um endereço comum do IPv6 e sempre precisamos ter os dois pontos
no final seguidos da barra (/) e o número de bits de subrede, por exemplo:
Veja o exemplo na figura abaixo onde a IANA fornece o bloco 2340::/12 para a ARIN (RIR que
representa a região de Américas), a qual fornece para o ISP1 a faixa 2340:1111::/32, o qual
alocou o bloco 2340:1111:AAAA::/48 para seu cliente chamado Company1.
Dentro da rede de Company1 ele pode agora subdividir esse /48 em diversas subredes
conforme suas necessidades internas. Por exemplo, na figura abaixo temos quatro subredes
alocadas:
2340:1111:AAAA:0001::/64 para a LAN de R1;
2340:1111:AAAA:0002::/64 para a WAN entre R1 e R2;
2340:1111:AAAA:0003::/64 para a LAN de R3
2340:1111:AAAA:0004::/64 para a WAN entre R1 e o roteador do ISP.
Com 16 bits o cliente tem 2^16 subredes ou 65.536 subredes com 64 bits de host ou
18,7x10^18 endereços de hosts. Devido a esse número elevado de hosts é possível quebrar
mais ainda as subredes para um melhor aproveitamento no endereçamento de redes WAN ou
dispositivos que utilizam IPs fixos. Por exemplo, pegar a subrede 2340:1111:AAAA:0002::/64 e
dividi-la em subredes /112, ou seja, 48 bits para subrede (mais que o espaço do IPv4 de 32
bits) e 16 bits para host, dando mais 281 trilhões de subredes com 65536 IPs versão 6 cada
subrede.
Esta é a lógica para você planejar e endereçar seus laboratórios e cenários de estudo relativos
ao IPv6 ou até mesmo a implantação de IPv6 na empresa onde você trabalha, por exemplo,
veja a mesma figura anterior já com os alguns hosts e endereços de interfaces abaixo:
Os requisitos para que um host IPv6 navegue na Internet são os mesmos, continuamos
precisando de um IPv6 válido (dentro da faixa de global Unicast 2000::/3), tamanho do prefixo
de rede (similar à mascara com notação CIDR), um gateway ou roteador padrão e também pelo
menos um endereço de servidor DNS para tradução das URLs para endereços IPv6.
Para configurar um IPv6 podemos utilizar IP fixo (configuração estática pelo administrador de
redes) e também as seguintes novas formas de atribuição de endereço IPv6 que não existem
no IPv4:
IP fixo com ou sem EUI-64: o EUI-64 atribui o endereço de host do IPv6 utilizando o
endereço MAC da interface de rede como base, porém podemos configurar um IPv6 fixo
completo como em interfaces IPv4, por exemplo, 2340:1111:AAAA:0002::1/64.
Autoconfiguração stateless (Stateless Address Autoconfiguration ou SLAAC):
permite que o computador utilize informações coletadas através do protocolo NDP
(Neighbor Discovery Protocol) para atribuir automaticamente um IP a sua interface
utilizando um prefixo de rede anunciado por um roteador mais o EUI-64 para definir a
porção de host do seu endereço.
Configuração via DHCPv6 stateless: utilizada em conjunto com a autoconfiguração
para atribuir as demais informações necessárias para que o computador navegue na
Internet ou utilize determinados serviços de rede, tais como endereço do servidor DNS
ou de um servidor TFTP para telefonia IP.
Configuração via DHCPv6 statefull: a função de um servidor DHCP statefull, ou seja,
que guarda o estado da atribuição, é a mesma que o conceito para o IPv4, ou seja, o
IPv6 do host, assim como sua máscara, roteador padrão e servidor DNS serão passados
pelo servidor DHCP, o qual recebe o nome de DHCPv6. Existem algumas diferenças, tal
como no DHCPv6 se utiliza multicast e não unicast para troca de mensagens entre o
cliente DHCPv6 e seu servidor, porém o funcionamento e mensagens básicas
permanecem as mesmas.
SLAAC com RDNSS: o RDNSS permite que a autoconfiguração passe endereços de
DNS em seus anúncios, possibilitando que toda a informação necessária para o Host seja
passada em seu anúncio do NDP, porém essa opção não é ainda suportada por alguns
sistemas operacionais.
Nos servidores DHCPv6 nós podemos ter as duas opções, stateful igual ao IPv4 ou stateless, na
qual o servidor apenas fornecerá algumas informações mas não vai guardar o estado dessas
informações fornecidas. Portanto, se usarmos a opção de IPv6 fixo ou DHCPv6 statefull os
clientes já estarão com todas as informações necessárias para funcionar.
O suporte ao protocolo IP versão 6 é definido pelo sistema operacional, tanto em clientes como
em servidores ou dispositivos de rede, tais como roteadores e switches.
Atualmente a maioria dos sistemas operacionais suportam o protocolo IPv6, porém existem
particularidades de configurações e opções de funcionamento em cada protocolo.
Em pesquisa realizada pela “IPv6 Intelligence” em 2009 o suporte ao IPv6 pelos principais
sistemas operacionais atualmente utilizados é realizado por padrão, com exceção do Windows
XP que precisa ser habilitado, veja tabela abaixo. Fonte: http://ipv6int.net/systems/index.html
Na época o Windows 7 ainda não estava com a definição sobre o IPv6, porém já sabemos
atualmente que tanto o 7 como o Windows 8 suportam IPv6, nos quais o protocolo já vem
habilitado por padrão.
Para uma lista mais atualizada consulte o link abaixo ou procure as especificações do fabricante
que você pretende ativar o IPv6:
http://en.wikipedia.org/wiki/Comparison_of_IPv6_support_in_operating_systems
Você vai notar na tabela do link anterior uma coluna indicando o suporte ao “Recursive DNS
Server Option” ou RDNSS. A função do RDNSS é transmitir um ou mais endereços IPv6 de
servidores DNS. Ele é enviado nas mensagens Router Advertisement e deve ser ignorado em
outras mensagens, porém nem todos os sistemas operacionais suportam essa facilidade.
Lembrem que a autoconfiguração não passa o DNS, com essa facilidade e a autoconfiguração a
necessidade de um servidor DHCPv6 seria eliminada.
Um teste simples para verificar se o IPv6 está realmente ativado em seu sistema operacional é
realizando um ping para o IPv6 de loopback “::1”.
Podemos também utilizar o “ping -6 ::1” no Windows. No Linux e Mac OS X o comando para o
ping é o “ping6 ::1”.
O protocolo IPv6 no Windows XP não vem habilitado por padrão, portanto antes de configurar
um endereço precisamos ativá-lo. Para ativação e configuração do IPv6 precisaremos utilizar o
prompt de comando e também os comandos disponíveis via “netsh”, já a verificação pode ser
via “ipconfig /all” ou através de comandos do netsh.
Para desinstalar o IPv6 basta entrar com o comando “ipv6 uninstall” e reinicializar o
computador.
Uma vez instalado o IPv6, o XP ativa o SLAAC para configuração do seu IPv6 global unicast
(endereço de Internet) e ao mesmo tempo já cria a loopback “::1” e seu endereço de link local
com o prefixo FE80::/10 utilizando seu MAC e o EUI-64 para criar o interface-ID.
Na figura a seguir temos o campo IP marcado com o IPv6 de link local criado pelo XP e também
três endereços IPv6 de DNS que são gerados automaticamente pelo próprio sistema
operacional.
O XP não aceita configuração via painel de controle como mostramos no capítulo anterior para
o Windows 7, portanto para configurar um endereço manual é preciso fazer via linha de
comando utilizando o Netsh. Veja abaixo os comandos para configurar os parâmetros do IPv6
via linha de comando:
Definir o endereço IPv6: netsh interface ipv6 add address "Conexão de rede local"
[endereço-ipv6-do-host]
Definir gateway padrão: netsh interface ipv6 add route ::/0 "Conexão de rede local"
[ipv6-do-gateway]
Adicionar DNS primário: netsh interface ipv6 add dns "Conexão de rede local" [ipv6-do-
DNS-primário]
Adicionar DNS secundário: netsh interface ipv6 add dns "Conexão de rede local" [ipv6-
do-DNS-secundário] index=2
Por exemplo, temos um computador com IPv6 que deve ter o endereço 2001::10/64, seu
gateway é o endereço 2001::1 e servidor DNS 2001::45, sendo que sua conexão de rede se
chama “Local Area Connection” (é o nome que o Windows dá para a conexão de rede):
O “Ok” após a execução do comando indica que a configuração foi aceita. Podemos agora
verificar com o ipconfig /all se os endereços foram adicionados corretamente, conforme figura a
seguir.
Note que a conexão local foi chamada de “Interface 5”, já os IPs de loopback estão
configurados na “Interface 1”, por isso no ipconfig aparece um %5 após o endereço de link local
da interface física, pois ele representa o índice da interface. As interfaces 2 e 4 representam
túneis Teredo criados automaticamente pelo sistema operacional.
É importante notar que mesmo com essa configuração estática o SLAAC ainda está habilitado,
portanto se existir um roteador enviando mensagens de RA (router advertisement) o
computador terá um IPv6 fixo e outro autoconfigurado.
Você deve saber que as opções de configuração do IPv6 via XP são limitadas, por exemplo, o
DHCPv6 não é suportado de forma nativa nele, apenas o SLAAC.
A seguir vamos estudar o IPv6 no Windows 7, onde muitas das características e comandos são
os mesmos estudados para o XP.
No Windows 7 o IPv6 já vem habilitado por padrão utilizando o SLAAC ou DHCPv6 como modo
de atribuição dinâmica de seu endereço IPv6 local.
Atualmente as versões de Windows não suportam o uso de RDNSS para atribuição do servidor
DNS via mensagens NDP, mais especificamente pelo router advertisement.
Uma vantagem do Windows 7 e 8 sobre o XP é que podemos configurar os endereços IPv6 das
interfaces através da Central de Rede e Compartilhamento, assim como para o IPv4, porém os
mesmos comandos netsh utilizados no Windows XP anteriormente valem para as versões 7 e 8.
Veja abaixo a saída do comando ipconfig /all de um computador com Windows 7 conectado a
um roteador da Cisco sem o prefixo IPv6 global estar configurado.
Com a saída acima você vai notar um detalhe diferente em relação ao XP, o endereço IPv6 de
link local não está utilizando o padrão EUI-64, pois se estivesse utilizando o endereço seria
FE80::C218:85E5:EEDB, uma vez que o MAC da placa de rede sem fio é C0-18-85-E5-EE-DB.
Já o %20 representa ainda a interface que esse link local está configurado, você pode ver os
índices das interfaces com o comando “netsh interface ipv6 show interfaces”, veja saída a
seguir confirmando que a conexão de rede sem fio tem o índice (Ind) 20.
Voltando ao IPv6 de link local não utilizar o EUI-64, isso se deve porque o Windows 7 e 8
utilizarem seu endereçamento com base na RFC 3041, a qual foi mais tarde atualizada na RFC
4941, chamada “Privacy Extensions for Stateless Address Autoconfiguration in IPv6”. Essa RFC
ao invés de utilizar o MAC diretamente exposto no endereço de link local, utiliza um hash MD5
para esconder o endereço físico do host. Essa RFC trata da privacidade do host, pois se seu
MAC é mostrado em seu endereço fica fácil descobrir qual seu endereço global unicast EUI-64
ou fazer ataques de camada 2.
Essa mesma técnica é utilizada para esconder os endereços IPv6 de unicast global, veja a saída
do comando abaixo após o host pegar via SLAAC seu prefixo para autoconfiguração.
Esses endereços temporários tem um tempo de vida e são trocados por padrão a cada 7 dias.
Com o comando “netsh interface ipv6 show privacy” podemos ver essas configurações
conforme saída mostrada na sequência. Note na saída que os endereços temporários estão
habilitados e com um tempo de vida máximo de 7 dias, além disso, a detecção de endereços
duplicados (DAD) está ativa para eles.
Essa configuração é recomendada quando estamos fazendo testes em laboratório, pois fica
mais simples a identificação dos hosts.
Esse comando é equivalente ao “arp –a” utilizado no IPv4, porém lembre-se que no IPv6 não
existe mais ARP, pois não existe mais suporte ao broadcast! A resolução de endereços de
camada-2 foi incorporada pelo ICMPv6, mais especificamente pelo NDP (Neighbor Discovery
Protocol). Veja saída a seguir com um exemplo da tabela de vizinhos NDP.
Nessa página você pode baixar arquivos executáveis para alterar desabilitar ou habilitar
ferramentas padrões do Ipv6 disponibilizadas no Windows 7 e algumas outras versões,
incluindo apagar interfaces túneis que são criadas por padrão pelo Windows. Se você percebeu
nas telas anteriores haviam algumas interfaces marcadas como “Túneis ISATAP” ou “Teredo”,
os quais serão estudados em capítulo posterior.
A Microsoft não recomenda desabilitar o IPv6, porém se você não for implementar e utilizar em
sua rede doméstica ou corporativa é sim recomendado que o IPv6 seja desativado, pois ele
pode ser porta de entrada para ataques muito simples de serem realizados, porém vamos
conversar mais sobre o assunto no capítulo sobre segurança em redes IPv6.
No Linux o IPv6 também já vem habilitado por padrão, porém você pode confirmar com o
comando “ping6 –c5 ::1”. Por padrão a interface IPv6 do Linux vem configurada para utilizar a
autoconfiguração (não mostrado na configuração), porém podemos utilizar DHCPv6 ou
endereços IPv6 estáticos opcionalmente.
Uma opção para ativar um cliente DHCPv6 é utilizar o comando “sudo apt-get install isc-dhcp-
client” e depois “sudo dhclient <iface>”, por exemplo, “sudo dhclient eth0”.
Em seguida reinicie a interface de rede com o comando “ifup –force eth0” e verifique com o
ifconfig se o endereço configurado é mostrado na interface eth0 ou com o comando “ip addr
show”.
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
iface eth0 inet6 static
address 2001:1111:1234:5678::a157
netmask 64
gateway 2001:1111:1234:5678::1
dns-nameservers 2001:1111:1234:5678::20
dns-search dltec.com.br
Note que apenas o roteador padrão é conhecido via NDP, portanto vamos pingar o
host com IPv6 2001:db8:1111:0:c218:85ff:fee5:eedb e verificar novamente a tabela
de vizinhos IPv6.
Com esse teste podemos confirmar que ambos os hosts estão se comunicando via IPv6!
Assim como para os dois sistemas operacionais anteriores, o Mac OS X também traz o IPv6
ativado por padrão em suas interfaces, verifique em “System Preferences > Network” e clique
em “Advance…”, note que em “Configure IPv6” está setado como “automatic”.
A configuração do IPv6 deve ser realizada em modo privilegiado iniciando com a ativação do
roteamento IPv6 Unicast (comando “ipv6 unicast-routing”) e depois realizando a configuração
dos endereços nas interfaces. As interfaces IPv6 dos roteadores Cisco suportam configuração
de IPv6 estático, via EUI-64, SLAAC ou DHCPv6 cliente statefull, veja os comandos suportados
abaixo.
Habilitando o IPv6:
“ipv6 unicast-routing”
Abaixo segue um exemplo de configuração de interface ativando a pilha dupla, ou seja, com
endereço IPv6 e IPv4 simultaneamente:
Interface Fastthernet0/0
ip address 192.168.1.254 255.255.255.0
ipv6 address 2001:db8:123:1::2/64
Com a configuração acima o roteador consegue responder para hosts em ambos os protocolos,
IP versão 4 e/ou 6, assim como o prefixo 2001:db8:123:1::/64 e o IPv6 de gateway
2001:db8:123:1::2/64 serão repassados aos hosts da rede local do roteador via NDP
(mensagem de RA) para que eles possam se autoconfigurar e comunicar-se com outros hosts e
até com a Internet via IPv6.
Veja abaixo outro exemplo prático da configuração em um roteador ADSL Cisco 877 conectado
a um provedor de Internet que tem suporte ao protocolo IPv6.
ipv6 unicast-routing
ipv6 cef
interface Dialer0
ipv6 address NODE-PD ::FF:0:0:0:1/128
ipv6 enable
ipv6 dhcp client pd NODE-PD rapid-commit
Com o comando acima o endereço IPv6 da interface WAN irá pegar o prefixo do provedor de
Internet e inserir o interface-ID “::FF:0:0:0:1/128”, porém com um comprimento de 128 bits
(como se fosse uma máscara /32 do IPv4).
interface Vlan1
ipv6 address NODE-PD ::1/64
ipv6 enable
ipv6 nd other-config-flag
ipv6 dhcp server NODE-DHCPV6
O comando “ipv6 nd other-config-flag” ativa o bit O que indica aos hosts para procurarem por
opções adicionais via DHCPv6.
Os endereços iniciados com FE80 são links locais e os globais unicast estão logo abaixo, além
disso, interfaces não configuradas aparecem como unassigned.
Para verificar as configurações completas utilize o comando “show ipv6 interface”, podendo
especificar a interface conforme saída do comando abaixo.
Em amarelo temos o IPv6 de link local, endereço global de unicast e também o prefixo que será
anunciado via NDP através dos routers advertisements.
Em verde temos os grupos de multicast que a interface foi adicionada, lembre-se que os
endereços de multicast iniciam com FF, sendo que o FF02::1 é o grupo de todos os hosts da
rede local, já o FF02::2 é o grupo de todos os roteadores e o endereço FF02::1:FF00:1
representa o endereço chamado de Solicited-Node utilizado pelo NDP para obtenção dos
endereços de camada-2 de hosts na rede local.
Em cinza temos o DAD ou detecção de endereços duplicados, o qual faz uma tentativa após a
interface ativada para verificar se existe outro IPv6 igual na rede, e também o temporizador do
envio dos RAs que será realizado a cada 200s, ou seja, a cada 3 minutos e vinte segundos.
Em azul temos a indicação de que a interface utiliza o SLAAC para passar informações de
prefixo e gateway para os hosts.
Para verificar a tabela formada pelo NDP em roteadores Cisco podemos utilizar o comando
“show ipv6 neighbors”, veja saída do comando abaixo.
DlteC-FW-GW#
Para quem está acostumado com equipamentos do fabricante Cisco com certeza já utilizou ou
ouviu falar no GNS3, porém para quem não é do mundo Cisco vale a pena aprender o básico
para criar seus laboratórios de teste.
O GNS3 a grosso modo virtualiza roteadores da Cisco, portanto ele não é simulador e sim um
roteador real, o qual ainda possibilita interação com seu próprio computador, máquinas virtuais
(VMs) ou até outros hosts da sua rede local, podendo fazer topologias reais e analisar como o
protocolo funciona no mundo real.
Nesse capítulo você verá, de forma ilustrativa, a saída de alguns comandos em roteadores
cisco utilizando o GNS3.
Se você quer aprender mais sobre o mundo Cisco confira nossos cursos online Cisco CCNA
Network, CCNA Security e CCNA Voice.
Abaixo seguem tabelas com comandos úteis para o troubleshooting em redes IPv6 em diversos
sistemas operacionais.
Apple OS X, *BSD
Linux
Solaris
Cisco
Juniper – JUNOS
Por esse motivo foram desenvolvidos os serviços de DHCP para o IP versão 6, chamado
DHCPv6, o qual pode ser similar ao DHCP e guardar o estado das atribuições, por isso
classificado como statefull, ou então mais simples para atuar juntamente com o SLAAC e
fornecer apenas informações adicionais ao prefixo e gateway padrão.
Outra opção desenvolvida é o uso do SLAAC com “Recursive DNS Server Option” ou RDNSS. A
função do RDNSS é transmitir um ou mais endereços IPv6 de servidores DNS. Ele é enviado
nas mensagens Router Advertisement e deve ser ignorado em outras mensagens, porém nem
todos os sistemas operacionais suportam essa facilidade. Um exemplo de sistema operacional
que suporta o RDNSS é o Linux.
SLAAC: Não serve como uma solução completa, pois não passa a informação do DNS e
precisaria da configuração manual ou em massa via script do endereço dos servidores
DNS nos clientes.
SLAAC com DHCPv6 Stateless: Suportado por praticamente todos os clientes IPv6 e
necessita que o bit O na mensagem de anúncio do roteador (RA ou Router
Advertisement) seja ativada pelo roteador que está anunciando o prefixo.
SLAAC com RDNSS: O RDNSS ou Recursive DNS Server Option está definido na RFC
6106 e permite que a mensagem de anúncio do roteador passe endereços de DNS,
porém não é suportada por alguns sistemas operacionais.
DHCPv6 Statefull: Passa todas as informações como no DHCP do IPv4 com exceção do
gateway padrão, o qual é aprendido pelo cliente através da mensagem de RA enviada
pelo roteador local. Para que os hosts entendam que precisam utilizar o DHCPv6 é
necessário que o bit M da mensagem de RA enviada pelo roteador esteja setado.
Mais tarde veremos no capítulo de segurança os riscos que essas facilidades de configuração
podem trazer para as redes IPv6.
A seguir estudaremos o Dibbler, software gratuito e Open Source que atua como DHCPv6
server, client, relay e muito mais, sua vantagem é que é suportado por sistemas operacionais
como Windows e Linux, portanto você pode instalar em seu computador e realizar testes com
tranquilidade. Na sequência passaremos um script para configuração do SLAAC e DHCPv6
stateless que pode ser utilizado via GNS3 para testes entre um roteador Cisco e seu próprio
computador.
Assim como no mundo IPv4 o serviço de DHCP para IPv6 pode ser ativado diretamente em
roteadores ou switches Layer-3. A outra opção é a ativação em servidores de rede.
O DHCPv6 está definido na RFC3315, sendo que os clientes utilizam a porta UDP 546 e os
servidores e relays escutam as mensagens DHCP na porta UDP 547. Como o IPv6 não possui
mais broadcast o multicast é utilizado para troca de informações com os seguintes endereços:
Uma vez instalado existe um arquivo de configuração do servidor que vem com o seguinte
padrão (esse arquivo está no menu iniciar, dentro do dibbler com o nome “Server Edit config
file”):
log-level 7
log-mode short
iface "Local Area Connection"
{
# clients should renew every half an hour
T1 1800
T2 2000
class
{
pool 2001:db8:1111::1-2001:db8:1111::ff
}
option dns-server 2001:db8::1, 2001:db8::2
option domain example.com, test1.example.com
}
Você pode utilizar esse padrão alterando apenas o “pool”, que é a faixa de endereços que será
fornecida ao cliente de acordo com sua topologia, assim como os IPs de DNS (que pode ser
apenas um) em option dns-server e o nome do domínio em option domain.
Cuidado com o nome da interface (marcado em azul na configuração padrão acima) tanto no
Linux quanto no Windows, pois ela deve se igual ao que o sistema operacional nomear. Por
exemplo, se você utiliza Windows 7 e uma placa de rede sem fio, normalmente, a conexão local
é chamada de "Conexão de Rede sem Fio" e você deverá abrir o arquivo de configuração e
trocar de "Local Area Connection" para o nome especificado pelo seu sistema operacional.
Após acertar os parâmetros básicos no arquivo de configuração você pode no Windows ativar o
serviço via console ou como um serviço. Para ambiente de laboratório é melhor ativar via
console na opção “Server Run in the console”. Se tudo estiver correto e o servidor subir você
deverá ter uma tela do prompt aberta e recebendo as mensagens do serviço de DHCP,
conforme saída abaixo.
Caso essa tela não tenha sido exibida procure no menu iniciar, dentro do Dibbler a opção
“Server View log file”, nesse arquivo você pode ver o erro que está fazendo com que a
inicialização do dibbler não seja completada.
Antes de verificar se um cliente irá realmente pegar essa configuração você deve ativar no
GNS3 um roteador para fornecer as mensagens de RA com o bit M setado em 1, indicando aos
clientes que eles devem utilizar o IPv6 do roteador como gateway e o restante da configuração
pegar do servidor DHCPv6 Veja exemplo de configuração de roteador abaixo considerando a
faixa de endereços que vem por padrão configurada no dibbler.
ipv6 unicast-routing
interface FastEthernet0/0
ipv6 address 2001:DB8:1111::/64 eui-64
ipv6 enable
ipv6 nd managed-config-flag
Veja abaixo as mensagens trocadas mostradas no servidor sobre uma alocação de IPv6, onde o
endereço 2001:db8:1111::27 foi repassado ao cliente.
38:52 Srv Notice Received SOLICIT on ConexÒo de Rede sem Fio/20, trans-id=0x3
e0f, 6 opts: 8 1 3 39 16 6 (non-relayed)
38:52 Srv Info Client 00:01:00:01:16:fb:ed:2f:24:b6:fd:06:dc:17 got 2001:db
8:1111::27 (IAID=213915781, pref=86400,valid=172800).
39:53 Srv Notice Received REQUEST on ConexÒo de Rede sem Fio/20, trans-id=0x3
e0f, 7 opts: 8 1 2 3 39 16 6 (non-relayed)
39:53 Srv Info Cache: Cached address 2001:db8:1111::27 found. Welcome back.
Você pode ainda conectar mais roteadores à topologia do GNS3 e configurá-los como clientes
conforme exemplo de configuração abaixo:
R4(config)#ipv6 unicast-routing
R4(config)#int f1/0
R4(config-if)#ipv6 enable
R4(config-if)#ipv6 address dhcp rapid-commit
R4(config-if)#no shut
O comando ipv6 address dhcp está disponível apenas em versões de IOS superiores à 12.24T.
A topologia utilizada para coletar os comandos e saídas acima está na figura abaixo.
Uma opção para resolver esse problema é utilizar um servidor DHCPv6 sem estado ou stateless
para que os clientes possam obter os demais parâmetros faltantes, tais como servidores DNS,
nomes de domínio, servidores TFTP, etc.
O dibbler suporta o DHCPv6 stateless, assim como podemos configurar diretamente nos
roteadores da Cisco. A diferença entre o uso do DHCPv6 sem e com estado é que no caso do
stateless vamos setar apenas o bit O em 1, com isso os hosts irão entender que devem se
autoconfigurar com o prefixo anunciado pelo roteador e procurar em um servidor DHCP
stateless pelas opções adicionais necessárias à sua configuração.
Vamos utilizar a mesma configuração mostrada anteriormente com o dibbler servindo agora de
DHCP stateless e o roteador Cisco enviando suas RAs com o bit O setado para os hosts da rede.
As configurações irão mudar um pouco, pois agora o dibbler não alocará mais o endereço dos
clientes apenas passará os endereços dos DNSs e nome de domínio, veja o arquivo de
configuração utilizado abaixo.
#
# Exemplo de stateless autoconf
#
log-level 8
log-mode short
stateless
O roteador Cisco responsável pelo anúncio dos prefixos terá uma configuração parecida com a
anterior, porém com o bit O setado, veja abaixo.
ipv6 unicast-routing
interface FastEthernet0/0
ipv6 address 2001:DB8:1111::/64 eui-64
ipv6 enable
ipv6 nd other-config-flag
no shut
R2(config)#ipv6 unicast-routing
R2(config)#int f1/0
R2(config-if)#ipv6 enable
R2(config-if)#ipv6 address autoconfig default
R2(config-if)#no shut
Agora vamos observar se os clientes estão realmente pegando as informações, porém primeiro
vamos ativar o dibbler em modo console para podermos acompanhar a troca de mensagens em
sua tela e também precisaremos configurar o roteador no GNS3. Veja a tela do dibbler após a
inicialização.
Após a topologia toda ligada e ativa teremos no dibbler as mensagens dos dois hosts (R2 e R3)
solicitando informações, veja abaixo.
Você deve ter notado uma diferença nas mensagens trocadas entre os clientes e servidor
DHCPv6 stateless em relação ao statefull, aqui foram trocadas apenas duas mensagens: o
servidor recebe um INF-REQUEST e responde com um REPLY, pois ele apenas tem que repassar
os dados configurados e não mais alocar endereços IPv6.
Na prática clientes podem enviar ainda solicitações statefull ao servidor DHCP, o qual informará
o problema com as mensagens abaixo:
04:49 Srv Notice Received SOLICIT on ConexÒo de Rede sem Fio/20, trans-id=0x4
e0b16, 5 opts: 8 1 14 6 3 (non-relayed)
04:49 Srv Warning Stateful configuration message received while running in the
stateless mode. Message ignored.
Nesse caso será necessário identificar esses hosts e corrigir o problema, pois eles podem estar
sem endereço IPv6.
A vantagem desse método é sua simplicidade, porém como não há guarda do estado não
conseguimos saber quantos clientes temos nem quais endereços ou faixa de endereços esses
clientes pegaram, pois eles utilizarão o EUI-64 ou as extensões de privacidade que são
utilizadas por padrão para gerar os endereços nos hosts dependendo dos sistemas operacionais
utilizados na rede.
3.3 Exemplo de DHCPv6 Statefull e SLAAC com DHCPv6 Stateless em Roteadores Cisco
Caso você tenha algum problema de conexão entre o GNS3 e seu roteador é possível fazer toda
a configuração do DHCPv6 Stateless e Statefull no roteador, possibilitando que você insira os
servers e clientes em uma mesma topologia do GNS3 para facilitar os testes.
Configurações no servidor:
interface Fast0/0
ipv6 address dhcp
ipv6 enable
Você pode utilizar o comando “debug ipv6 dhcp” para visualizar a troca de mensagens ou ativar
o Wireshark nas interfaces para capturar os pacotes DHCPv6 e analisar as informações
trocadas. Além disso, o comando show ipv6 dhcp binding permite visualizar a alocação
dinâmica de endereços realizada pelo roteador configurado como servidor.
Veja abaixo a saída do comando show ipv6 dhcp binding, onde podemos verificar que para cada
host que teve IPv6 alocado existe uma entrada na tabela do servidor DHCPv6, relacionando o
endereço de link local com o IPv6 global alocado (marcado em amarelo).
Username : unassigned
IA NA: IA ID 0x0EE0CB4E, T1 43200, T2 69120
Address: 2001:DB8:1000:0:FC60:7A1E:DDE3:B6E7
preferred lifetime INFINITY, , valid lifetime INFINITY,
DlteC-FW-GW#
ipv6 unicast-routing
int f1/0
ipv6 enable
ipv6 address autoconfig default
O mesmo comando debug citado anteriormente pode ser utilizado para verificar a troca de
mensagens do DHCPv6, porém a configuração stateless não armazenará os IPs dos clientes.
Abaixo seguem as definições de alguns termos que você pode encontrar ou já ter lido e ficado
com dúvidas.
Identity association (IA): Os endereços estão contidos dentro de um objeto
conceitual conhecida como IA (Associação de identidade). Cada endereço deve ser
contido dentro de uma IA, a qual pode ter mais de um endereço. Certos aspectos do
gerenciamento de endereços pertencem a IA, enquanto outros dizem respeito
diretamente aos endereços. Esta distinção é importante quando se discutem os quatro
temporizadores (definidos pelo servidor) que regem os lifetimes (tempo de vida) dos
endereços: T1, T2, preferred e valid (descritos na sequência).
Temporizadores do DHCPv6:
o T1 e T2: são utilizados para enviar mensagens de Renew (renovar o IPV6 atual)
e Rebind (solicitar um novo IPv6) respectivamente. O Renew é enviado pelo
cliente para renovar o lifetimes (tempo de vida) do endereço. Se o servidor não
enviar uma resposta (Reply) e o timer T2 expirar o cliente enviará um Rebind,
Assim como para o IPv4 o serviço de resolução de nomes ou DNS em redes IPv6 será parte
fundamental para o funcionamento das Intranets e da Internet, pois agora com o tamanho e
escrita dos endereços vai ficar cada vez mais difícil de decorar IPs até mesmo na Intranet!
Além disso, o seu servidor DNS precisa “escutar” a porta 53 através do protocolo IPv6, pois
senão os hosts farão a consulta via IPv6 mas sem porta UDP pronta para receber essa
requisição simplesmente não acontecerá nada.
A maioria das aplicações utilizadas para prover o serviço de DNS já estão preparadas para
receber consultas DNS e resolver nomes IPv6, porém não por padrão, ou seja, será necessário
configuração extra para fazer o DNS escutar a porta 53 no IPv6, adicionar hosts IPv6 e se
necessário configurar a consulta reversa. Para mais detalhes sobre o suporte do DNS ao IPv6
você pode consultar a RFC 3596.
Atualmente os servidores DNS já respondem com endereços IPv6 (registros AAAA) quando eles
estão disponíveis para um determinado nome de domínio, pois esse é o comportamento padrão
do servidor DNS, mesmo operando apenas com IPv4.
Quando o cliente recebe na resposta da consulta ambos os endereços IPv6 e IPv4 para o
domínio procurado, o sistema operacional decide que protocolo usar. Normalmente os sistemas
operacionais dão preferência pelo protocolo IPv6 fazendo o fallback para o IPv4 em caso de
falhas. Mais recentemente algumas técnicas de tentativas simultâneas de conexão IPv6 e IPv4
estão em desenvolvimento para que o aplicativo opte pela qual for mais rápida (chamada
Happy-Eyeballs).
Se você não usa ainda o IPv6 na sua rede e não deseja desabilitá-lo pode utilizar a ferramenta
para Windows 7 (se for seu sistema operacional) chamada “Usar IPv6 em vez de IPv4 em
diretivas de prefixo” para alterar esse comportamento ou desabilitar o IPv6 no Windows 7.
Visite a página mostrada no link, onde a Microsoft disponibilizou diversas “Fixes”:
http://support.microsoft.com/kb/929852
Lembre-se que se você utiliza um dos sistemas operacionais em seus clientes e/ou servidores
que suportam IPv6 por padrão você já está usando o protocolo! Com um dibbler
configurado como DHCPv6 server, um GNS3 para fazer as vezes do roteador e um serviço de
DNS ativo, como por exemplo o BIND (que é suportado até pelo Windows), uma pessoa má
intencionada conseguiria fazer uma série de ataques ou espionagem na sua rede sem que
ninguém percebesse, a não ser que você já monitore o tráfego IPv6 em sua rede.
Quem trabalha bem com Linux nem precisa da “parafernália” citada anteriormente para realizar
o ataque, consegue fazer tudo muito fácil em sua máquina!
Apesar de deixarmos reservado um capítulo para falar de segurança em IPv6 esse era um bom
momento para colocar uma “pulga atrás da orelha” dos administradores de redes e
colaboradores de time de TI que estão estudando conosco.
As aplicações também precisarão ser adaptadas para uso da rede IPv6 como meio de
comunicação entre clientes e servidores, principalmente aquelas que utilizam o endereço do
host para controlar acesso ou tempo de sessão, por exemplo, cookies de rastreamento que
utilizam o IP do host deverão estar preparados para reconhecer um endereço IPv6.
Devemos lembrar que o IPv6, apesar de ter sido criado a muito tempo atrás, está entrando em
uso ostensivo muito recentemente, portanto não é um protocolo maduro como o IPv4 e muitos
“bugs” e ameaças serão descobertas com o dia a dia da implementação do IPv6.
Na página da web abaixo você pode ter uma ideia de vários aplicativos e seus status em
relação ao suporte ao IPv6.
http://en.wikipedia.org/wiki/Comparison_of_IPv6_application_support
Capítulo 4 - Técnicas de
Convivência e Tunelamento
Nesse capítulo vamos IPv6
abordar técnicas que
poderão auxiliar as Objetivos do Capítulo
empresas e provedores de
serviço de Internet na fase Ao final desse capítulo você deverá ter
de migração e propiciarão a estudado e compreender:
convivência de ambas as As principais técnicas de transição e
redes IPv4 e IPv6, pois essa convivência entre IPv4 e IPv6
será uma realidade Conceito e aplicação de uma pilha
inveitável e longa, onde a dupla
infraestrutura das redes Conceito de tunelamento
será compartilhada por Conceito de tradução entre
protocolos
esses dois protocolos de
rede.
Sumário do Capítulo
Veja a figura abaixo representando a migração gradual do IPv4 para o IPv6, note que em um
primeiro momento teremos uma predominância do IPv4, que aos poucos será invertida para
uma predominância do IPv6, até chegar o momento que a rede será toda Ipv6.
Portanto, a coexistência (ou convivência) é o termo utilizado para técnicas que possibilitam a
configuração de ambos os protocolos na rede (seja nos hosts como nos dispositivos de rede). Já
a transição é o termo utilizado para quando a rede interna for sendo migrada para IPv6 e
precisar ainda se comunicar através de uma rede IPv4 com outras redes IPv6 remotas, pois ao
longo do tempo teremos “ilhas IPv6” isoladas em meio a uma rede IPv4 (Internet) e
precisaremos cruzar a rede IPv4 para fazer a comunicação entre essas ilhas de IPv6 ou então
traduzir do IPv6 para IPv4 (e vice-versa) para permitir a comunicação entre hosts que ainda
não foram migrados. Veja a figura abaixo onde em uma primeira fase teremos as ilhas IPv6
querendo se comunicar através da Internet predominantemente IPv4.
Já na figura a seguir temos uma segunda fase onde as Intranets e Internet estarão já em fase
avançada de migração para o IPv6 e há uma inversão, onde teremos algumas ilhas IPv4
querendo se comunicar em uma nuvem IPv6, até chegar ao ponto que a rede vai estar toda
IPv6 em uma terceira fase.
Para que isso seja possível podemos classificar os recursos de coexistência e transição em três
categorias:
A pilha dupla, como o próprio nome diz, é ter ambos os protocolos IPv4 e IPv6 configurados
tanto nas interfaces dos dispositivos de rede como nos hosts, ou seja, em todos os nós e
endpoints da rede.
Dessa maneira, quando o host for se comunicar com outros hosts IPv4 ele utiliza a pilha do
protocolo IP versão 4, porém quando for conversar com um host ou servidor IPv6 utilizará a
pilha referente ao protocolo IP versão 6. Note que nessa técnica não há nenhum tipo de
tradução ou interconexão entre os protocolos, ou seja, os fluxos IPv4 e IPv6 são separados e o
computador usa um ou outro. Note também que não há comunicação entre o protocolo IPv6 e
IPv4, ou seja, a camada de transporte escolhe enviar seu fluxo por um ou por outro.
Portanto, em uma rede poderemos encontrar dispositivos somente Ipv4, com pilha dupla ou
somente IPv6, sendo que o único que irá conseguir falar com dispositivos remotos tanto com
IPv4 e IPv6 será o que possui a pilha dupla configurada. Veja a próxima figura mostrando na
prática que um host com pilha dupla possui um endereço IPv4 e um IPv6 configurado na
mesma interface de rede.
Na implementação de uma pilha dupla é importante lembrar que as configurações dos recursos
de rede para o IPv4 e IPv6 serão independentes em diversos aspectos, seguem alguns pontos
importantes a serem considerados abaixo:
Informações nos servidores DNS autoritativos, pois as entradas para os servidores IPv6 no
DNS possuem necessidades de configuração específica;
Protocolos de roteamento, pois os roteadores deverão ser configurados para rotear as
redes IPv6, isto não é automático;
Firewalls, pois agora serão necessárias regras de filtragem baseadas também no fluxo
IPv6, sendo que o mesmo vale para os IPSs e IDSs;
Gerenciamento das redes, pois o uso do SNMP exige que os gerenciadores e as MIBs
tenham suporte ao IPv6 e provavelmente configurações específicas serão necessárias.
1.2 Tunelamento
Os túneis tem aplicação para que um fluxo de informações IPv6 consiga chegar ao seu destino
através de uma rede IPv4 e vice-versa. Nesse caso temos dois hosts IPv6, por exemplo,
querendo se comunicar através de uma rede corporativa ou pela Internet, porém essa rede não
tem suporte completo ao IPv6 e por isso não será possível enviar os pacotes diretamente entre
os hosts de origem e destino.
Os túneis criam caminhos, como se fossem tubos, encapsulando o pacote IPv6 dentro de um
pacote IPv4. Veja a figura a seguir, onde usamos como exemplo duas redes IPv6 que desejam
se comunicar utilizando a Internet IPv4. Nesse caso os pacotes enviados pela origem ao sair
pelo roteador que está conectado à Internet são encapsulados, ou seja, inseridos dentro de um
pacote IPv4 e ao chegar do outro lado o cabeçalho do IPv4 é retirado e o destino recebe um
pacote IPv6.
Os túneis podem ser fechados diretamente entre dois hosts, entre dois roteadores ou entre
host/roteador ou roteador/host. Os túneis entre dois roteadores são normalmente chamados
“site-to-site” e permitem a comunicação de vários dispositivos através do túnel.
Tunnel Broker: Este tipo de túnel é fornecido por provedores de serviço e permitem que
dispositivos isolados ou toda uma rede IPv4 obtenham conectividade IPv6 por meio do
estabelecimento de um túnel com um provedor.
6to4: Este túnel, descrito na RFC 3056, permite que redes IPv6 isoladas comuniquem-se
entre si através da rede IPv4 no modo ponto. Existe também o modo conhecido como
multiponto, o qual é chamado de túnel automático ou 6to4. O 6to4 é umas das técnicas de
transição mais antigas em uso e é a técnica que inspirou a criação do 6rd.
GRE: O “Generic Routing Encapsulation” (RFC 2784) é um túnel estático para o transporte
de pacotes IPv6 em redes IPv4. Este túnel foi desenvolvido pela Cisco com a finalidade de
encapsular vários tipos diferentes de protocolos, permitindo uma flexibilidade maior em
termos de roteamento. Basicamente são utilizados para criar túneis roteador a roteador e o
mais interessante do GRE é que ele não depende da infraestrutura da Internet para
funcionar.
As técnicas de tradução permitem que equipamentos usando IPv6 comuniquem-se com outros
configurados com endereço IPv4 por meio da conversão ou tradução dos pacotes de uma
versão para outra, filosofia muito parecida com o que estudamos para o NAT (Network Address
Translation) do IPv4.
Um ponto que deve ser ressaltado é que tanto túneis quanto as técnicas de tradução podem ser
implementadas de maneira stateful ou stateless. Como já vimos no DHCPv6, as técnicas
stateful necessitam da manutenção de tabelas de estado contendo informações sobre os
endereços ou pacotes para processá-los. Já nas técnicas stateless não é necessário guardar
informações, pois os pacotes são tratados de forma independente. Analisando os dois tipos de
técnicas podemos concluir que as stateful são mais caras, pois gastam mais processamento e
memória das máquinas responsáveis por manter as tabelas de estado atualizadas. Por esse
motivo encontramos em diversas bibliografias sobre o IPv6 recomendações para dar preferência
a técnicas stateless, pois elas são mais baratas e escaláveis que as técnicas stateful.
Apesar de não termos precisão desse período de transição entre as versões de IP, o futuro do
IPv4 está com os dias contados. Por isso, as grandes empresas e provedores de Internet estão
se movimentando em direção ao IPv6, pois além de tudo o espaço reservado de endereços IPv4
também está com seus dias contados!
Portanto aproveite a onda do IPv6 e navegue nesse novo ambiente, pois em breve podemos
todos ser convocados para migrar nossos sistemas corporativos ou até mesmo residenciais.
Dual stack: em português “pilha dupla”, ou seja, rodar o IPv6 e IPv4 ao mesmo tempo
em uma mesma interface.
Tunneling ou Tunelamento: o tunelamento pode ajudar que ilhas isoladas em IPv6
atravessem a nuvem IPv4 atualmente que compõe a Internet para poderem se conectar,
ou seja, é encapsular os pacotes IPv6 dentro de pacotes IPv4 para cruzar a Internet.
Translation ou Tradução: a tradução nada mais é que uma extensão do NAT,
chamado de “NAT Protocol Translation” ou “NAT-PT”, utilizado para traduzir endereços
IPv4 em endereços IPv6 e vice versa.
Na prática a implementação da pilha dupla nada mais é do que configurar endereços IPv4 e
IPv6 na mesma interface, ou seja, em uma só interface termos os comandos “ip address” e
“ipv6 address” simultaneamente.
R3-DR(config)#ipv6 unicast-routing
R3-DR(config)#interface FastEthernet0/1
R3-DR(config-if)#ipv6 enable
R3-DR(config-if)#ipv6 address 2000:100::1/64
R3-DR(config-if)#ip address 192.168.1.1 255.255.255.0
R3-DR(config-if)#ipv6 address FE80::1 link-local
R3-DR(config-if)#no shut
R3-DR(config-if)#end
R3-DR#
Hosts configurados com IPv4 e IPv6 geralmente seguem o mesmo processo do IPv4 e precisam
utilizar um servidor DNS para traduzir os nomes de Internet, os quais podem devolver um IPv4
ou IPv6 como endereço da URL pesquisada, assim o host pode utilizar o protocolo de rede
correto para comunicação com o servidor ou host remoto.
Para verificar as configurações do IPv6 utilizamos o “show ipv6 interface brief” ou “show ipv6
interface”.
A configuração nos clientes e mesmo a no roteador Cisco é a mesma que já fizemos no tópico
de implementação, pois o dual-stack nada mais é que ter a pilha IPv4 e IPv6 no mesmo
dispositivo ou host.
Na figura abaixo temos uma representação básica do que é um túnel. Note que temos duas
redes IPv6 que precisam cruzar uma rede IPv4 para se comunicar e para que isso seja possível
um nó de rede configurado com pilha dupla receberá o pacote IPv6 e o colocará dentro de um
pacote IPv4 (como seu payload). Quando o pacote chegar ao seu destino o cabeçalho do IPv4 é
removido e o pacote IPv6 encaminhado dentro da rede IPv6 de destino até o host correto.
Portanto, os túneis são utilizados para criar um caminho virtual entre dois domínios IPv6
através de uma rede IPv4. Nesse tópico vamos estudar os seguintes tipos de túneis IPv6 sobre
IPv4 aplicados a roteadores Cisco:
Os túneis manuais e GRE são considerados manuais e estáticos ponto a ponto, já os demais são
túneis gerados dinamicamente ou “Dynamic Multipoint IPv6 Tunnels” (Túneis IPv6 Multiponto
Dinâmicos).
Os túneis multipontos se comportam como redes multiacesso, parecido com LANs ou redes
NBMA (por exemplo, frame-relay multiponto). A vantagem dos túneis multiponto é que a
decisão sobre o caminho a ser tomado é feita de maneira dinâmica baseada no endereço de
destino, pois o roteador determina o próximo salto dinamicamente, o que resulta normalmente
em menos configurações quando existem diversas localidades em relação aos túneis manuais.
Veja a figura abaixo.
Existem outras técnicas e túneis, por exemplo, como o TEREDO, porém os que vamos estudar
aqui nesse tópico são os suportados pelos roteadores da Cisco.
Por questões de estabilidade (assim como recomendado para o RID do OSPF) podemos utilizar
como origem e destino do túnel interfaces loopback, assim o túnel pode ser fechado mesmo
que a interface caia, porém é necessário haver redundância ou balanceamento de carga ativo.
Os endereços IPv6 são configurados dentro do túnel, assim como configuramos em interfaces
normais, pois ele será transportado pelo túnel. Além disso, nessa topologia o protocolo IPv6
considera o túnel um link ponto a ponto, por isso os endereços IPv6 em cada uma das pontas
do túnel devem estar na mesma subrede.
O comando “tunnel mode ipv6ip” inserido na interface túnel ativa o encapsulamento do IPv6
dentro dos pacotes IPv4. Abaixo seguem os passos para configuração do túnel manual:
Veja um exemplo de configuração abaixo onde será criado um túnel MCT para conectar as
redes IPv6 dos roteador R1 e R2 através de uma rede IPv4. Veja a figura abaixo com a
topologia e o endereçamento e logo a seguir as configurações.
R1(config)#interface loopback 0
R1(config-if)#ip address 10.0.0.1 255.255.255.255
R1(config-if)#interface tunnel 0
R1(config-if)#tunnel source loopback 0
R1(config-if)#tunnel destination 10.0.0.2
R1(config-if)#tunnel mode ipv6ip
R1(config-if)#ipv6 address 2011::1/112
R1(config-if)#ipv6 rip 1 enable
R1(config-if)#end
R1#
R2(config)#interface loopback 0
R2(config-if)#ip address 10.0.0.2 255.255.255.255
R2(config-if)#interface tunnel 0
R2(config-if)#tunnel source loopback 0
R2(config-if)#tunnel destination 10.0.0.1
R2(config-if)#tunnel mode ipv6ip
R2(config-if)#ipv6 address 2011::2/112
R2(config-if)#ipv6 rip 1 enable
R2(config-if)#end
R2#
Para verificar as configurações podemos utilizar o comando “debug tunnel” e “show ipv6
interface tunnel num-túnel” ou “show ipv6 interface brief”, veja exemplo abaixo.
Note no comando acima que o MTU padrão do túnel manual é 1480 bytes, além disso,
normalmente os roteadores utilizam em links seriais para formação de seu endereço de link
local o EUI-64, utilizando o endereço MAC da primeira interface LAN disponível no roteador.
Porém, nesse caso da interface túnel podemos notar que o prefixo do link local FE80::/96 tem
um valor diferente, o qual é formado pelos 32 bits do endereço IPv4 de origem configurado no
túnel. Veja que na interface temos o endereço FE80::A00:1, se escrevermos apenas o ID de
interface em formato completo teremos 0A00:0001, convertendo para decimal pontuado (32
bits dividido em 4 octetos: 00001010.00000000.00000000.00000001) teremos o IP 10.0.0.1.
Outro teste que pode ser feito para verificar se o túnel está sendo utilizado para enviar os
pacotes das redes LAN entre R1 e R2 é o “traceroute 2001::1” a partir do roteador R1 e
verificar se realmente a interface túnel está sendo utilizada para o envio dos pacotes Ipv6.
Os pacotes designados para serem enviados através do túnel (já encapsulados com um
cabeçalho de um protocolo como, por exemplo, o IP) são encapsulados por um novo cabeçalho
(cabeçalho GRE) e colocados no túnel com o endereço de destino do final do túnel. Ao chegar a
este final, os pacotes são desencapsulados (retira-se o cabeçalho GRE) e continuarão seu
caminho para o destino determinado pelo cabeçalho original. Veja a figura abaixo com o
diagrama do GRE.
Flag GRE
Tipo de protocolo
Ele utiliza um campo de tipo de protocolo no cabeçalho GRE para suportar o encapsulamento de
diferentes protocolos de camada 3. O cabeçalho GRE, juntamente com o cabeçalho IP de
encapsulamento, cria pelo menos 24 bytes de overhead adicional para os pacotes encapsulados
(bytes a mais quando comparado a um pacote IP normal). Veja a figura abaixo.
Vamos a configuração utilizando como base a figura a seguir. Nesse exemplo faremos a
configuração de um túnel GRE entre os roteadores R1 e R4 para fazer a comunicação entre as
redes IPv4 privativas 10.1.1.0/24 de R1 e 10.2.2.0/24 de R4 sem anunciá-las aos outros
roteadores, também faremos as redes IPv6 200:100::/48 e 2001:100::/48 trafegarem
simultaneamente utilizando o processo de tunelamento GRE, porém sem criptografia.
Etapa 1: Criar uma interface do túnel (comando “interface Tunnel x” – x é o número do túnel,
como na criação de uma loopback);
Etapa 2: Atribuir os endereços IPv4 e IPv6 ao túnel (comandos “ip address” e “ipv6 address");
Etapa 3: Configurar a interface de túnel de origem (comando “tunnel source Serialx/y”
podendo ser também um endereço IPv4 alcançável);
Etapa 4: Identificar o IP de destino do túnel (comando “tunnel destination x.x.x.x”);
Etapa 5: Configurar qual protocolo de camada-3 o GRE vai encapsular (comando “tunnel mode
gre IP”).
R1#config term
R1(config)#ipv6 unicast-routing
R1(config)#interface Tunnel0
R1(config-if)#ip address 1.1.1.1 255.255.255.252
R1(config-if)#ipv6 address 2002:100::1/64
R1(config-if)#ipv6 rip 1 enable
R1(config-if)#tunnel source Serial0/0
R1(config-if)#tunnel destination 200.2.2.2
R1(config-if)#tunnel mode gre ip
R1(config-if)#end
R1#
R4#config term
R4(config)#ipv6 unicast-routing
R4(config)#interface Tunnel0
R4(config-if)#ip address 1.1.1.2 255.255.255.252
R4(config-if)#ipv6 address 2002:100::2/64
R4(config-if)#ipv6 rip 1 enable
R4(config-if)#tunnel source Serial0/0
R4(config-if)#tunnel destination 200.1.1.2
R4(config-if)#tunnel mode gre ip
R4(config)#end
R4#
Com a configuração acima, quando um micro da LAN de R1 quiser se comunicar com outro
micro remoto da LAN de R4 através do protocolo IPv6 ou IPv4, e vice versa, o pacote será
encapsulado dentro de um túnel GRE e será desmontado apenas quando chegar em seu
destino. Com essa configuração os demais roteadores não precisam saber da existência das
redes IPv4 10.1.1.0 e 10.2.2.0 ou das redes IPv6 configuradas nos roteadores R1 e R4,
precisando conhecer apenas as redes WAN dos roteadores em questão.
Para verificar um túnel GRE podemos utilizar os mesmos comandos utilizados para o túnel
manual, veja exemplo abaixo.
Note que o MTU do túnel GRE é 1476 bytes e para a formação do endereço de link local é
utilizado o prefixo FE80::/64 com o EUI-64 formado a partir do endereço MAC da primeira
interface local do roteador, veja a saída abaixo.
Lembre que o GRE faz apenas o encapsulamento e não oferece nenhuma proteção aos dados
trafegados. Para isso seria necessário a utilização do IPSEC ou qualquer outro protocolo para
criptografar as informações.
Algumas condições devem estar estabelecidas para que o túnel GRE fique “UP”:
A maior vantagem do túnel GRE em relação ao túnel manual é sua flexibilidade, pois com um
único túnel GRE podemos transportar além do IPv6 vários outros tráfegos, recurso que os
túneis configurados manualmente (MCT) não suportam.
Normalmente os túneis 6to4 utilizam a faixa de endereçamento 2002::/16, dedicada aos túneis
6to4, porém também suportam o uso de endereços globais de unicast com alguma
configurações extra em relação à faixa dedicada, o que estudaremos no próximo tópico desse
capítulo.
O endereçamento dos túneis 6to4 automáticos deve ser planejado antes da sua implantação,
sendo que o endereço IPv4 da interface é armazenado no segundo e terceiro quarteto do
endereço IPv6 (normalmente uma interface loopback). Para o planejamento partimos do
endereço 2002::/16 e com o endereço IP derivamos um /48 (o endereço IP tem 32 bits mais o
/16 original temos um /48), a partir daí podemos utilizar IDs de interface de 64 bits e sobram
16 bits para subrede, veja figura abaixo.
Portanto iniciamos escolhendo os endereços IPv4 que servirão como origem (source address)
para alocar as redes e subredes. A alocação dos endereços IPv6 iniciam com o endereço do
túnel, o qual é o prefixo 2002:: mais o endereço ipv4 da interface loopback convertido em
hexadecimal com uma máscara /128. Depois com essa mesma base de endereço podemos
utilizar as subredes para definir as redes internas daquele roteador. O mesmo será feito nos
roteadores remotos. Veja exemplo na figura abaixo.
Note que para cada localidade fizemos quatro passos para o endereçamento:
1. Determinação do IPv4 da interface loopback que servirá como base para os túneis
(source address);
2. Converter o IPv4 para hexadecimal e determinar a rede /48 que será utilizada naquele
em cada roteador;
3. Determinação da subrede que será utilizada para endereçar a rede local que deve se
comunicar uma com as outras através dos túneis;
4. Determinação dos endereços que serão utilizados nos túneis e identificarão cada uma
das localidades.
A configuração é bem parecida com o que fizemos para os exemplos anteriores, porém não
vamos agora utilizar o comando para definir o destino dos túneis (tunnel destination), pois eles
são formados automaticamente. Para configurar o túnel como 6to4, dentro da interface túnel
utilizamos o comando “tunnel mode ipv6ip 6to4”. Veja as configurações passo a passo do
roteador R1 abaixo:
R1(config)#ipv6 unicast-routing
R1(config)#! Criando a interface loopback
R1(config)#interface Loopback10
R1(config-if)#ip address 10.9.9.1 255.255.255.255
R1(config-if)#!
R1(config-if)#! Criando o túnel 6to4
R1(config-if)#interface Tunnel10
R1(config-if)#no ip address
R1(config-if)#ipv6 address 2002:a09:901::/128
R1(config-if)#tunnel source Loopback10
R1(config-if)#tunnel mode ipv6ip 6to4
R1(config-if)#!
R1(config-if)#! Configurando o endereço IPv6 na LAN de R1
R1(config-if)#interface FastEthernet0/0
R1(config-if)#ipv6 address 2002:A09:901:1::1/64
R1(config-if)#ip address 10.1.1.1 255.255.255.0
R1(config-if)#exit
R1(config)# ! Configurando rota estática para a rede 2002::/16
R1(config)#ipv6 route 2002::/16 Tunnel10
Na prática o comando “tunnel mode ipv6ip 6to4” fala para roteador R1 olhar o segundo e
terceiro quartetos do endereço IPv6 de destino e encontrar o endereço IPv4 de destino
para o fechamento do túnel, por isso não precisamos configurar o comando “tunnel
destination”. Por exemplo, quando damos a partir de R1 um “ping 2002:A09:904:4::1”
queremos alcançar a LAN do roteador R2, com isso R1 analisa os dois quartetos em
hexadecimal “A09:904”, convertendo em decimal pontuado para encontrar o IPv4 de destino
para fechamento do túnel: “A09:904 = 0A09:0904 = 0000101000001001:0000100100000100
= 00001010.00001001.00001001.00000100 = 10.9.9.4”. Portanto, R1 sabe que tem que usar
como destino do túnel 10.9.9.4 sem a necessidade de configuração prévia. Se você lembrar do
GRE ou do túnel manual precisaríamos configurar um túnel ponto a ponto entre cada uma das
localidades.
Veja que o último comando definiu uma rota estática apontando para a rede 2002::/16, pois
essa é uma das limitações dos túneis 6to4 automáticos, ou seja, eles não suportam os IGPs
IPv6 e somente podem ter seu alcance configurado via rota estática ou MP-BGP. Veja a saída
do comando “show ipv6 int brief” e da tabela de roteamento IPv6 abaixo.
Note que no comando “show ipv6 interface brief” podemos confirmar o endereço IPv6
configurado dentro da faixa 2002::/16 e o endereço de link local, o qual foi derivado do
endereço configurado na interface Tunnel10 com o prefixo FE80::/96, porém utiliza os últimos
dois quartetos do endereço IPv4 convertido em hexadecimal.
Com o comando traceroute podemos testar se os túneis estão sendo fechados corretamente e
encaminhados para as localidades corretas, veja exemplo abaixo.
Veja a figura abaixo com um exemplo prático de configuração do túnel 6to4 com endereços
globais unicast. Note que a configuração das loopbacks e dos túneis continuarão os mesmos, o
que está variando são os endereços das LANs de R1, R2 e R3.
Vamos analisar o fluxo através da figura acima. Tudo começa quando o PC1 faz um ping para o
PC3 (1), o qual está conectado ao roteador R3. Quando o roteador recebe o pacote (2) ele
analisa a tabela de roteamento e encontra o próximo salto (next hop) para a rede
2000:0:1:3::/64 apontando para o túnel zero e relacionado ao IPv6 de R3
(2002::a09:903::/128), o qual é resolvido pela rota estática, como configuramos no exemplo
anterior, apontando a rede 2002::/16 para a interface túnel 0.
Portanto, as diferenças agora são os IPv6 configurados nas interfaces LAN e a adição de duas
rotas estáticas para que R1 saiba encaminhar para as LANs de R2 e R3:
R1(config)#ipv6 unicast-routing
R1(config)#! Criando a interface loopback
R1(config)#interface Loopback0
R1(config-if)#ip address 10.9.9.1 255.255.255.255
R1(config-if)#!
R1(config-if)#! Criando o túnel 6to4
R1(config-if)#interface Tunnel0
R1(config-if)#no ip address
R1(config-if)#ipv6 address 2002:a09:901::/128
R1(config-if)#tunnel source Loopback0
R1(config-if)#tunnel mode ipv6ip 6to4
R1(config-if)#!
R1(config-if)#! Configurando o endereço IPv6 global na LAN de R1
R1(config-if)#interface FastEthernet0/0
R1(config-if)#ipv6 address 2000:0:1:1::1/64
R1(config-if)#ip address 10.1.1.1 255.255.255.0
R1(config-if)#exit
R1(config)# ! Configurando rota estática para a rede 2002::/16
R1(config)#ipv6 route 2002::/16 Tunnel0
R1(config)#ipv6 route 2000:0:1:3::/64 tunnel0 2002:a09:903::
R1(config)#ipv6 route 2000:0:1:4::/64 tunnel0 2002:a09:904::
As rotas remotas podem ser aprendidas apenas via rota estática ou BGP. Também continua
valendo a mesma regra que estudamos anteriormente de que os IGPs não são passados via
túnel 6to4.
O endereço do túnel ISATAP combina o prefixo da rede, com 0000:5EFE nos quartetos 5 e 6
mais o endereço IPv4 de 32 bits da interface de origem inserido nos dois últimos quartetos do
IPv6 (quartetos 7 e 8).
O endereços de link-local da interface ISATAP utiliza o prefixo FE80::/64 e como host ID utiliza
0000:5EFE seguido do endereço IPv4 nos últimos octetos, da mesma forma que o endereço
global é formado. Por exemplo, se o túnel tem o IPv4 de origem 10.8.8.8 seu endereço IPv6 de
link local será FE80::5EFE:A08:808. Ainda considerando o mesmo exemplo, suponha que o
prefixo de rede utilizado é 2001:1:2:3::/64, portanto o túnel ISATAP terá o endereço
2001:1:2:3:0:5EFE:A08:808.
Os túneis ISATAP não suportam multicast e precisam ser configurados com rota estática ou BGP
se o destino do túnel está em uma subrede IPv6 diferente, semelhante ao que fizemos para os
túneis 6to4 que utilizam endereços globais unicast.
R1(config)#ipv6 unicast-routing
R1(config)#!
R1(config)#interface Loopback1
R1(config-if)#ip address 10.9.9.1 255.255.255.255
R1(config-if)#!
R1(config-if)#interface Tunnel9
R1(config-if)#no ip address
R1(config-if)#ipv6 address 2000:0:1:9::/64 eui-64
R1(config-if)#tunnel source Loopback1
R1(config-if)#tunnel mode ipv6ip isatap
R1(config-if)#!
R1(config-if)#interface FastEthernet0/0
R1(config-if)#ip address 10.1.1.1 255.255.255.0
R1(config-if)#ipv6 address 2000:0:1:1::1/64
R1(config-if)#exit
R1(config)#ipv6 route 2000:0:1:3::/64 2000:0:1:9:0:5EFE:A09:903
R1(config)#ipv6 route 2000:0:1:4::/64 2000:0:1:9:0:5EFE:A09:904
Note que a configuração do endereço IPv6 da interface túnel deve ser realizada definindo
apenas um prefixo e a opção “eui-64”. Além disso, não utilizamos o comando “tunnel
destination” e o alcance aos destinos remotos foram definidos com rotas estáticas.
Veja abaixo a saída dos comandos “show ipv6 int brief” e “show ipv6 route”.
Loopback1 [up/up]
unassigned
Tunnel9 [up/up]
FE80::5EFE:A09:901
2000:0:1:9:0:5EFE:A09:901
O NAT-PT faz a tradução bidirecional entre endereços IPv4 e IPv6, recomendado quando hosts
utilizando o IPv4 tem a necessidade de estabelecer uma sessão com hosts configurados com
IPv6 e vice-versa. Se os hosts se comunicam usando nomes de DNS um aplicativo como o DNS
ALG (DNS Application Layer Gateway) pode resolver nomes para endereços IPv4 e IPv6.
1. O PC1 envia um pacote IPv6 para o destino 2333::1 e origem 2111::1 (seu próprio
endereço IPv6). O IPv6 2333::1 está configurado em R1, o qual receberá essa
mensagem.
2. O roteador R1 está com o NAT-PT configurado e está “escutando” as requisições ao
destino 2333::1, ao receber a mensagem o roteador R1 converte o cabeçalho IPv6 para
outro pacote no padrão IPv4.
3. O pacote IPv4 é encaminhado pela rede até o servidor S1.
4. Por sua vez o servidor S1 recebe a requisição, processa e envia uma resposta através de
um pacote IPv4 em direção ao endereço (que ele “pensa” que é do host PC1) com
origem 10.2.2.2 e destino 10.9.9.1. O endereço 10.9.9.1 está na realidade configurado
em R1, portanto é ele quem recebe esse pacote IPv4 através da rede IPv4.
5. Quando R1 recebe o IPv4 10.9.9.1 ele converte o pacote para o padrão IPv6, pois ele
está com o NAT-PT configurado.
6. Por último, o roteador R1 encaminha o pacote IPv6 para o host PC1, o qual “pensa” que
se comunicou com um servidor IPv6.
O NAT-PT pode ser estático ou dinâmico, assim como para o IPv4 temos o NAT estático e o
PAT, veja a seguir maiores informações e os comandos utilizados em cada um dos casos.
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#ipv6 nat v6v4 source 2333::1 10.2.2.2
R1(config)#ipv6 nat v4v6 source 10.9.9.1 2111::1
R1(config)#end
R1#
R1#sho ipv6 nat translations
Prot IPv4 source IPv6 source
IPv4 destination IPv6 destination
--- --- ---
10.9.9.1 2111::1
Para criar um pool de NAT-PT para tradução de endereços IPv4 em endereços IPv6 temos que
definir o pool e depois configurar a tradução com os comandos abaixo:
Para criar um pool e habilitar o NAT-PT para traduzir endereços IPv6 em endereços IPv4
também devemos definir a faixa de endereços a serem utilizados na tradução e a origem que
será traduzida com os comandos abaixo:
Podemos também utilizar o parâmetro “overload” para traduzir utilizando IPs e números de
porta TCP e UDP, por exemplo, podemos fazer a tradução de IPv6 para IPv4 utilizando o IP de
uma interface com overload.
Ele trabalha em conjunto com uma técnica auxiliar para a conversão do DNS chamada DNS64,
definida na RFC 6147.
O NAT64 e DNS64 São sistemas distintos que trabalham em conjunto na tradução tanto dos
endereços IPv6 em IPv4, como na tradução da requisição DNS realizada pelo cliente IPv6.
O NAT64 faz tradução de endereços IPv4 em IPv6 conforme RFC 6052, onde dos bits 64 a 71
são reservados para a compatibilidade de identificação de host conforme a RFC 4291 e devem
ser zeros. Já o prefixo IPv6 pode ser escolhido pela operadora, mas é recomendada a utilização
do prefixo 64:ff9b::/96, reservado especificamente para a utilização em algoritmos de
mapeamento de endereços IPv4 em IPv6. Por exemplo, o IPv4 de um host IPv4 200.0.103.1
seria convertido para o endereço IPv6 64:ff9b::200.0.103.1 pelo NAT64 e repassado ao cliente
IPv6.
Veja a figura a seguir com um exemplo de funcionamento do NAT64 e DNS64. Nesse exemplo o
host (GGNS) solicita ao DNS64 pelo nome “nome.ex”, o qual descobre que esse nome não
existe como IPv6 (consulta AAAA dá erro) e descobre que o host tem IPv4 1.2.3.4 (A). Ao
repassar para o host IPv6 envia o IPv4 do host convertido para 64:ff9b::1.2.3.4. Nesse
momento o host envia para seu gateway, um roteador com NAT64 habilitado, o qual reconhece
a solicitação e traduz do IPv6 64:ff9b::1.2.3.4 para um pacote IPv4 com endereço de destino
1.2.3.4. No retorno realizado pelo host remoto 1.2.3.4 o gateway NAT64 traduz o IPv4 1.2.3.4
para o IPv6 64:ff9b::1.2.3.4 e envia para o host IPv6 solicitante.
O suporte ao DNS64 está suportado por diversos servidores DNS, por exemplo, no BIND9 um
dos serviços de DNS mais utilizados globalmente na Internet. Para ativar o DNS64 no BIND é
extremamente simples, basta adicionar as seguintes opções na configuração atual do servidor e
depois reiniciar o serviço:
options {
dns64 64:ff9b::/96 {
clients {any;};
mapped {any;};
suffix ::;
recursive-only yes;
break-dnssec yes;
};
O NAT64 é suportado por vários fabricantes de dispositivos de rede, tais como Cisco e Juniper,
assim como podem ser instalados em servidores Linux. O Windows Server 2012 também
suporta de forma nativa o NAT64 e DNS64. Em dispositivos Cisco o NAT64 é suportado pelo
ASR1000 Cisco IOS XE ou dispositivos com Cisco IOS XR.
Capítulo 5 - Conceitos de
Segurança no IPv6
Em muitos sistemas
operacionais e dispositivos
de rede o IPv6 já vem Objetivos do Capítulo
habilitado por padrão, com
Ao final do capítulo você terá estudado os
preferência em relação ao conceitos básicos de segurança envolvidos
IPv4 e configurado para em redes IPv6:
pegar endereços via um
DHCPv6 ou Principais problemas de segurança
autoconfiguração. Portanto IPv6
First Hop Security – segurança no
mesmo que você afirme:
primeiro salto
“Na rede onde trabalho não Mecanismos e dispositivos de
utilizamos IPv6!”, se o segurança para redes IPv6
protocolo não foi Cuidados gerais com a
desabilitado ou inserido implementação do IPv6
filtros nos dispositivos de
rede a resposta correta é:
“Sim, utilizamos mas está
na configuração padrão!”.
Sumário do Capítulo
Outro importante fato é que a rede IPv6 foi desenhada para ser fim a fim com endereços
válidos de Internet, sem o uso de redes privativas e NAT, o que acaba no IPv4 protegendo os
hosts internos com o endereçamento RFC1918, pois esses endereços não são válidos na
Internet. Esse desafio será enfrentado tanto por empresas como usuários residenciais, pois os
hosts ficarão muito mais suscetíveis às invasões.
Outros sistemas operacionais como o Mac OS X da Apple, Linux e Solaris também apresentam
suas últimas distribuições com o IPv6 habilitado.
Portanto, o que devemos fazer em redes corporativas ou até com nossos dispositivos que
possuem sistema operacional com suporte ao IPv6 nativo e habilitado por padrão? Devemos
deixar habilitado ou não?
Essa ainda é uma resposta controversa, pois muitos especialistas recomendam não desabilitar o
IPv6 e iniciar a adaptação da equipe de TI com esse novo protocolo, porém de maneira
sistemática, ou seja, com planejamento e sempre levando em conta que será necessário
estabelecer padrões e políticas para que esse tráfego seja auditado e reconhecido pelos
dispositivos de segurança já implementados para o IPv4.
Existe outra linha mais radical de especialistas, principalmente da área de segurança, que
recomendam não ativar o protocolo se não for realmente uma necessidade, pois vale a regra
simples de se o protocolo não tem uso real não deve ser habilitado na rede.
Como já citamos várias vezes durante o curso, muitos sistemas operacionais já tem o protocolo
IPv6 habilitado por padrão, por isso se nada foi feito os computadores da sua empresa ou da
sua casa que tem um desses sistemas operacionais instalados já estão com o suporte ao IPv6 e
pode sim sofrer muito facilmente um ataque.
É importante lembrar que o IPv6 não é um protocolo maduro como o IPv4, por isso existem
muitos riscos que ainda nem sabemos e são descobertos dia a dia. Devido a esse fato da
maturidade do protocolo, existem riscos muito simples e básicos, tal como inserir um
computador com DHCPv6 que em seu escopo esteja o IP de um DNS falso, que aponte para o
próprio computador, o qual fará o redirecionamento de Websites para o próprio computador do
atacante.
O ataque citado acima é tão simples que parece impossível acontecer, porém se sua rede não
estiver preparada para o IPv6 ele pode sim ser facilmente implementado e possibilitar a
espionagem e até mesmo captura de usuários e senhas que dão acesso a sistemas ou
informações pessoais dos usuários de rede.
Podemos classificar os problemas com a implantação do IPv6 não somente com riscos com
ataques feitos por hackers, mas também com erros de configuração ou ativação de recursos em
hosts que podem causar sérios problemas. Por exemplo, se houver IPv6 configurado em uma
placa de rede do Windows e for realizado o compartilhamento da Internet por essa interface
esse host fará a alocação de IPv6 para os clientes que estiverem na mesma subrede, se você
tem IPv6 já implantado teremos hosts recebendo IPs do roteador ou DHCPv6 padrão e também
do computador com a Internet compartilhada.
A maioria dos riscos mais iminentes está no primeiro salto (first hop), ou seja, na rede local.
Outros riscos como ataques de man-in-the-middle, quebra de senhas por força bruta, sniffing
de redes (captura de pacotes), etc., continuam existindo. No entanto, vamos verificar que os
novos riscos são os mais importantes, pois são vulnerabilidades simples de serem exploradas
pela falta de cuidado ou de informação pelos administradores de redes acostumados com o
IPv4 e ainda não ao IPv6.
Esse assunto é vasto e nossa intenção com esse capítulo é abrir os olhos dos alunos para essa
nova realidade, principalmente para quem já administra redes com clientes e servidores “IPv6
Ready”. Tenha em mente que o IPv6 pode ser um tráfego invisível se seu sistema de
monitoração e segurança não reconhece esse protocolo!
As vulnerabilidades mais comuns do IPv6 podem ser classificadas nos cinco grupos abaixo:
O pacote de ferramentas para testar vulnerabilidade em redes IPv6 é o THC-IPV6, o qual traz
ferramentas para explorar muitas das vulnerabilidades que trataremos nesse capítulo. O pacote
está disponível para o Linux no link abaixo:
http://www.thc.org/download.php?t=r&f=thc-ipv6-2.3.tar.gz
As informações sobre o que está disponível nesse pacote está disponível no link abaixo:
http://www.thc.org/thc-ipv6/
E se você ainda não conhece muito de linux não deixe de conferir nossos cursos online linux.
O que é necessário fazer dentro de sistemas de prevenção de intrusão (IPS) ou dos firewalls é
analisar com cuidado o tráfego IPv6 e bloqueá-lo se não estiver implementado dentro da rede e
com o tempo, após iniciar a implementação segura na rede interna, criar regras e políticas
claras para entrada e saída desse tráfego.
1. Teredo
2. 6to4
3. Intra-Site Automatic Tunnel Addressing Protocol (ISATAP)
Note na saída do comando “netsh interface ipv6 show address” abaixo de um computador com
o Windows 7 e em destaque os túneis que são criados por padrão. Temos na interface 13 um
túnel Teredo e nas interfaces 12, 14 e 15 temos túneis ISATAP.
Esses túneis permitem, portanto, que pacotes IPv6 sejam encapsulados em pacotes IPv4 e
atravessarem os firewalls ou roteadores NAT, mesmo que você bloqueie o tráfego IPv6 em seu
firewall, uma vez que para o gerenciamento de redes pacotes IPv6 tunelados parecem com
pacotes IPv4 normais, sendo liberados pela política de segurança padrão.
Nesse caso, os administradores de rede necessitam utilizar o “deep packet inspection” (DPI –
inspeção profunda de pacotes) em seus firewalls ou IPS’s para que os pacotes sejam analisados
e verificados se não existe tráfego IPv6 tunelado sendo enviado através da rede. Especialistas
de segurança perceberam que "ataques tradicionais ao IPv4" tiram vantagem do tunelamento
IPv6 para entrar na rede, uma vez que o tráfego tunelado não é inspecionado por padrão.
Com esse dispositivo falso ou pirata o hacker pode configurar sua própria rede IPv6 e os hosts
irão assumir que ele é um roteador IPv6 válido, possibilitando que TODO o tráfego seja
redirecionado a esse dispositivo pirata, permitindo que esse tráfego seja espionado, alterado ou
até mesmo bloqueado. Veja a figura a seguir com um exemplo onde um atacante envia seu
próprio endereço como rota padrão para um host da rede sobrescrevendo a informação anterior
enviada pelo roteador válido de rede.
Outro risco está no envio de mensagens do protocolo de vizinhança do IPv6, o NDP, para
causar negação de serviços (DoS - denial-of-service), uma vez que por padrão se um host
recebe uma mensagem de solicitação de roteador (NS – Neighbor Solicitation) ele deve
responder com um anúncio de vizinhança (NA – Neighbor Advertisement). Com o envio de
varias dessas mensagens é possível fazer com que hosts ou servidores ocupem muita memória
e processador e simplesmente parem de responder.
Outro problema é que a fragmentação pode ser utilizada para dificultar ou simplesmente passar
de forma transparente às técnicas de mitigação de riscos implementadas em dispositivos como
switches de acesso, pois como implementar uma técnica que analise uma mensagem que foi
quebrada em dois ou mais fragmentos antes do envio ao host de destino? Por exemplo, se o
switch tiver um mecanismo que filtra mensagens de RA o atacante pode enviar as mensagens
em pacotes fragmentados que o switch de acesso onde a facilidade está implantada não
conseguirá distinguir que o que está sendo enviado é realmente uma mensagem de RA.
Outros riscos existem com pacotes mal formados e bits do cabeçalho, porém não entraremos
nesses detalhes por estarem além do pretendido com esse curso.
Uma mudança do IPv6 em relação ao IPv4 é que o Internet Control Message Protocol versão 6
(ICMPv6) suporta tráfego multicast de maneira nativa, ou seja, o ICMPv6 trata por padrão o
multicast uma vez que não existe mais broadcast no IPv6.
Esses dois tipos de tráfego são parte integral do funcionamento do IPv6 works, portanto,
diferente do IPv4 os administradores de rede não podem simplesmente bloquear o ICMP e o
multicast. Com o IPv6 os administradores de rede terão que realizar o ajuste fino nos filtros
para esses tipos de tráfego em seus roteadores e firewalls para permitir o tráfego seguro das
mensagens indispensáveis que serão utilizadas pelos hosts e dispositivos de rede.
Por exemplo, se você bloquear totalmente a troca de ICMPv6 simplesmente não haverá mais
alocação dinâmica de IPs, pois o DHCPv6 precisa das mensagens de RA e o envio dos bits O/M
setados conforme o tipo de serviço a ser utilizado na rede.
Quando falamos em segurança no primeiro salto em redes IPv4 praticamente todos os switches
layer 2 ou 3 gerenciáveis possuem recursos que permitem administrar essas vulnerabilidades,
pois o IPv4 já é um protocolo maduro e tem uma configuração de endereços bem definida.
As principais ameaças em redes IPv4 no primeiro salto são servidores DHCP piratas (rogue
DHCP), os quais possibilitam o encaminhamento de tráfego para espionagem ou roubo de
informações como usuários e senhas, spoofing (falsificação) de endereços MAC e/ou IPv4
(falsificar endereços) e ARP poisoning.
Essas ameaças são tratadas no IPv4 através de recursos como DHCP Snooping (definir portas
que podem responder a requisições de IP), proteção e inspeção do protocolo ARP, segurança
em portas de acesso, Dynamic IP lockdown e IP source guard (permitem que os IPs sejam
validados através da tabela MAC e bloqueados em caso de falsificação).
No IPv6 o ARP foi substituído por recursos do ICMPv6, mais especificamente pelo NDP e a
alocação de endereços dinâmicos pode ser realizada por diversos métodos, sendo que o padrão
é através da autoconfiguração e mensagens de RA e RS, também parte do ICMPv6 e do NDP.
Portanto, como existem novos processos entre o usuário final e seu primeiro salto precisamos
de novos recursos de segurança, pois temos novas ameaças em um ambiente de rede IPv6. Os
principais riscos que uma rede IPv6 apresenta em seu primeiro salto são:
As maneiras mais simples de tratar essas ameaças é desabilitando o IPv6 nos clientes e
servidores de rede, desse modo mesmo que um atacante tente ele não conseguirá invadir
nenhum dispositivo, porém não haverá tráfego IPv6 algum na rede. Essa solução é radical, pois
no momento que a empresa decidir utilizar o IPv6 os administradores de rede terão que
reabilitar os serviços em todos os hosts.
Outra solução é bloquear todo tráfego nos dispositivos de rede, por exemplo, bloquear no
firewall que faz a conexão com a Internet o envio e recebimento de pacotes IPv6, assim como
fluxo de IPv6 tunelado em IPv4. Porém, isso não impede o fluxo do IPv6 na LAN, por isso os
switches de acesso também precisarão reconhecer o tráfego IPv6 e ter a capacidade de
implementação de listas de controle de acesso ou filtros em suas portas de acesso onde os
hosts estão conectados.
A segunda solução também é radical, porém menos que a primeira, pois o IPv6 continuará
habilitado nos hosts e apenas bloqueado nos dispositivos de redes. Porém em ambos os casos
estamos tratando de uma rede IPv4 que não possui ainda previsão para implantação do IPv6,
mas e se formos implementar o IPv6, quais os recursos de segurança de primeiro salto que
podemos utilizar contra esses ataques mais comuns?
Caso seja necessário implantar o IPv6 os recursos mais discutidos até o momento são:
SAVI
SEND
RA Guard
ACL/PACL
A seguir vamos estudar cada um desses recursos de segurança para redes IPv6. Na sequência
vamos estudar outros riscos que devem ser mitigados na implantação do IPv6.
O SAVI trata-se de uma série de técnicas complexas para filtragem de tráfego entrante de
forma granular e padronização para validação dos endereços IPs de origem. O framework tem
opções de proteção para DHCP servers e aplica mecanismos parecidos com o DHCP snooping
utilizado no IPv4. Seu suporte está limitado ao DHCPv4 e DHCPv6 e não trata de problemas
como mensagens falsas de RA enviadas por roteadores intrusos (piratas).
O SAVI é suportado por dispositivos da HP série A e é muito similar a uma técnica chamada
“ND Inspection” disponível em dispositivos do fabricante Cisco.
Como o próprio nome diz o SEND é a troca segura de mensagens do protocolo NDP.
O SEND tem como base o uso de pacotes autenticados e uso de métodos de criptografia, sendo
implementado nos roteadores e normalmente não necessita de suporte nos switches de acesso,
reduzindo seu custo de implantação. Portanto, com o SEND as mensagens normais de
vizinhança não são mais utilizadas, ele estabelece uma nova série de mensagens e
procedimentos.
No SEND uma cadeia de certificados é utilizada para certificar a autoridade dos roteadores,
gerando a necessidade de uma estrutura de chaves públicas para realizar essa autorização.
Além disso, os hosts não utilizam mais endereços estáticos ou EUI-64 e passa a utilizar
endereços CGA, os quais são gerados criptograficamente.
Outro problema é verificar se os sistemas operacionais dos clientes IPv6 da rede suportam o
SEND, pois atualmente ele não é amplamente suportado.
A terceira alternativa é chamada de RA Guard (RFC 6105) e trata apenas do problema de envio
de anúncios de roteadores falsos. É uma técnica similar ao DHCP snooping do IPv4, porém com
foco em mensagens de anúncio de roteadores (RA - Router Advertisement).
Portanto, as portas com o RA Guard ativado não poderão receber esse tipo de anúncio, sendo
que somente a porta onde realmente o roteador autorizado a enviar mensagens de RA ficará
liberada.
A Cisco tem esse recurso implementado em algumas das suas linhas de switch, por exemplo,
em switches da linha 6500.
As listas de controle de acesso (ACL ou PACL - Port access list) são regras de filtragem que
podem ser implementadas nas portas dos switches para filtrar o tráfego indesejado, porém
somente se suportada pelos switches de acesso.
Com essa técnica um administrador de redes pode configurar, por exemplo, uma ACL
bloqueando todo tráfego ICMPv6 com mensagens do tipo 134 (mensagens de RA) e também o
tráfego UDP direcionado à porta 546 (dhcpv6-client) na porta onde clientes estão conectados e
eliminar o risco com roteadores ou servidores DHCP intrusos.
A maior dificuldade é que esse recurso está disponível em uma pequena linha de switches de
mercado atualmente, além disso, nos que estão disponíveis o custo de aquisição ainda é
relativamente alto.
Existem propostas em análise para solucionar essa falha, porém especialistas de segurança
acreditam que não devem ser lançadas em curto prazo.
Na tabela a seguir temos um resumo das ameaças e recursos que podem mitigar cada uma
delas.
Abaixo segue uma lista de ameaças, além das citadas, que estão no primeiro salto e algumas
precauções para evitá-las:
o O IPv6 não terá mais os endereços privativos e NAT para esconder as deficiências
dos sistemas de segurança e falhas nos diversos aplicativos e sistemas dos
computadores dos usuários
o Os firewalls e demais sistemas de segurança devem estar preparados para tratar
esse tráfego que nas redes IPv4 está limitado às DMZ’s (zona desmilitarizada
onde são inseridos os servidores que devem estar expostos à Internet)
o Nas corporações os firewalls Statefull podem evitar esse tipo de ataque e em
usuários residenciais os personal firewalls também podem ajudar nesse tipo de
situação
Vírus e Worms
Sniffing
Ataques ao ICMPv6
o Mesmo com IPsec implementado esses tipos de ataque não podem ser evitados
sem o uso de dispositivos como firewalls e sistemas de detecção e prevenção de
intrusão (IPS e IDS)
o Ataques de Man-in-the-Middle Attacks (MITM) sem IPsec tem as mesmas
características que para o IPv4 e o IPv6 também está sujeito a essa
vulnerabilidade
Flooding ou inundação
Vários riscos inerentes ao próprio protocolo ainda não foram resolvidos e surgem mais e mais
vulnerabilidades com o crescente uso do IPv6. Em comparação com o IPv4 surgem quase que o
dobro ou até o triplo de ameaças reportadas em relação ao IPv6 quando comparamos com o
IPv4 entre 2012 e início de 2013.
Isso se deve ao fato dos fabricantes ainda estarem em fase de implementação e testes das
RFCs que recomendam o IPv6, portanto é normal um período de turbulência.
Apesar desse fato muitos especialistas recomendam o início da adoção do IPv6 nas redes para
que as equipes de TI possam ir se habituando com a operação e dia a dia do protocolo. No
entanto, lembrem-se do que já estudamos nesse capítulo que essa implantação requer várias
análises sobre o suporte dos dispositivos de redes atuais para resolver vulnerabilidades que
podem ser exploradas de forma muito simples.
Os dispositivos de segurança, como firewalls, IPS e IDS devem ser preparados para o suporte
ao IPv6 no caso da implementação do protocolo na rede corporativa, porém mesmo que sua
rede ainda não esteja em fase de implementação é importante monitorar esse tipo de tráfego
para identificar possíveis invasões ou uso indevido do protocolo por funcionários, seja
propositalmente ou de forma maliciosa, pois devemos sempre lembrar que por padrão os
computadores estão esperando por um IPv6 através de um DHCPv6 ou autoconfiguração!
Nossa recomendação final é: “Não ignore esse tipo de tráfego!”, se a empresa onde você
trabalha utiliza um dos sistemas operacionais que tem o IPv6 ativo por padrão analise cada
segmento de rede e trace um plano de ação para ter o IPv6 em sua monitoração, como falam
popularmente “em seu radar”, podendo até ser necessário desativar o protocolo caso seus
dispositivos de rede não possuam recursos de filtragem desse tipo de tráfego na origem.
Esperamos que vocês tenham gostado do curso e recomendem para seus amigos!
- http://www.dltec.com.br/index.php/redes-curso-ipv6-online.html