A estrutura inicial é composta por uma VPC(serviço regional) e algumas subnets(serviço a nível de AZ) que utilizam sub-blocos de endereço a partir do bloco de endereços(CIDR) ****principal da VPC.
Neste exemplo utilizamos três zonas de disponibilidade(AZs) com duas subnets por AZ e cada uma destas subnets possui seu próprio range de endereços IP.
Assim que a VPC é criada uma main route table é criada por padrão, e para que a VPC se conecte com a internet(www) deve existir uma regra em sua main route table direcionando o tráfego para um Internet Gateway.
A main route table possui duas regras:
A main route table é associada implicitamente a todas as subnets, isto é, as subnets não foram explicitamente atribuídas a main route table.
Each subnet in your VPC must be associated with a route table, which controls the routing for the subnet (subnet route table). You can explicitly associate a subnet with a particular route table. Otherwise, the subnet is implicitly associated with the main route table. A subnet can only be associated with one route table at a time, but you can associate multiple subnets with the same subnet route table.
https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html
Podemos/devemos criar nossas próprias route tables, no exemplo abaixo observamos uma private route table associada a subnets privadas, veja que a private route table é associada explicitamente.
No exemplo abaixo nós roteamos a saída das duas instâncias EC2 que estão em subnets privadas distintas através de um NAT Gateway, desta forma permitimos que as instâncias acessem a internet(www).
É importante observar que o NAT Gateway sempre estará dentro de uma subnet pública.
É preciso criar uma regra na private route table para que as requisições aos endereços que não estão contidos no CIDR da VPC(10.0.0.0/16) sejam redirecionadas para o NAT Gateway e associar as subnets privadas a esta private route table.
Quando uma requisição é realizada e não ocorre um match com a primeira regra da private route table onde o endereço de destino(destination) deve estar no CIDR da VPC(10.0.0.0/16) a segunda regra(0.0.0.0/0 NAT-GW-ID) é aplicada para então direcionar o tráfego ao NAT Gateway que está na subnet pública.