AWS VPC - Интернет-шлюз против NAT [закрыт]

209

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

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

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

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

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

HappyTown
источник

Ответы:

230

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

Интернет-шлюз - это логическое соединение между 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 Gateway

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

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

Тем не мение:

  • Группы безопасности не могут быть связаны со шлюзом NAT
  • Вам понадобится один в каждом AZ, так как они работают только в одном AZ
Джон Ротенштейн
источник
4
Можете ли вы добавить еще один пункт в заметку? Экземпляры NAT будут работать, если у вас есть IGW в общедоступной подсети. Они также ограничивают обратный поиск из Интернета вашим экземпляром в подсети.
Ameya
1
Теперь в 2019 году NAT gw может использоваться только в VPC, выделяя EIP в «общедоступной» подсети или подсети с «интернет-шлюзом» и во внутренних подсетях, просто направляясь к NAT gw.
Фелипе Буччони
Этот ответ все еще точен? Из документации АМС , я вижу: 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. Пожалуйста, поправьте меня, если мое понимание выключено.
Абхишек Дивекар
@AbhishekDivekar Ничего не изменилось. При работе с AWS сконцентрируйтесь на том, чего вы хотите достичь, а не думайте о базовом оборудовании.
Джон Ротенштейн
1
@Sandeep Экземпляры NAT и шлюзы NAT существуют в VPC. Поэтому любой трафик, выходящий из него и идущий в Интернет, все равно должен будет проходить через Интернет-шлюз. Если нет Интернет-шлюза, то не будет доступа к Интернету.
Джон Ротенштейн
127

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

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

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

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

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

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

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

error2007s
источник
23
Лучший ответ с точки зрения NAT против интернет-шлюза.
Тагар
Отличный ответ. Просто дополнительный вопрос: если экземпляр EC2 в общедоступной подсети имеет общедоступный IP-адрес, логически вполне достаточно либо получать входящие запросы из Интернета, либо отправлять исходящие запросы в Интернет, поскольку его IP-адрес является маршрутизируемым и достижимым. Так какую дополнительную работу здесь выполняет Интернет-шлюз?
Сандип,
Экземпляр @Sandeep EC2 не имеет реального публичного IP-адреса, но за сценой он сопоставлен с частным IP-адресом. Интернет-шлюз служит двум целям: предоставить в таблицах маршрутизации VPC цель для трафика, маршрутизируемого через Интернет, и выполнить преобразование сетевых адресов (NAT) для экземпляров, которым был назначен общедоступный адрес
IPv4S
11

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

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

ГНК
источник
Спасибо за пример - выручил меня из безвыходного положения!
Крис
На этой странице есть диаграмма: docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html, которая поясняет назначение шлюза NAT и IGW. И то, и другое необходимо для частных подсетей, чтобы получить доступ к Интернету
Maruthi