O protocolo IP é encontrado nas versões IPv4 e IPv6. A versão IPv4 é a mais difundida e já esta a bastante tempo no mercado, enquanto o IPv6 é a versão mais recente, menos utilizada. A versão IPv6 apesar ser considerada nova também já esta no mercado a alguns anos mas ainda não é usada extensivamente. Este cenário deve mudar, precisamos começar a utilizar endereços IPv6 já que estamos esgotando a quantidade de endereços IPv4 disponíveis. Vamos aproveitar este cenário para entender como utilizar o protocolo e endereços IPv6 na VPC.
O IPv4 é formado por quatro números decimais(0 a 255) separados por pontos, cada um destes números equivale a um octeto(8 bits) que somados totalizam 32 bits. Este tipo de endereçamento fornece aproximadamente 4.3 bilhões de endereços possíveis, isso parece bastante, mas não é. Existem 7 bilhões de pessoas no mundo e diversos dispositivos que necessitam de um endereço IP associado.
Uma das técnicas utilizadas para adiar o esgotamento dos endereços IPv4 é o NAT(Network Address Translation). Por exemplo, uma companhia com milhares de computadores geralmente utiliza uma faixa de IPv4 privada seguindo as recomendações da RFC1918. Para que os dispositivos desta rede privada acessem a internet eles precisam passar por um NAT Gateway que é capaz de traduzir os endereços privados em endereços públicos. Assim um único endereço IPv4 público é utilizado para representar milhares de computadores de uma rede privada.
NAT é uma técnica de rede geralmente usada para permitir que uma rede privada inteira tenha acesso à internet sem designar um endereço IPv4 público a cada host. Os hosts podem iniciar conexões com a internet e podem receber respostas, mas não podem receber conexões de entrada iniciadas na internet.
Quando um host na rede privada inicia uma conexão vinculada à internet, o endereço IP público do dispositivo NAT torna-se o endereço IP de origem para o tráfego de saída. O tráfego de resposta da internet, portanto, usa esse endereço IP público como o endereço IP de destino. Em seguida, o dispositivo NAT roteia a resposta para o host na rede privada que iniciou a conexão.
https://docs.oracle.com/pt-br/iaas/Content/Network/Tasks/NATgateway.htm
O IPv6 assim como o IPv4 também é “dividido” em duas partes, uma delas para endereçar as redes(Network Part) e a outra para endereçar os hosts(Node Part) a diferença é que os endereços IPv6 possuem 128 bits de “comprimento” enquanto endereços IPv4 possuem apenas 32 bits. A notação do IPv6 é feita em hexadecimal, são 8 grupos de 16 bits(4 bits por caractere) separados por dois pontos(:). Todos os endereços IPv6 são publicamente roteáveis, isto significa que não precisamos de um NAT(Network Address Translation).
Ao criar uma VPC é obrigatório informar um CIDR block IPv4 e caso haja interesse em habilitar o endereçamento IPv6 um CIDR block IPv6 sera fornecido pela AWS.
O CIDR block IPv6 fornecido para a VPC é /56, ou seja, 56 dos 128 bits do endereço IPv6 são utilizados para endereçamento de rede enquanto o restante é utilizado para endereçar hosts.
Assim que a configuração do CIDR IPv6 for finalizada na VPC uma nova regra será criada na main route table, essa regra roteará o tráfego destinado ao CIDR IPv6 da VPC para a rede local.
<aside> 💡 Será que a regra de roteamento ( ::/0 ⇒ igw-id ) para IPv6 também é criada caso haja um internet gateway, não default, ****disponível na VPC?
A imagem abaixo ilustra o cenário ideal
</aside>
As subnets podem ser criadas no formado IPv6 Only caso a VPC possua um CIDR IPv6 atribuído, valem lembrar que é possível atribuir CIDR IPv6 a subnets criadas como IPv4.
Cada subnet recebe um CIDR IPv6, a faixa de endereços da subnet é definida automaticamente pela AWS no momento da adição do CIDR IPv6 na subnet. O CIDR block da imagem abaixo é /64 e permite um total de 18 milhões de trilhões de endereços para cada subnet.
O último par de valores hexadecimais(destacados em vermelho na imagem abaixo) é formado por dois caracteres de 4 bits. Juntos, estes 8 bits identificam cada uma das 256 subnets possíveis e devem formar um valor único por subnet.