

# Instâncias NAT
<a name="VPC_NAT_Instance"></a>

Uma instância NAT fornece conversão de endereços de rede (NAT). É possível usar uma instância NAT para permitir que recursos em uma sub-rede privada se comuniquem com destinos fora da nuvem privada virtual (VPC), como a Internet ou uma rede on-premises. Os recursos na sub-rede privada podem iniciar o tráfego IPv4 de saída para a Internet, mas não podem receber o tráfego de entrada iniciado na Internet.

**Importante**  
A AMI de NAT é construída com base na última versão do Amazon Linux, 2018.03, que atingiu o final do ciclo de suporte padrão em 31 de dezembro de 2020 e o final do ciclo de suporte de manutenção em 31 de dezembro de 2023. Para obter mais informações, consulte a seguinte postagem no blog: [Amazon Linux AMI end of life](https://aws.amazon.com/blogs/aws/update-on-amazon-linux-ami-end-of-life/).  
Se você usar uma AMI de NAT existente, a AWS recomenda [migrar para um gateway NAT](vpc-nat-comparison.md#nat-instance-migrate). Os gateways NAT oferecem maior disponibilidade e maior largura de banda e exigem menos esforços administrativos. Para obter mais informações, consulte [Comparar gateways NAT e instâncias NAT](vpc-nat-comparison.md).  
Se as instâncias de NAT forem uma correspondência melhor para o seu caso de uso do que os gateways NAT, você poderá criar sua própria AMI de NAT com base em uma versão atual do Amazon Linux conforme descrita em [3. Crie uma AMI de NAT](work-with-nat-instances.md#create-nat-ami).

**Topics**
+ [Noções básicas sobre a instância NAT](#basics)
+ [Permitir que recursos privados se comuniquem fora da VPC](work-with-nat-instances.md)

## Noções básicas sobre a instância NAT
<a name="basics"></a>

A figura a seguir mostra noções básicas sobre instância NAT. A tabela de rotas associada à sub-rede privada envia o tráfego da Internet das instâncias na sub-rede privada para a instância NAT na sub-rede pública. Em seguida, a instância NAT envia o tráfego para o gateway da Internet. O tráfego é atribuído ao endereço IP público da instância NAT. A instância NAT especifica um número de porta alto para a resposta; quando uma resposta retorna, a instância NAT a envia a uma instância na sub-rede privada com base no número da porta para a resposta.

A instância NAT deve ter acesso à Internet, portanto, deve estar em uma sub-rede pública (uma sub-rede que possui uma tabela de rotas com uma rota para o gateway da Internet) e deve ter um endereço IP público ou um endereço IP elástico.

![\[Diagrama que mostra a configuração de uma instância NAT em uma VPC\]](http://docs.aws.amazon.com/pt_br/vpc/latest/userguide/images/nat-instance_updated.png)


Para começar a usar instâncias NAT, crie uma AMI de NAT, crie um grupo de segurança para a instância NAT e execute a instância NAT em sua VPC.

Sua cota de instância NAT depende da cota de instância para a região. Para obter mais informações, consulte [Service Quotas do Amazon EC2](https://docs.aws.amazon.com/general/latest/gr/ec2-service.html#limits_ec2) na *Referência geral da AWS*.

# Permitir que recursos privados se comuniquem fora da VPC
<a name="work-with-nat-instances"></a>

Esta seção descreve como criar e trabalhar com instâncias NAT para permitir que recursos em uma sub-rede privada se comuniquem fora da nuvem privada virtual.

**Topics**
+ [1. Crie uma VPC para a instância NAT](#create-vpc-subnets)
+ [2. Crie um grupo de segurança para a instância NAT](#NATSG)
+ [3. Crie uma AMI de NAT](#create-nat-ami)
+ [4. Execute uma instância NAT](#NATInstance)
+ [5. Desativar as verificações de origem/destino](#EIP_Disable_SrcDestCheck)
+ [6. Atualize a tabela de rotas](#nat-routing-table)
+ [7. Teste sua instância NAT](#nat-test-configuration)

## 1. Crie uma VPC para a instância NAT
<a name="create-vpc-subnets"></a>

Use o procedimento a seguir para criar uma VPC com uma sub-rede pública e uma sub-rede privada.

**Como criar a VPC**

1. Abra o console da Amazon VPC, em [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. Escolha **Criar VPC**.

1. Em **Resources to create** (Recursos a serem criados), escolha **VPC and more** (VPC e mais).

1. Em **Name tag auto-generation** (Geração automática de tags de nome), insira um nome para a VPC.

1. Para configurar as sub-redes, faça o seguinte:

   1. Em **Number of Availability Zones** (Número de zonas de disponibilidade), escolha **1** ou **2** dependendo das suas necessidades.

   1. Em **Number of public subnets** (Número de sub-redes públicas), verifique se você tem uma sub-rede pública por zona de disponibilidade.

   1. Em **Number of private subnets** (Número de sub-redes privadas), verifique se você tem uma sub-rede privada por zona de disponibilidade.

1. Escolha **Criar VPC**.

## 2. Crie um grupo de segurança para a instância NAT
<a name="NATSG"></a>

Crie um grupo de segurança com as regras descritas na tabela a seguir. Essas regras possibilitam que sua instância NAT receba tráfego vinculado à Internet de instâncias na sub-rede privada, bem como tráfego SSH de sua rede. A instância NAT também pode enviar tráfego à Internet, o que permite que as instâncias na sub-rede privada obtenham atualizações de software.

As regras recomendadas de entrada são mostradas a seguir.


| Origem | Protocolo | Intervalo de portas | Comentários | 
| --- | --- | --- | --- | 
| CIDR da sub-rede privada | TCP | 80 | Permite tráfego HTTP de entrada de servidores na sub-rede privada. | 
| CIDR da sub-rede privada | TCP | 443 | Permite tráfego HTTPS de entrada de servidores na sub-rede privada. | 
| Intervalo de endereços IP públicos da sua rede | TCP | 22 | Permitir acesso SSH de entrada de sua rede à instância NAT (por meio do gateway da Internet). | 

As regras recomendadas de saída são mostradas a seguir.


| Destino | Protocolo | Intervalo de portas | Comentários | 
| --- | --- | --- | --- | 
| 0.0.0.0/0 | TCP | 80 | Permite acesso HTTP de saída à Internet. | 
| 0.0.0.0/0 | TCP | 443 | Permite acesso HTTPS de saída à Internet. | 

**Como criar o grupo de segurança**

1. Abra o console da Amazon VPC, em [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. No painel de navegação, selecione **Security groups** (Grupos de segurança).

1. Escolha **Create security group (Criar grupo de segurança)**.

1. Insira um nome e uma descrição para o grupo de segurança.

1. Em **VPC**, selecione o ID da VPC para sua instância NAT.

1. Adicione regras para o tráfego de entrada em **Regras de entrada** da seguinte forma:

   1. Escolha **Adicionar regra**. Escolha **HTTP** em **Tipo** e insira o intervalo de endereços IP de sua sub-rede privada em **Fonte**.

   1. Escolha **Adicionar regra**. Escolha **HTTPS** em **Tipo** e insira o intervalo de endereços IP de sua sub-rede privada em **Fonte**.

   1. Escolha **Adicionar regra**. Escolha **SSH** em **Tipo** e insira o intervalo de endereços IP da sua rede em **Fonte**.

1. Adicione regras para o tráfego de saída em **Regras de saída** da seguinte forma:

   1. Escolha **Adicionar regra**. Escolha **HTTP** em **Tipo** e digite 0.0.0.0/0 em **Destino**.

   1. Escolha **Adicionar regra**. Escolha **HTTPS** em **Tipo** e digite 0.0.0.0/0 em **Destino**.

1. Escolha **Create security group (Criar grupo de segurança)**.

Para obter mais informações, consulte [Grupos de segurança](vpc-security-groups.md).

## 3. Crie uma AMI de NAT
<a name="create-nat-ami"></a>

Uma AMI de NAT é configurada para executar NAT em uma instância do EC2. Você deve criar uma AMI de NAT e, em seguida, executar sua instância NAT usando a AMI de NAT.

Caso planeje usar um sistema operacional diferente do Amazon Linux para sua AMI de NAT, consulte a documentação desse sistema operacional para saber como configurar a NAT. Não se esqueça de salvar essas configurações para que elas persistam mesmo após a reinicialização da instância.

**Criar uma AMI de NAT para o Amazon Linux**

1. Inicie uma instância do EC2 executando o AL2023 ou o Amazon Linux 2. Não deixe de especificar o grupo de segurança que você criou para a instância do NAT.

1. Conecte-se à sua instância e execute os comandos a seguir na instância para habilitar iptables.

   ```
   sudo yum install iptables-services -y
   sudo systemctl enable iptables
   sudo systemctl start iptables
   ```

1. Faça o seguinte na instância para habilitar o encaminhamento de IP de forma que ele persista após a reinicialização:

   1. Usando um editor de texto, como **nano** ou **vim**, crie um arquivo com a seguinte configuração: `/etc/sysctl.d/custom-ip-forwarding.conf`.

   1. Adicione a seguinte linha ao arquivo de configuração.

      ```
      net.ipv4.ip_forward=1
      ```

   1. Salve o arquivo de configuração e saia do editor de texto.

   1. Execute o comando a seguir para aplicar o arquivo de configuração.

      ```
      sudo sysctl -p /etc/sysctl.d/custom-ip-forwarding.conf
      ```

1. Execute o comando a seguir na instância e anote o nome da interface de rede primária. Você precisará dessas informações para a próxima etapa.

   ```
   netstat -i
   ```

   No exemplo de saída a seguir, `docker0` é uma interface de rede criada pelo docker, `eth0` é a interface de rede primária e `lo` é a interface de loopback.

   ```
   Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
   docker0   1500        0      0      0 0             0      0      0      0 BMU
   eth0      9001  7276052      0      0 0       5364991      0      0      0 BMRU
   lo       65536   538857      0      0 0        538857      0      0      0 LRU
   ```

   No exemplo de saída a seguir, a interface de rede primária é `enX0`.

   ```
   Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
   enX0      9001     1076      0      0 0          1247      0      0      0 BMRU
   lo       65536       24      0      0 0            24      0      0      0 LRU
   ```

   No exemplo de saída a seguir, a interface de rede primária é `ens5`.

   ```
   Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
   ens5      9001    14036      0      0 0          2116      0      0      0 BMRU
   lo       65536       12      0      0 0            12      0      0      0 LRU
   ```

1. Execute os comandos a seguir na instância para configurar o NAT. Se a interface de rede primária não for `eth0`, substitua *eth0* pela interface de rede primária indicada na etapa anterior.

   ```
   sudo /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
   sudo /sbin/iptables -F FORWARD
   sudo service iptables save
   ```

1. Crie uma AMI de NAT da instância do EC2. Para obter mais informações, consulte [Criar uma AMI do Linux a partir de uma instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html#how-to-create-ebs-ami) no *Guiado usuário do Amazon EC2*.

## 4. Execute uma instância NAT
<a name="NATInstance"></a>

Use o procedimento a seguir para executar uma instância NAT usando a VPC, o grupo de segurança e a AMI de NAT que você criou.

**Executar uma instância NAT**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel, escolha **Executar instância**.

1. Em **Nome**, insira um nome para sua instância NAT.

1. Em **Aplicações e imagens do SO**, selecione sua AMI de NAT (escolha **Procurar mais AMIs** e **Minhas AMIs**).

1. Em **Tipo de instância**, escolha um tipo de instância que forneça os recursos de computação, memória e armazenamento de que sua instância NAT precisa.

1. Em **Par de chaves**, selecione um par de chaves existente ou escolha **Criar novo par de chaves**.

1. Em **Configurações de rede**, faça o seguinte:

   1. Escolha **Editar**.

   1. Em **VPC**, escolha a VPC criada anteriormente.

   1. Em **Sub-rede**, selecione a sub-rede pública criada anteriormente para a VPC.

   1. Em **Atribuir IP público automaticamente**, selecione **Habilitar**. Como alternativa, após executar a instância NAT, aloque um endereço IP elástico e atribua-o à instância NAT.

   1. Em **Firewall**, escolha **Selecionar grupo de segurança existente** e, em seguida, escolha o grupo de segurança que você criou.

1. Escolha **Iniciar instância**. Escolha o ID da instância para abrir a página de detalhes da instância. Aguarde o estado da instância mudar para **Em execução**, bem como a conclusão bem-sucedida das verificações de status.

1. Desabilite as verificações de origem e destino para a instância NAT (consulte [5. Desativar as verificações de origem/destino](#EIP_Disable_SrcDestCheck)).

1. Atualize a tabela de rotas para enviar tráfego para a instância NAT (consulte [6. Atualize a tabela de rotas](#nat-routing-table)).

## 5. Desativar as verificações de origem/destino
<a name="EIP_Disable_SrcDestCheck"></a>

Por padrão, toda Instância EC2 executa verificações origem/destino. Isso significa que a instância deve ser a origem ou o destino de qualquer tráfego que ela envia ou recebe. Entretanto, a instância NAT deve poder enviar e receber tráfego quando ela não é a origem nem o destino. Por isso, você deve desativar as verificações de origem/destino na instância NAT.

**Desabilitar as verificações de origem e destino**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, escolha **Instances (Instâncias)**.

1. Selecione a instância NAT.

1. Escolha **Ações**, **Redes**, **Alterar verificação de origem/destino**.

1. Em **Verificação de origem e destino**, selecione **Interromper**.

1. Escolha **Salvar**.

1. Se a instância NAT tem uma interface de rede secundária, escolha-a em **Network interfaces (Interfaces de rede)** na guia **Networking (Rede)** guia. Escolha a interface ID para ir à página das interfaces de rede. Selecione **Actions (Ações)**, **Change source/dest. check (Alterar verificação de origem/destino)**, desmarque **Enable (Habilitar)** e selecione **Save (Salvar)**.

## 6. Atualize a tabela de rotas
<a name="nat-routing-table"></a>

A tabela de rotas para a sub-rede privada deve ter uma rota que envie o tráfego da Internet para a instância NAT.

**Atualizar a tabela de rotas**

1. Abra o console da Amazon VPC em [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. No painel de navegação, escolha **Route tables**.

1. Selecione a tabela de rotas para a sub-rede privada.

1. Na guia **Rotas**, escolha **Editar rotas** e, em seguida, escolha **Adicionar rota**.

1. Insira 0.0.0.0/0 para **Destino** e o ID da instância NAT para **Alvo**.

1. Escolha **Salvar alterações**.

Para obter mais informações, consulte [Configurar tabelas de rotas](VPC_Route_Tables.md).

## 7. Teste sua instância NAT
<a name="nat-test-configuration"></a>

Após executar uma instância NAT e concluir as etapas anteriores de configuração, você pode testar se uma instância em sua sub-rede privada pode acessar a Internet por meio da instância NAT ao usar a instância NAT como um servidor bastion.

**Topics**
+ [Etapa 1: atualizar o grupo de segurança da instância NAT](#nat-test-security)
+ [Etapa 2: inicie uma instância de teste na sub-rede privada](#nat-test-launch-instance)
+ [Etapa 3: efetuar ping em um site habilitado para ICMP](#nat-test-ping)
+ [Etapa 4: limpar](#nat-test-clean-up)

### Etapa 1: atualizar o grupo de segurança da instância NAT
<a name="nat-test-security"></a>

Para permitir que as instâncias na sua sub-rede privada enviem tráfego de ping à instância NAT, adicione uma regra para permitir tráfego ICMP de entrada e saída. Para permitir que a instância NAT atue como servidor bastion, adicione uma regra para permitir o tráfego SSH de saída para a sub-rede privada.

**Atualizar o grupo de segurança da instância NAT**

1. Abra o console da Amazon VPC, em [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. No painel de navegação, selecione **Security groups** (Grupos de segurança).

1. Marque a caixa de seleção do grupo de segurança associado à sua instância NAT.

1. Na guia **Regras de entrada**, selecione **Editar regras de entrada**.

1. Escolha **Add rule (Adicionar regra)**. Escolha **All ICMP - IPv4 (Todos ICMP - IPv4)** para **Type (Tipo)**. Escolha **Personalizar** em **Fonte** e insira o intervalo de endereços IP de sua sub-rede privada. Selecione **Salvar regras**.

1. Na guia **Regras de saída**, escolha **Editar regras de saída**.

1. Escolha **Add rule (Adicionar regra)**. Escolha **SSH** para **Type (Tipo)** . Escolha **Personalizar** em **Destino** e insira o intervalo de endereços IP de sua sub-rede privada.

1. Escolha **Add rule (Adicionar regra)**. Escolha **All ICMP - IPv4 (Todos ICMP - IPv4)** para **Type (Tipo)**. Escolha **Anywhere - IPv4** (Em qualquer lugar - IPv4) em **Destination** (Destino). Escolha **Save rules (Salvar regras)**.

### Etapa 2: inicie uma instância de teste na sub-rede privada
<a name="nat-test-launch-instance"></a>

Execute uma instância em sua sub-rede privada. Você deve permitir o acesso SSH da instância NAT e usar o mesmo par de chaves usado para a instância NAT.

**Iniciar uma instância de teste na sub-rede privada**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel, escolha **Executar instância**.

1. Selecione sua sub-rede privada.

1. Não atribua um endereço IP público a esta instância.

1. Certifique-se de que o grupo de segurança para esta instância permita acesso SSH de entrada de sua instância NAT ou do intervalo de endereços IP de sua sub-rede pública e tráfego ICMP de saída.

1. Selecione o mesmo par de chaves usado para a instância NAT.

### Etapa 3: efetuar ping em um site habilitado para ICMP
<a name="nat-test-ping"></a>

Para verificar se a instância de teste na sub-rede privada pode usar a instância NAT para se comunicar com a Internet, execute o comando **ping**.

**Testar a conexão com a Internet de sua instância privada**

1. No computador local, configure o encaminhamento de agentes SSH, para poder usar a instância NAT como um servidor bastion.

------
#### [ Linux and macOS ]

   ```
   ssh-add key.pem
   ```

------
#### [ Windows ]

   [Baixe e instale o Pageant](https://www.chiark.greenend.org.uk/~sgtatham/putty/), se ainda não estiver instalado.

   [Converta a chave privada usando o PuTTYgen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-linux-inst-from-windows.html#putty-private-key).

   Inicie o Pageant, clique com o botão direito no ícone do **Pageant** na barra de tarefas (ele pode estar oculto) e escolha **Adicionar chave**. Selecione o arquivo .ppk que você criou, insira a senha se necessário e escolha **Abrir**.

------

1. No computador local, conecte-se à sua instância do NAT.

------
#### [ Linux and macOS ]

   ```
   ssh -A ec2-user@nat-instance-public-ip-address
   ```

------
#### [ Windows ]

   Conectar-se à sua instância do NAT do usando o PuTTY. Para **Autenticação**, você deve selecionar **Permitir encaminhamento de agentes** e deixar a opção **Arquivo de chave privada para autenticação** em branco.

------

1. Na instância NAT, execute o comando **ping**, especificando um site que está habilitado para ICMP.

   ```
   [ec2-user@ip-10-0-4-184]$ ping ietf.org
   ```

   Para confirmar que sua instância NAT tem acesso à Internet, verifique se você recebeu uma saída como a seguinte e pressione **Ctrl\$1C** para cancelar o comando **ping**. Caso contrário, verifique se a instância NAT está em uma sub-rede pública (sua tabela de rotas tem uma rota para um gateway da Internet).

   ```
   PING ietf.org (104.16.45.99) 56(84) bytes of data.
   64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=1 ttl=33 time=7.88 ms
   64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=2 ttl=33 time=8.09 ms
   64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=3 ttl=33 time=7.97 ms
   ...
   ```

1. Em sua instância NAT, conecte-se à instância em sua sub-rede privada ao usar o respectivo endereço IP privado.

   ```
   [ec2-user@ip-10-0-4-184]$ ssh ec2-user@private-server-private-ip-address
   ```

1. Em sua instância privada, teste se você pode se conectar à Internet ao executar o comando **ping**.

   ```
   [ec2-user@ip-10-0-135-25]$ ping ietf.org
   ```

   Para confirmar que sua instância privada tem acesso à Internet por meio da instância NAT, verifique se você recebeu uma saída como a seguinte e pressione **Ctrl\$1C** para cancelar o comando **ping**.

   ```
   PING ietf.org (104.16.45.99) 56(84) bytes of data.
   64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=1 ttl=33 time=8.76 ms
   64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=2 ttl=33 time=8.26 ms
   64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=3 ttl=33 time=8.27 ms
   ...
   ```

**Solução de problemas**

Se o comando **ping** falhar no servidor na sub-rede privada, use as seguintes etapas para solucionar o problema:
+ Verifique se você usou o comando ping em um site habilitado para ICMP. Caso contrário, seu servidor não poderá receber pacotes de resposta. Para testar isso, execute o mesmo comando **ping** em um terminal de linha de comando em seu computador.
+ Verifique se o grupo de segurança para sua instância NAT permite tráfego ICMP de entrada de sua sub-rede privada. Caso contrário, sua instância NAT não poderá receber o comando **ping** de sua instância privada.
+ Verifique se você desabilitou a verificação de origem e destino para sua instância NAT. Para obter mais informações, consulte [5. Desativar as verificações de origem/destino](#EIP_Disable_SrcDestCheck).
+ Verifique se você configurou suas tabelas de rota corretamente. Para obter mais informações, consulte [6. Atualize a tabela de rotas](#nat-routing-table).

### Etapa 4: limpar
<a name="nat-test-clean-up"></a>

Se você não precisar mais do servidor de teste na sub-rede privada, encerre a instância para que ela não gere mais cobranças. Para obter mais informações, consulte [Terminar sua instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html) no *Guia do usuário do Amazon EC2*.

Se você não precisar mais da instância NAT, poderá interrompê-la ou encerrá-la para não gerar mais cobranças. Se você criou uma AMI NAT, pode criar uma nova instância NAT sempre que precisar de uma.