Um ambiente AWS IPv6 Only é o melhor para o seu negócio?

Publicado: 11/07/2024

Entre as várias e rápidas mudanças tecnológicas que surgem conforme a internet ganha novas camadas de complexidade, temos os Protocolos de Internet (IPs). A AWS permite a criação de vários recursos com IPv6, para os quais a viabilidade de funcionamento foi testada em um ambiente AWS IPv6-Only. Este artigo visa auxiliar clientes da AWS em sua tomada de decisão na hora de implementar IPv6 em seus ambientes.

O que são IPs?

Os endereços IPs são endereços lógicos atribuídos a dispositivos conectados a uma rede e são utilizados na comunicação interna e externa entre os ativos de rede. Atualmente, a quantidade disponível de endereços IPs do tipo IPv4 são escassos quando comparados com a demanda atual.

Um bom exemplo está nas várias diferenças entre o IPv4 e sua inovação, o IPv6, que tem causado euforia pela transição entre os dois protocolos dentro das empresas. De modo bastante resumido, o IPv4 é a versão mais antiga e amplamente utilizada do protocolo de internet, que utiliza endereços de 32 bits, proporcionando até 4,3 bilhões de endereços possíveis. No entanto, muitos desses endereços são reservados para redes privadas. Já o IPv6  conta com endereços de 128 bits, oferecendo também  um número significativamente maior de endereços. O IPv6 possui um cabeçalho mais eficiente e elimina a necessidade de Tradução de Endereço de Rede (NAT), facilitando a implementação de serviços como VoIP e QoS. 

Com a limitação de endereços do IPv4 e o aumento dos dispositivos conectados globalmente, os IPs deste tipo passaram a ser cobrados dentro da nuvem AWS. Afinal, o custo de aquisição dos endereços IPv4 é mais elevado e a cobrança acaba estimulando a adoção da versão mais recente no ambiente dos clientes. Mas será que atualmente a transição de IPv4 para IPv6 dentro da AWS pode acontecer de modo simples e rápido, como se fosse um “clicar de botões”?  Na prática, o IPv6 atende mesmo a todas as necessidades dos clientes? Será que todos os recursos da AWS suportam IPv6?  Como se certificar que é possível usar o IPv6 no seu ambiente atual?

Pensando nisso, a criamos ambientes de testes para verificar e validar o funcionamento de diversos recursos AWS em um cenário de utilização IPv6 Only. Confira parte desses resultados no estudo de caso a seguir.

Estudo de Caso

É importante contextualizar que os testes e conclusões abaixo observados foram realizados em Abril/24. Sabemos que a AWS lança novidades frequentemente e, por isso, entende-se que as conclusões obtidas foram a partir das funcionalidades que estavam disponíveis nesse período.

Ambientes de análise

Visando entender como se dá o funcionamento dos principais recursos AWS ao utilizar o IPv6, foi efetuado uma análise em 3 tipos diferentes de ambientes. É relevante destacar o fato de que o cenário de implementação deste artigo buscou priorizar ao máximo o uso do IPv6 somente com a utilização do Internet Gateway Egress Only, com o NAT Gateway sendo usado somente no último caso, sendo assim, ao ler os resultados e testes é importante ter em mente que em cenários distintos aos abaixo expostos, os resultados podem variar, conforme a especificidade de cada arquitetura criada na nuvem. Os 3 tipos de ambientes criados foram:

Ambiente AWS IPv6 only

Figura 1 - Ipv6-Only

Neste ambiente objetivou-se criar uma infraestrutura de forma que:

  • Todos os recursos possuam somente IPv6 atribuídos;
  • Todos os recursos se comuniquem entre si e com a rede externa somente via IPv6;
  • Utiliza-se somente o Internet Gateway Egress Only como forma de se comunicar com a Internet.

Ambiente IPv6 Dual Stack (IPv6-DualStack)

Neste ambiente objetivou-se criar uma infraestrutura de forma que:

  • Todos os recursos possuam IPv6 e IPv4 atribuídos a eles;
  • Todos os recursos se comuniquem entre si utilizando Ipv6 e IPv4, preferencialmente via IPv6;
  • Todos os recursos se comuniquem com a rede externa utilizando somente IPv6;
  • Utiliza-se somente o Internet Gateway Egress Only como forma de se comunicar com a Internet.

