AWS VPC - Интернет-шлюз против NAT

Что такое Интернет-шлюз? Что такое инстанс NAT? Какие услуги они предлагают?

Читая документацию по AWS VPC, я понял, что они оба сопоставляют частные IP-адреса с адресами с возможностью маршрутизации в Интернете для исходящих запросов и направляют входящие ответы из Интернета запрашивающей стороне в подсети.

Так в чем же между ними разница? В каких сценариях я использую экземпляр NAT вместо (или помимо) интернет-шлюза? По сути, это экземпляры EC2, на которых запущены какие-то сетевые приложения, или это специальное оборудование, такое как маршрутизатор?

Вместо того, чтобы просто указывать ссылки на документацию AWS, не могли бы вы объяснить их, добавив некоторую справочную информацию о том, что такое общедоступные и частные подсети, чтобы любой новичок с ограниченными знаниями в области сетей мог легко их понять? Также, когда мне следует использовать шлюз NAT вместо экземпляра NAT?

P.S. Я новичок в AWS VPC, поэтому здесь я могу сравнивать яблоки с апельсинами.


person HappyTown    schedule 01.08.2016    source источник


Ответы (3)


Интернет-шлюз

Интернет-шлюз - это логическое соединение между Amazon VPC и Интернетом. Это не физическое устройство. Только один может быть связан с каждым VPC. Он не ограничивает пропускную способность подключения к Интернету. (Единственное ограничение на пропускную способность - это размер инстанса Amazon EC2, и оно применяется ко всему трафику - внутреннему для VPC и исходящему в Интернет.)

Если у VPC нет интернет-шлюза, то к ресурсам в VPC нельзя получить доступ из Интернета (если трафик не проходит через корпоративную сеть и VPN / Direct Connect. ).

Подсеть считается общедоступной подсетью, если в ней есть таблица маршрутов, которая направляет трафик на Интернет-шлюз.

Экземпляр NAT

Инстанс NAT - это инстанс Amazon EC2, настроенный для перенаправления трафика в Интернет. Его можно запустить из существующего AMI или настроить с помощью пользовательских данных следующим образом:

#!/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

Экземпляры в частной подсети, которые хотят получить доступ к Интернету, могут перенаправлять свой связанный с Интернетом трафик на экземпляр NAT через конфигурацию таблицы маршрутов. Экземпляр NAT затем отправит запрос в Интернет (поскольку он находится в общедоступной подсети), и ответ будет перенаправлен обратно в частный экземпляр.

Трафик, отправляемый на экземпляр NAT, обычно отправляется на IP-адрес, который не связан с самим экземпляром NAT (он будет предназначен для сервера в Интернете). Поэтому важно отключить параметр Проверка источника / назначения на экземпляре NAT, иначе трафик будет заблокирован.

Шлюз NAT

AWS представила службу шлюза NAT, которая может заменить экземпляр NAT. Преимущества использования службы шлюза NAT:

  • Это полностью управляемая служба - просто создайте ее, и она будет работать автоматически, включая восстановление после сбоя.
  • Он может разорвать до 10 Гбит / с (инстанс NAT ограничен полосой пропускания, связанной с типом инстанса EC2)

Тем не мение:

  • Группы безопасности нельзя связать со шлюзом NAT.
  • Вам понадобится по одному в каждой зоне доступности, поскольку они работают только в одной зоне доступности.
person John Rotenstein    schedule 01.08.2016
comment
Не могли бы вы добавить еще один момент в заметку? Экземпляры NAT будут работать, если у вас есть IGW в общедоступной подсети. Они также ограничивают обратный поиск из Интернета для вашего экземпляра в подсети. - person Ameya; 14.02.2019
comment
Теперь, в 2019 году, NAT gw можно использовать только в VPC, выделяя EIP в общедоступной подсети или подсети с интернет-шлюзом и во внутренних подсетях, просто маршрутизируя к NAT gw. - person Felipe Buccioni; 19.03.2019
comment
Этот ответ все еще точен? В документах AWS я вижу: 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.. Из описания создается впечатление, что это реальное аппаратное устройство, но управляемое AWS. Пожалуйста, поправьте меня, если я не понимаю. - person Abhishek Divekar; 21.04.2019
comment
@AbhishekDivekar Ничего не изменилось. При работе с AWS сосредоточьтесь на том, чего вы хотите достичь, а не думайте о базовом оборудовании. - person John Rotenstein; 22.04.2019
comment
Отличное объяснение: небольшой вопрос: когда трафик выходит из экземпляра NAT или шлюза NAT, направляясь в Интернет, будет ли он по-прежнему проходить через Интернет-шлюз или в обход Интернет-шлюза? - person Sandeep; 26.04.2019
comment
Экземпляры @Sandeep NAT и шлюзы NAT существуют в VPC. Следовательно, любой трафик, выходящий из него и идущий в Интернет, все равно должен проходить через Интернет-шлюз. Если нет Интернет-шлюза, то не будет доступа в Интернет. - person John Rotenstein; 28.04.2019
comment
@JohnRotenstein Интересно, если экземпляру нужно разговаривать с Интернетом, почему бы мне не сохранить его в общедоступной подсети (и просто использовать таблицу маршрутов для перенаправления трафика в IGW) вместо того, чтобы работать с частной подсетью и NAT? Разве это не противоречит цели, которую мы называем «частной»? - person old-monk; 06.04.2020
comment
@ error2007s отвечает на мой вопрос. :) - person old-monk; 06.04.2020
comment
Этот ответ был явно скопирован на среду почти дословно: stackoverflow.com/questions/38690012/ - person gusridd; 06.08.2020

