AWS VPC - Gateway da Internet vs. NAT [fechado]

209

O que é um gateway da Internet? O que é uma instância NAT? Que serviços eles oferecem?

Lendo a documentação do AWS VPC, concluo que ambos mapeiam endereços IP privados para endereços roteados pela Internet para as solicitações de saída e encaminham as respostas recebidas da Internet para o solicitante na sub-rede.

Então, quais são as diferenças entre eles? Quais cenários eu uso uma instância NAT em vez de (ou além) de um gateway da Internet? Elas são essencialmente instâncias do EC2 executando alguns aplicativos de rede ou são hardware especial como um roteador?

Em vez de simplesmente apontar para os links de documentação da AWS, você pode explicá-los adicionando algumas informações básicas sobre o que é sub-redes públicas e privadas, para que qualquer iniciante com conhecimento limitado de rede possa entendê-las facilmente? Além disso, quando devo usar um gateway NAT em vez de uma instância NAT?

PS: Eu sou novo no AWS VPC, portanto, talvez eu esteja comparando maçãs com laranjas aqui.

HappyTown
fonte

Respostas:

230

Gateway da Internet

Um gateway da Internet é uma conexão lógica entre um Amazon VPC e a Internet . É não um dispositivo físico. Somente um pode ser associado a cada VPC. Ele não limitar a largura de banda de conexão à Internet. (A única limitação na largura de banda é o tamanho da instância do Amazon EC2, e ela se aplica a todo o tráfego - interno à VPC e à Internet.)

Se uma VPC não tiver um Gateway da Internet, os recursos na VPC não poderão ser acessados ​​da Internet (a menos que o tráfego flua através de uma rede corporativa e VPN / Conexão Direta).

Uma sub-rede é considerada uma sub - rede pública se tiver uma tabela de rotas que direcione o tráfego para o gateway da Internet.

Instância NAT

Uma instância NAT é uma instância do Amazon EC2 configurada para encaminhar tráfego para a Internet. Ele pode ser iniciado a partir de uma AMI existente ou pode ser configurado via Dados do Usuário, como este:

#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 0.0.0.0/0 -j MASQUERADE
/sbin/iptables-save > /etc/sysconfig/iptables
mkdir -p /etc/sysctl.d/
cat <<EOF > /etc/sysctl.d/nat.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.eth0.send_redirects = 0
EOF

As instâncias em uma sub-rede privada que desejam acessar a Internet podem ter seu tráfego ligado à Internet encaminhado para a Instância NAT por meio de uma configuração da Tabela de Rota. A instância NAT fará a solicitação para a Internet (já que está em uma sub-rede pública) e a resposta será encaminhada de volta para a instância privada.

O tráfego enviado para uma Instância NAT normalmente será enviado para um endereço IP que não esteja associado à própria Instância NAT (será destinado a um servidor na Internet). Portanto, é importante desativar a opção Verificação de origem / destino na instância NAT, caso contrário, o tráfego será bloqueado.

Gateway NAT

A AWS introduziu um serviço de gateway NAT que pode substituir uma instância NAT. Os benefícios do uso de um serviço Gateway NAT são:

  • É um serviço totalmente gerenciado - basta criá-lo e funcionar automaticamente, incluindo failover
  • Pode estourar até 10 Gbps (uma instância NAT é limitada à largura de banda associada ao tipo de instância EC2)

Contudo:

  • Grupos de segurança não podem ser associados a um gateway NAT
  • Você precisará de um em cada AZ, pois eles operam apenas em um único AZ
