====== Método de transição IPV6 - DNS64 e NAT64 ======
Para método de transição IPv6 utilizando dns64 e nat64 iremos montar a seguinte topologia.
{{ :infra-estrutura:ipv6:topologia-dns64-nat64.jpeg?direct&400 |}}
===== DNS64 =====
A transição para o ipv6 não se dá de forma rápida devido a alguns destinos ainda serem únicamente ipv4. Sendo assim como então entregar a seus clientes(no caso de um provedor) puramente ipv6 sendo que eles em algum momento precisarão acessar destinos ipv4. E ai que entra o dns64, quando um destino que não possue ipv6, ou seja, não possue o registro AAAA. Para isso vamos criar um ipv6 para esses caras únicamente ipv4. E isso que o dns64 faz criar endereços AAAA para destinos sem AAAA. Vamos visualizar como seria uma consulta DNS64.
=== Consulta dns para nome que possuem registros AAAA ===
A consulta para nomes que possuem registro AAAA funciona da forma normal o cliente consulta, se o dns possuir um registro AAAA para o nome, ele devolve ao cliente.
{{ :infra-estrutura:ipv6:consultaipv6normal.jpeg?direct&400 |}}
Funciona basicamente o cliente fazendo o request por um nome e o dns respondendo (reply) para essa consulta com o endereço IPV6 sem muita coisa a mais.
=== Consulta dns para nomes que não possuem registros AAAA ===
A consulta de nomes com registros que não possuem AAAA a resposta seria em branco, porém com a caracteristica dns64 conseguimos dizer ao servidor DNS que quando ele ser questionado sobre um nome pelo registro AAAA ele cria um registro AAAA a partir de um prefixo. Como todos sabem o registro AAAA é uma resposta com endereço IPV6 definindo um prefixo previamente o servidor dns pega o endereço ipv4 converte para hexa e junta formando o ipv6 normal. Vamos a um exemplo.
{{ :infra-estrutura:ipv6:consultaipv6semaaaa.jpeg?direct&400 |}}
Explicando o exemplo e feito a consulta pelo nome www.ricardobarbosa.com.br, este nome não possue registro AAAA apenas o registro A que resolve para o endereço ipv4 200.200.200.200. O dns64 possue o prefixo 64:ff9b::/96 configurado para formar ipv6 com o endereço ipv4 retornado.
* Primeiro convertemos o ipv4(decimal) para hexa ficando 200.200.200.200 = c8.c8.c8.c8.
* Vamos adicionar o prefixo 64:ff9b::c8c8:c8c8 pronto ja temos um endereço ipv6 para um serviço puramente ipv4.
No software BIND temos suporte a DNS64, editamos o arquivo /etc/bind/named.conf.options
options {
directory "/var/cache/bind";
dnssec-validation no;
allow-query { 2001:db8:1::/64; };
allow-recursion { 2001:db8:1::/64; };
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
//support the dns64
dns64 64:ff9b::/96 {
clients { any; };
};
};
Agora precisamos entender o nat64
====== Nat64 =====
O nat64 é uma técnica de tradução de endereços ipv6 para ipv4 ou ipv4 para ipv6 no caso utilizaremos de ipv6 para ipv4 porque nosso intuito e criar um método de transição para trabalharmos totalmente com ipv6 e não deixando de falar com o mundo ipv4. Veja a rede abaixo onde colocaremos tudo para funcionar nat64 e dns64.
{{ :infra-estrutura:ipv6:topologia-dns64-nat64.jpeg?direct&400 |}}
Note que temos ambiente ipv6 na LAN e ambiente ipv6 e ipv4 na WAN. As duas consultas citadas acima com e sem registro AAAA são aplicadas aqui a diferença e que foi explicada acima. O que muda nesse ambiente e que temos a tradução de ipv6 para ipv4 para podermos acessar o ambiente ipv4 que AINDA não tem suporte a ipv6. Estamos trabalhando com roteadores Cisco e configuramos o nat64 segue abaixo a configuração das interfaces
!
interface GigabitEthernet0/0/0
no ip address
negotiation auto
!
interface GigabitEthernet0/0/0.12
encapsulation dot1Q 12
ip address 200.1.1.1 255.255.255.0
ipv6 address 2001:db8:2::1/64
ipv6 enable
nat64 enable
!
interface GigabitEthernet0/0/1
description LAN
no ip address
negotiation auto
ipv6 address 2001:db8:1::1/64
ipv6 enable
nat64 enable
Criaremos as rotas de gateway padrão para os dois ambiente tanto ipv4 como ipv6.
ipv6 route ::/0 2001:db8:2::100
ip route 0.0.0.0 0.0.0.0 200.1.1.100
Agora criaremos uma lista de acesso para coincidir ou dar match com o fluxo que quero "natear" ou fazer o nat64 :)
No caso pegamos todos o trafego vindo da minha rede local LAN com a rede 2001:db8:1::/64 com destino a rede 64:ff9b::/96 que é o prefixo ou a rede do nosso dns64, criamos essa acl para combinar com este fluxo, porque os outros fluxos ja supomos que sao ipv6 -> ipv6, essa acl pegaria ipv6->ipv4
ipv6 access-list nat64-acl
sequence 1 permit ipv6 2001:db8:1::/64 64:FF9B::/96
Agora vamos criar um pool de tradução ipv4 ou endereço ipv4 global, aqui pode ser definido um range mas optei por colocar apenas 1 endereço ipv4
nat64 v4 pool nat-pool 200.1.1.1 200.1.1.1
Agora em si crio a regra que ira fazer a tradução propriamente dita vou criar uma tradução ipv6 para ipv4 (v6v4) utilizando a acl nat64-acl para dizer qual fluxo vou traduzir e qual endereço utilizarei na tradução (pool nat-pool).
nat64 v6v4 list nat64-acl pool nat-pool overload
Abaixo tentei demonstrar o ambiente completo.
{{ :infra-estrutura:ipv6:nat64-globo.jpeg?direct&400 |}}
Att.