Что касается шлюза NAT и экземпляра NAT, то оба варианта будут работать. Экземпляр NAT может быть немного дешевле, но шлюз NAT полностью управляется AWS, поэтому у него есть то преимущество, что ему не нужно поддерживать экземпляр EC2 только для NAT.

Однако для экземпляров, которые должны быть доступны в Интернете, шлюз / экземпляры NAT - не то, что вы ищете. NAT позволит частным экземплярам (без общедоступного IP-адреса) получать доступ в Интернет, но не наоборот. Итак, для экземпляров EC2, которые должны быть доступны в Интернете, вам необходимо назначить общедоступный IP-адрес. Есть обходной путь, если вам действительно нужно сохранить частные экземпляры EC2 - вы можете использовать эластичный балансировщик нагрузки для проксирования запросов.

Интернет-шлюзы

Интернет-шлюз - это то, как ваш VPC подключается к Интернету. Вы используете Интернет-шлюз с таблицей маршрутов, чтобы сообщить VPC, как Интернет-трафик попадает в Интернет.

Интернет-шлюз отображается в VPC как просто имя. Amazon управляет шлюзом, и у вас нет ничего, о чем вы действительно можете сказать (кроме того, использовать его или нет; помните, что вам может потребоваться полностью сегментированная подсеть, которая вообще не может получить доступ к Интернету).

Под общедоступной подсетью понимается подсеть, в которой интернет-трафик маршрутизируется через интернет-шлюз AWS. Любому экземпляру в общедоступной подсети может быть назначен общедоступный IP-адрес (например, экземпляр EC2 с включенным "ассоциированным общедоступным IP-адресом").

Частная подсеть означает, что экземпляры не являются общедоступными из Интернета. У них НЕТ публичного IP-адреса. Например, вы не можете получить к ним доступ напрямую через SSH. Однако экземпляры в частных подсетях могут по-прежнему получать доступ к Интернету сами (т. Е. Используя шлюз NAT).

person error2007s    schedule 01.08.2016
comment
Лучший ответ с точки зрения NAT против интернет-шлюза. - person Tagar; 21.12.2016
comment
Отличный ответ. Просто дополнительный вопрос: когда экземпляр EC2 в общедоступной подсети имеет общедоступный IP-адрес, логически он самодостаточен для приема входящих запросов из Интернета или выполнения исходящих запросов в Интернет, поскольку его IP-адрес является маршрутизируемым и достижимым. Итак, какую дополнительную работу выполняет здесь Интернет-шлюз? - person Sandeep; 26.04.2019
comment
Экземпляр @Sandeep EC2 не имеет реального общедоступного IP-адреса, но за сценой он отображается на частный IP-адрес. Интернет-шлюз служит двум целям: предоставить цель в таблицах маршрутов VPC для маршрутизируемого из Интернета трафика и выполнить преобразование сетевых адресов (NAT) для экземпляров, которым были назначены общедоступные адреса IPv4. - person Omar Faroque Anik; 10.09.2019
comment
это должен был быть принятый ответ - person grepit; 14.04.2021

Интернет-шлюз используется для подключения vpc к Интернету, а шлюз NAT используется для подключения частной подсети к Интернету (что означает, что любой трафик поступает в экземпляр частной подсети, который будет перенаправляться на шлюз NAT). вам нужно перенаправить трафик в таблице маршрутов на NAT

Таблица маршрутов 0.0.0.0/0

person GNK    schedule 12.07.2017
comment
Спасибо за пример - помог мне выйти из-под контроля! - person Chris Owens; 27.01.2019
comment
На этой странице есть диаграмма: docs.aws. amazon.com/vpc/latest/userguide/vpc-nat-gateway.html, в котором разъясняется назначение шлюза NAT и IGW. Оба необходимы для частных подсетей, чтобы иметь доступ в Интернет. - person Maruthi; 19.09.2019