John Rotenstein
fonte
4
Você pode adicionar mais um ponto em sua anotação? As instâncias NAT funcionarão se você tiver IGW na sub-rede pública. Eles também restringem a pesquisa inversa da Internet para sua instância na sub-rede.
Ameya
1
Agora, em 2019, o NAT gw pode ser usado apenas na VPC, alocando um EIP na sub-rede "pública" ou sub-rede com "gateway da internet" e nas sub-redes internas, basta rotear para o NAT gw.
Felipe Buccioni 18/03/19
Essa resposta ainda é precisa? A partir dos documentos da AWS , vejo: An internet gateway is a horizontally scaled, redundant, and highly available VPC component that allows communication between instances in your VPC and the internet. It therefore imposes no availability risks or bandwidth constraints on your network traffic.. A partir da descrição, tenho a impressão de que é um dispositivo de hardware real, mas gerenciado pela AWS. Por favor, corrija-me se meu entendimento estiver errado.
Abhishek Divekar
@AbhishekDivekar Nada mudou. Ao trabalhar com a AWS, concentre-se no que você gostaria de alcançar, em vez de pensar no hardware subjacente.
John Rotenstein
1
As Instâncias NAT @Sandeep e Gateways NAT existem dentro de uma VPC. Portanto, qualquer tráfego que sai e viaja para a Internet ainda precisará passar pelo Gateway da Internet. Se não houver Gateway da Internet, não haverá acesso à Internet.
precisa saber é o seguinte
127

Quanto ao gateway NAT vs. instância NAT, ambos funcionarão. Uma instância NAT pode ser um pouco mais barata, mas o gateway NAT é totalmente gerenciado pela AWS, portanto, tem a vantagem de não precisar manter uma instância EC2 apenas para NAT.

No entanto, para as instâncias que precisam estar disponíveis na Internet, as instâncias / gateway NAT não são o que você está procurando. Um NAT permitirá que instâncias privadas (sem um IP público) acessem a Internet, mas não o contrário. Portanto, para as instâncias do EC2 que precisam estar disponíveis na Internet, você precisa atribuir um IP público. Existe uma solução alternativa se você realmente precisar manter as instâncias do EC2 privadas - você pode usar um balanceador de carga elástico para proxy das solicitações.

Gateways da Internet

O Gateway da Internet é como o seu VPC se conecta à Internet. Você usa um Gateway da Internet com uma tabela de rotas para informar à VPC como o tráfego da Internet chega à Internet.

Um gateway da Internet aparece na VPC apenas como um nome. A Amazon gerencia o gateway e não há nada a dizer (além de usá-lo ou não; lembre-se de que você pode querer uma sub-rede completamente segmentada que não possa acessar a Internet).

Uma sub-rede pública significa uma sub-rede que possui tráfego de Internet roteado através do Gateway da Internet da AWS. Qualquer instância em uma sub-rede pública pode ter um IP público atribuído a ela (por exemplo, uma instância do EC2 com o "endereço IP público associado" ativado).

Uma sub-rede privada significa que as instâncias não são acessíveis ao público pela Internet. Eles NÃO têm um endereço IP público. Por exemplo, você não pode acessá-los diretamente via SSH. Porém, as instâncias em sub-redes privadas ainda podem acessar a Internet (por exemplo, usando um Gateway NAT).

error2007s
fonte
23
Melhor resposta em termos de NAT vs gateway da Internet.
Tagar
Ótima resposta. Apenas uma pergunta de acompanhamento: quando uma instância do EC2 em uma sub-rede pública possui um IP público, logicamente é auto-suficiente para receber solicitações de entrada da Internet ou fazer solicitações de saída para a Internet, pois seu IP é roteável e acessível. Então, que trabalho adicional o Gateway da Internet faz aqui?
quer
A instância do @Sandeep EC2 não tem nenhum IP público real, mas nos bastidores, ela é mapeada para um endereço IP privado. Um gateway de internet serve a dois propósitos: para fornecer um alvo em suas rotas tabelas VPC para o tráfego de internet roteáveis, e para realizar a tradução de endereços de rede (NAT) para os casos que foram atribuídos endereços públicos IPv4
Omar Faroque Anik
11

O gateway da Internet é usado para conectar um vpc à Internet e o gateway NAT é usado para conectar a sub-rede Privada à Internet (o que significa que qualquer tráfego está chegando à instância de sub-rede privada que será encaminhada para o gateway NAT). você precisa encaminhar o tráfego na tabela de rotas para o NAT

Tabela de rotas 0.0.0.0/0

GNK
fonte
Obrigado pelo exemplo - me ajudou a sair da situação!
Chris
Há um diagrama nesta página: docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html que esclarece a finalidade do gateway NAT e IGW. Ambos são necessários para sub-redes privadas para ser capaz de obter acesso à Internet
Maruthi