====== 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.