Ambiente IPv6 Dual Stack com Nat Gateway (IPv6-Nat)

Neste ambiente objetivou-se criar uma infraestrutura de forma que:

  • Todos os recursos possuam IPv6 e IPv4 atribuídos a eles;
  • Todos os recursos se comuniquem entre si utilizando Ipv6 e IPv4, preferencialmente via IPv6;
  • Todos os recursos se comuniquem com a rede externa utilizando IPv4 ou IPv6, preferencialmente via IPv6;
  • Utiliza-se o Internet Gateway Egress Only e o NAT Gateway como forma de se comunicar com a Internet.

A partir dos ambientes acima propostos é possível perceber que o objetivo das análises é realmente verificar o funcionamento dos recursos em três ambientes diferentes, sendo que independente de qual ambiente seja, serão feitas configurações de forma a tentar ao máximo que as comunicações ocorram via IPv6.

Resultado dos Teste Realizados

De antemão, a tabela abaixo mostra quais foram os resultados obtidos. A próxima seção trará mais detalhes com relação a quais testes foram realizados.

Nome

IPv6-Only

IPv6-DualStack

IPv6-Nat

AWS SSM

Lambda

ECS

⚠️

Acesso ao DynamoDB

Acesso ao S3

⚠️

Acesso EC2 à IPv4-Only

Acesso EC2 à IPv6-Only

Acesso EC2 à DualStack

Onde:

✅ → Indica que o teste foi bem sucedido.

❌ → Indica que o teste foi mal sucedido.

⚠️→ Indica que o comportamento observado não foi totalmente satisfatório.

Para saber mais detalhes do teste realizado, clique abaixo!

Detalhamento dos testes realizados por ambiente

AWS SSM

Teste realizado:Foi criado uma instância com SSM Agent e verificou se o acesso via console seria feito com sucesso.Comportamento observado: AWS SSM não possui suporte para acesso via IPv6, portanto não foi possível acessar a instância na rede IPv6-DualStack.

Lambda

