Como posso solucionar problemas de conectividade ao usar o gateway NAT na minha VPC privada?

Data da última atualização: 12/04/2022

Estou usando um gateway NAT para conectar instâncias em uma sub-rede privada da Virtual Private Cloud (Amazon VPC) à Internet. As instâncias têm problemas de conexão intermitentes. Como posso solucionar isso?

Breve descrição

Os recursos de sub-rede privada podem ter problemas de tempo limite de conectividade intermitente pelos seguintes motivos:

  • Regras de Lista de controle de acesso à rede (ACL).
  • Erro ErrorPortAllocation no gateway NAT.
  • Esgotamento de portas da instância do cliente.

Os recursos de sub-rede privada podem sofrer uma queda repentina de conexão pelo seguinte motivo:

  • Erro IdleTimeoutCount ao liberar capacidade.

Os recursos de sub-rede privada podem sofrer lentidão pelo seguinte motivo:

  • Limite de largura de banda por gateway NAT.

Resolução

Recursos de sub-rede privada estão enfrentando problemas intermitentes de tempo limite de conectividade

Regras de ACL de rede

Confirme se a ACL de rede associada à sub-rede pública em que o gateway NAT está presente permite o tráfego do intervalo de portas efêmeras (1024-65535). Se a ACL de rede permitir apenas um subconjunto do intervalo de portas efêmeras e as instâncias na sub-rede privada usarem uma porta de origem fora desse intervalo, o tráfego será descartado. Para obter mais informações sobre como configurar ACLs de rede, consulte Regras de ACL de rede recomendadas para uma VPC com sub-redes públicas e privadas (NAT).

Erro ErrorPortAllocation no gateway NAT

Para obter mais informações sobre esse erro, consulte Como resolver o erro ErrorPortAllocation no meu gateway NAT?

Esgotamento de porta da instância do cliente

Verifique se as instâncias do cliente na sub-rede privada atingiram os limites de conexão no nível do sistema operacional. Para ver o número de conexões ativas, execute o comando netstat:

Linux:

netstat -ano | grep ESTABLISHED | wc --l
netstat -ano | grep TIME_WAIT | wc --l

Windows:

netstat -ano | find /i "estab" /c
netstat -ano | find /i "TIME_WAIT" /c

Se o comando anterior retornar um valor próximo ao intervalo de porta local permitido (a porta de origem para conexões de cliente), talvez você tenha esgotamento de portas.

Para reduzir o esgotamento de portas, faça o seguinte:

  • Resolva todos os problemas no nível do aplicativo que esgotam as conexões disponíveis.
  • Aumente o intervalo de portas locais (efêmeras) do sistema operacional executando o seguinte comando:
net.ipv4.ip_local_port_range = 1025 61000

Recursos de sub-rede privada estão passando por quedas repentinas de conexão

Erro IdleTimeoutCount para liberar capacidade

Se uma conexão que está usando um gateway NAT estiver ociosa por 350 segundos ou mais, a conexão expirará, e você verá um pico na métrica IdleTimeoutCount. Quando uma conexão atinge o tempo limite, um gateway NAT retorna um pacote RST para todos os recursos por detrás do gateway NAT que tentam continuar a conexão. O gateway NAT não envia um pacote FIN.

Solução alternativa para o erro IdleTimeoutCount:

  • Use a métrica IdleTimeoutCount no Amazon CloudWatch para monitorar aumentos nas conexões ociosas. Configure o CloudWatch Contributor Insights para obter visibilidade dos principais contribuidores de clientes com processos no estado ocioso.
  • Feche as conexões ociosas dos clientes para liberar a capacidade.
  • Inicie mais tráfego pela conexão.
  • Ative o TCP manutenção de atividade de na instância com um valor inferior a 350 segundos.

Recursos de sub-rede privada estão passando por lentidão

Limitações de largura de banda no gateway NAT

  • Um gateway NAT oferece suporte a 5 Gbps de largura de banda e é escalado automaticamente até 45 Gbps. Se a soma combinada das métricas de taxa de transferência de rede em todas as instâncias por detrás do gateway NAT for igual ou superior a 45 Gbps intermitências, o tráfego ficará lento.
  • Usando métricas do CloudWatch, a largura de banda é calculada como: (BytesOutToDestination + BytesOutToSource + BytesInFromDestination + BytesInFromSource) * 8 / período em segundos.

Solução alternativa para limitações de largura de banda por gateway NAT:

Se a largura de banda no gateway NAT for maior que 45 Gbps, você poderá dividir os recursos entre várias sub-redes e criar vários gateways NAT.