NAT Gateways e NAT Instances são dois serviços ou tecnicas que podemos utilizar para permitir que instâncias em subnets privadas tenham acesso a internet.

Estamos falando de tráfego de saída(outbound), continuamos não permitindo que clientes se conectem a essas instâncias diretamente pela internet. O objetivo aqui é autorizar o tráfego para que as instâncias consigam se conectar a internet para baixar softwares, atualizações, etc.

1️⃣ NAT Gateway

A NAT gateway is a Network Address Translation (NAT) service. You can use a NAT gateway so that instances in a private subnet can connect to services outside your VPC but external services cannot initiate a connection with those instances.

When you create a NAT gateway, you specify one of the following connectivity types:

The NAT gateway replaces the source IP address of the instances with the IP address of the NAT gateway. For a public NAT gateway, this is the elastic IP address of the NAT gateway. For a private NAT gateway, this is the private IP address of the NAT gateway. When sending response traffic to the instances, the NAT device translates the addresses back to the original source IP address.

https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html

2️⃣ NAT Instance

You can create your own AMI that provides network address translation and use your AMI to launch an EC2 instance as a NAT instance. You launch a NAT instance in a public subnet to enable instances in the private subnet to initiate outbound IPv4 traffic to the internet or other AWS services, but prevent the instances from receiving inbound traffic initiated on the internet.

Limitations

https://docs.aws.amazon.com/vpc/latest/userguide/VPC_NAT_Instance.html

Conexão via NAT Gateway

As instâncias na private subnet possuem IPs privados e mesmo que existisse um Internet Gateway elas não conseguiriam utiliza-lo para se conectar a internet.

O que fazemos para resolver este problema é provisionar um NAT Gateway(possui um ip privado e um Elastic IP Address) dentro de uma public subnet.

A public subnet onde o NAT Gateway é provisionado deve ser associada a uma route table que possua regras para encaminhar as requisições a endereços que não estão no CIDR da VPC para o Internet Gateway(igw-id).

Também é preciso associar ****a private subnet uma private route table que possui regras para encaminhar requisições ao NAT Gateway(nat-gateway-id) exceto quando o destinatário estiver no CIDR da VPC.

Assim as instâncias na private subnet conseguem enviar requisições para o NAT Gateway que se preocupará em traduzir os endereços e encaminhar as requisições para o Internet Gateway.

<aside> 💡 dúvida, a route table funciona como um interceptador para todo o tráfego dentro da subnet? como o NAT Gateway encaminha o tráfego para o Internet Gateway supondo que ambos não são, por exemplo, webservers? talvez seja respondido nas aulas práticas.

</aside>

Untitled

Conexão via NAT Instance

O NAT Instance é uma máquina EC2 em uma public subnet que executa uma AMI(Amazon Machine Image) especifica para este caso de uso, as AMIs de NAT Instances possuem a string amzn-ami-vpc-nat em seu nome.

Igualmente ao NAT Gateway as NAT Instances possuem um private IP e um Elastic IP Address. É preciso desabilitar o source and destination checks nas network interfaces para as instâncias NAT.

As subnets precisam ter suas route tables configuradas para direcionar o tráfego como foi feito no primeiro exemplo. A única diferença é na regra da private route table que deverá encaminhar o tráfego direcionado a endereços que não estão no CIDR da VPC para a NAT Instance(nat-instance-id).

Untitled

NAT Instance vs NAT Gateway

Videoaula

Untitled

Documentação AWS

Untitled