Teste realizado:Neste teste foi verificado se uma aplicação em Python conseguiria acessar o S3, a partir da execução da seguinte função:
import boto3 def lambda_handler(event, context):     print(“Hello from app1!”)    s3 = boto3.client(‘s3’, endpoint_url=https://s3.dualstack.us-east-1.amazonaws.com)     response = s3.list_buckets()     print(response)     return 200

ECS

Teste realizado:O teste realizado consiste na criação de um service privado exposto por um Application Load Balancer.Comportamento observado:AWS ECR não possui suporte para acesso via IPv6, portanto não foi possível fazer o pull da imagem docker na rede IPv6-DualStack.

Acesso ao DynamoDB

Teste realizado:Um DynamoDB foi criado na mesma região da rede e os seguintes comandos foram executados através do AWS CLI:aws dynamodb list-tablesComportamento observado:O AWS DynamoDB não possui suporte para acesso via IPv6, portanto não foi possível acessar as tabelas na rede IPv6-DualStack.

Acesso ao S3 Teste realizado:

Um bucket foi criado na mesma região da rede e, em seguida, foram executados os seguintes comandos através do AWS CLI:
# S3 aws s3api list-buckets aws s3api get-object –bucket omnichat-ipv6-test –key file.txt file.txt # S3 Dualstackaws s3api list-buckets –endpoint-url https://s3.dualstack.us-east-1.amazonaws.com aws s3api get-object –bucket omnichat-ipv6-test –key file.txt file.txt –endpoint-url https://s3.dualstack.us-east-1.amazonaws.com
Comportamento observado:Para a rede IPv6-Dualstack foi necessário sobrescrever o endpoint do S3 com sua versão dualstack.

Acesso EC2 a ipv4-ipv6-dualstack

Teste realizado:Para os testes “Acesso EC2 à Ipv4-only”, “Acesso EC2 à Ipv6-only” e “Acesso EC2 à dualstack”, foram executados os seguintes comandos:
# Acesso a website ipv6-onlycurl v6.ipv6test.apptraceroute v6.ipv6test.app  # Acesso a website ipv4-only curl v4.ipv6test.app traceroute v4.ipv6test.app  # Acesso a website dualstack curl ipv6test.app traceroute ipv6test.app
Comportamento observado:A rede IPv6-Nat conseguiu acessar todos os sites, porém a rede IPv6-DualStack não conseguiu acessar o recurso IPv4-only.

Acesso EC2 à endpoint IPv6, IPv4 e dualstack

Teste realizado:

Os testes foram realizados executando os seguintes comandos à partir de uma EC2:

# Acesso a website ipv6-only
curl v6.ipv6test.app
traceroute v6.ipv6test.app

# Acesso a website ipv4-only

curl v4.ipv6test.app

traceroute v4.ipv6test.app

# Acesso a website dualstack

curl ipv6test.app

traceroute ipv6test.app

 

Comportamento observado:

A EC2 com IPv6, que está localizada em uma subnet IPv6 only consegue alcançar o endpoint IPv6, mas não consegue acessar os endpoints do tipo IPv4 e do tipo dualstack.

Assim como especificado na tabela, o acesso do EC2 a websites IPv4 e Dualstack não foi bem sucedido. O erro exposto foi o “connect: Network is unreachable”.

Acesso ao S3

Teste realizado:

Foi criado um bucket na mesma região e através do AWS CLI executados os seguintes comandos:

# S3

aws s3api get-object –bucket omnichat-devel-ipv6-only –key file.txt file.txt

aws s3api get-object –bucket omnichat-devel-ipv6-only –key file.txt file.txt

 

Comportamento observado:

O comando dá timeout. Nenhuma resposta é obtida.

Considerando a arquitetura com a presença do Internet Gateway Egress Only e também do VPC Endpoint do tipo Gateway para acessar o S3, a comunicação partindo do EC2 para o S3 não foi estabelecida.

Na tentativa de encontrar uma alternativa ao utilizar o outro tipo de endpoint, foi constatado também que o VPC Endpoint do tipo Interface não possui suporte para IPv6 only.

Acesso ao DynamoDB

Teste realizado:

Foi criado um DynamoDB na mesma região e, através do AWS CLI, foram executados os seguintes comandos:

 

aws dynamodb list-tables

 

Comportamento observado:

O comando não foi executado com sucesso. Ele traz o erro afirmando que o endpoint do DynamoDB não pôde ser encontrado. Isso porque o DynamoDB não possui suporte para acesso via IPv6, como visto na seção anterior.

Lambda

Teste realizado:

O Lambda não pode ser criado em subnets do tipo IPv6 only. É possível apenas criar Lambdas em VPCs que contenham subnets do tipo dual-stack.

Sendo assim, a conexão entre o Lambda e o S3 pode ocorrer via IPv6, mas somente no cenário apresentado no ambiente de dual-stack, como apresentado na seção anterior.

Criação de Tasks no ECS

Foi possível criar o ECS e a Task, porém não foi possível realizar a criação do ALB, que é responsável por redirecionar o tráfego. Isso porque é solicitado que haja pelo menos 8 IPs do tipo IPv4 disponíveis em cada subnet. A mensagem de erro apresentada foi a seguinte: “Not enough IP space available in subnet-0e2778c701e57a969. ELB requires at least 8 free IP addresses in each subnet.”

Conclusão

Apesar de a princípio parecer se tratar de algo trivial, a troca de IPv4 para IPv6 em um ambiente AWS já consolidado, acarreta uma série de ajustes a nível de recurso, onde é preciso verificar individualmente quais as implicações e ajustes a serem feitos ao se utilizar IPv6.

É certo que, apesar de muitos recursos não oferecerem suporte para a comunicação IPv6, a otimização de custos desejada ainda pode ser obtida a partir da utilização do PrivateLink, que pode ser implementado como uma alternativa ao NAT Gateway, visto que enquanto o AWS Private Link cobra $0.01 por GB, o NAT Gateway cobra $0.045 por GB.

 

A e-Core é um parceiro AWS preparado para ajudar o seu negócio com soluções de migração e modernização do ambiente cloud, assim como na criação de soluções personalizadas com nossa expertise em computação em nuvem, big data, IA e Machine Learning. Entre em contato conosco e veja como podemos apoiar o seu negócio! 

Analista de Infraestrutura

Analista DevOps

Combinamos experiência global com tecnologias emergentes para ajudar empresas como a sua a criar produtos digitais inovadores, modernizar plataformas de tecnologia e melhorar a eficiência nas operações digitais.

Pular para o conteúdo