AWS VPC - интернет-шлюз против NAT
Что такое интернет-шлюз? Что такое NAT-экземпляр? Какие услуги они предлагают?
Чтение документации AWS VPC, я собираюсь, они оба сопоставляют частные IP-адреса с адресами, адресованными интернет-маршрутам для исходящих запросов, и направляют входящие ответы из Интернета на запросчика в подсети.
Так в чем же разница между ними? В каких сценариях я использую NAT-экземпляр вместо (или кроме того) интернет-шлюза?
Являются ли они в основном экземплярами EC2, использующими некоторые сетевые приложения, или они являются специальным оборудованием, таким как маршрутизатор?
Вместо того, чтобы просто указывать ссылки на AWS-документацию, можете ли вы объяснить это, добавив некоторые сведения о том, что такое общедоступные и закрытые подсети, чтобы любой новичок с ограниченными знаниями сети мог легко их понять?
Также, когда я должен использовать NAT-шлюз вместо экземпляра NAT?
P.S. Я новичок в AWS VPC, поэтому я мог бы сравнивать яблоки с апельсинами здесь.
Ответы
Ответ 1
Интернет-шлюз
Интернет-шлюз - это логическое соединение между VPC Amazon и Интернетом. Это не физическое устройство. С каждым VPC можно связать только один. Он не ограничивает пропускную способность интернет-соединения. (Единственное ограничение ширины полосы пропускания - это размер экземпляра Amazon EC2, и он применяется ко всему трафику - внутреннему к VPC и к Интернету.)
Если у VPC нет нет интернет-шлюза, доступ к ресурсам в VPC недоступен из Интернета (если трафик не проходит через корпоративную сеть и VPN/Direct Connect).
Подсеть считается Public Subnet, если она имеет таблицу маршрутов, которая направляет трафик на Интернет-шлюз.
Экземпляр 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 Gateway:
- Это полностью управляемый сервис - просто создайте его, и он работает автоматически, включая fail-over
- Он может разрывать до 10 Гбит/с (показатель NAT ограничен полосой пропускания, связанной с типом экземпляра EC2)
Однако:
- Группы безопасности не могут связываться с шлюзом NAT
- Вам понадобится один в каждом AZ, поскольку они работают только в одном AZ
Ответ 2
Что касается NAT-шлюза или NAT-экземпляра, то он будет работать. Экземпляр NAT может быть немного дешевле, но NAT-шлюз полностью управляется AWS, поэтому он имеет то преимущество, что ему не нужно поддерживать экземпляр EC2 только для NATing.
Однако для экземпляров, которые должны быть доступны для Интернета, шлюз/экземпляры NAT не являются тем, что вы ищете. NAT позволит частным экземплярам (без публичного IP) получать доступ к Интернету, но не наоборот. Итак, для экземпляров EC2, которые должны быть доступны в Интернете, вам необходимо назначить публичный IP-адрес. Существует обходное решение, если вам действительно нужно, чтобы экземпляры EC2 были приватными - вы можете использовать эластичный балансировщик нагрузки для запроса запросов.
Интернет-шлюзы
Интернет-шлюз - это то, как ваш VPC подключается к Интернету. Вы используете интернет-шлюз с таблицей маршрутов, чтобы сообщить VPC, как интернет-трафик поступает в Интернет.
В VPC появляется интернет-шлюз как просто имя. Amazon управляет шлюзом, и в этом нет ничего, на что вы действительно говорите (кроме использования или нет, помните, что вам может понадобиться полностью сегментированная подсеть, которая вообще не может получить доступ к Интернету).
Общественная подсеть означает подсеть, в которой интернет-трафик маршрутизируется через интернет-шлюз AWS. Любой экземпляр внутри публичной подсети может иметь публичный IP, назначенный ему (например, экземпляр EC2 с включенным "связанным публичным IP-адресом" ).
Частная подсеть означает, что экземпляры недоступны из Интернета. У них нет общедоступного IP-адреса. Например, вы не можете получить к ним доступ напрямую через SSH. Экземпляры в частных подсетях могут по-прежнему получать доступ к самому Интернету (т.е. С помощью шлюза NAT).
Ответ 3
Интернет-шлюз используется для подключения vpc к Интернету, а шлюз NAT используется для подключения частной подсети к Интернету (что означает, что трафик поступает на частный экземпляр подсети, который будет перенаправляться на шлюз NAT). вам необходимо перенаправить трафик в таблице маршрутов на NAT
Таблица маршрутов
0.0.0.0/0