Обновление: в конце декабря 2015 г., AWS объявила о новой функции: Управляемый шлюз NAT для VPC. Эта дополнительная услуга предоставляет альтернативный механизм для экземпляров VPC в частной подсети для доступа к Интернету, где ранее общим решением был экземпляр EC2 в общедоступной подсети в VPC, функционирующий как «экземпляр NAT», обеспечивающий преобразование сетевых адресов ( технически, преобразование адресов порт) для экземпляров в других частных подсетях, позволяя этим машинам использовать общедоступный IP-адрес экземпляра NAT для исходящего доступа в Интернет.
Новая управляемая служба NAT не меняет принципиально применимость следующей информации, но этот параметр не рассматривается в последующем контенте. Экземпляр NAT по-прежнему можно использовать, как описано, или вместо этого можно предоставить службу управляемого шлюза NAT. В ближайшее время будет выпущена расширенная версия этого ответа, включающая дополнительную информацию о шлюзе NAT и его сравнении с экземпляром NAT, поскольку оба они имеют отношение к парадигме частной / общедоступной подсети в VPC.
Обратите внимание, что Интернет-шлюз и NAT-шлюз - это две разные функции. Все конфигурации VPC с доступом в Интернет будут иметь виртуальный объект Internet Gateway.
Чтобы понять различие между «частными» и «общедоступными» подсетями в Amazon VPC, необходимо понимать, как в целом работают IP-маршрутизация и преобразование сетевых адресов (NAT) и как они конкретно реализованы в VPC.
Основное различие между общедоступной и частной подсетями в VPC определяется маршрутом по умолчанию для этой подсети в таблицах маршрутизации VPC.
Эта конфигурация, в свою очередь, определяет допустимость использования или неиспользования общедоступных IP-адресов на экземплярах в этой конкретной подсети.
Каждая подсеть имеет ровно один маршрут по умолчанию, который может быть только одним из двух:
- объект VPC «Интернет-шлюз» в случае «общедоступной» подсети или
- устройство NAT, то есть шлюз NAT или экземпляр EC2, выполняющий роль «экземпляра NAT» в случае «частной» подсети.
Интернет-шлюз не выполняет преобразование сетевых адресов для экземпляров без общедоступных IP-адресов, поэтому экземпляр без общедоступного IP-адреса не может подключаться внешне к Интернету - для таких действий, как загрузка обновлений программного обеспечения или доступ к другим Ресурсы AWS, такие как S3 1 и SQS - если маршрутом по умолчанию в его подсети VPC является объект Internet Gateway. Итак, если вы являетесь экземпляром в «общедоступной» подсети, вам нужен общедоступный IP-адрес для выполнения значительного количества вещей, которые обычно необходимы серверам.
Для экземпляров только с частным IP-адресом существует альтернативный способ исходящего доступа в Интернет. Здесь на помощь приходят трансляция сетевых адресов и экземпляр NAT.
Машины в частной подсети могут получить доступ к Интернету, поскольку маршрут по умолчанию в частной подсети не является объектом VPC «Интернет-шлюз» - это экземпляр EC2, настроенный как экземпляр NAT.
Экземпляр NAT - это экземпляр в общедоступной подсети с общедоступным IP-адресом и определенной конфигурацией. Существуют предварительно созданные AMI для этого, или вы можете создать свои собственные.
Когда машины с частным адресом отправляют трафик наружу, трафик отправляется VPC в экземпляр NAT, который заменяет исходный IP-адрес в пакете (частный IP-адрес частной машины) своим собственным общедоступным IP-адресом, отправляет трафик. в Интернет, принимает ответные пакеты и пересылает их обратно на частный адрес исходной машины. (Он также может переписать исходный порт, и в любом случае он запоминает сопоставления, чтобы знать, какая внутренняя машина должна получать ответные пакеты). Экземпляр NAT не позволяет «неожиданному» входящему трафику достигать частных экземпляров, если он специально не настроен для этого.
Таким образом, при доступе к внешнему Интернет-ресурсу из частной подсети трафик проходит через экземпляр NAT и для пункта назначения кажется, что он исходит с общедоступного IP-адреса экземпляра NAT ... поэтому ответный трафик возвращается в экземпляр NAT. Ни группу безопасности, назначенную экземпляру NAT, ни группу безопасности, назначенную частному экземпляру, не нужно настраивать так, чтобы «разрешать» этот ответный трафик, поскольку группы безопасности отслеживают состояние. Они понимают, что ответный трафик коррелирует с внутренними сеансами, поэтому он автоматически разрешается. Неожиданный трафик, конечно, запрещается, если группа безопасности не настроена на его разрешение.
В отличие от обычной IP-маршрутизации, где ваш шлюз по умолчанию находится в той же подсети, способ ее работы в VPC отличается: экземпляр NAT для любой данной частной подсети всегда находится в другой подсети, а эта другая подсеть всегда является общедоступной подсетью, потому что Экземпляр NAT должен иметь общедоступный внешний IP-адрес, а его шлюз по умолчанию должен быть объектом VPC «Интернет-шлюз».
Точно так же ... вы не можете развернуть экземпляр с общедоступным IP-адресом в частной подсети. Это не работает, потому что маршрут по умолчанию в частной подсети - это (по определению) экземпляр NAT (который выполняет NAT для трафика), а не объект Internet Gateway (который не работает). Входящий трафик из Интернета попадет на общедоступный IP-адрес экземпляра, но ответы будут пытаться направить наружу через экземпляр NAT, что либо отбросит трафик (поскольку он будет состоять из ответов на подключения, о которых он не знает, поэтому они 'будет считаться недействительным) или перепишет ответный трафик, чтобы использовать свой собственный общедоступный IP-адрес, что не будет работать, поскольку внешний источник не будет принимать ответы, пришедшие с IP-адреса, отличного от того, с которым они пытались инициировать связь. .
Таким образом, по сути, обозначения «частный» и «общедоступный» на самом деле не связаны с доступностью или недоступностью из Интернета. Они касаются типов адресов, которые будут назначены экземплярам в этой подсети, что актуально из-за необходимости переводить - или избегать преобразования - этих IP-адресов для взаимодействия в Интернете.
Поскольку у VPC есть неявные маршруты из всех подсетей VPC во все другие подсети VPC, маршрут по умолчанию не играет роли во внутреннем трафике VPC. Экземпляры с частными IP-адресами будут подключаться к другим частным IP-адресам в VPC "со" своего частного IP-адреса, а не "со" своего общедоступного IP-адреса (если он у них есть) ... пока адрес назначения является другим частным адресом внутри VPC.
Если вашим экземплярам с частными IP-адресами никогда и ни при каких обстоятельствах не потребуется исходящий Интернет-трафик, то они технически могут быть развернуты в «общедоступной» подсети и по-прежнему будут недоступны из Интернета ... но при такой конфигурации, для них невозможно создать исходящий трафик в Интернет, который включает соединения с другими сервисами инфраструктуры AWS, например, S3 1 или SQS.
1. Что касается S3, в частности, сказать, что доступ к Интернету требуется всегда, - это чрезмерное упрощение, которое, вероятно, со временем будет расширяться и распространяться на другие сервисы AWS, поскольку возможности VPC продолжают расти и развиваться. Существует относительно новая концепция, называемая конечная точка VPC, которая позволяет вашим экземплярам, включая те, у кого есть только частные IP-адреса, для прямого доступа к S3 из выбранных подсетей в VPC, не касаясь «Интернета» и без использования экземпляра NAT или шлюза NAT, но это требует дополнительной настройки и может использоваться только для доступа к сегментам внутри тот же регион AWS, что и ваш VPC. По умолчанию S3 - которая на момент написания этой статьи является единственной службой, которая предоставляет возможность создания конечных точек VPC - доступна только изнутри VPC через Интернет. При создании конечной точки VPC создается список префиксов (pl-xxxxxxxx
), который можно использовать в таблицах маршрутов VPC для отправки трафика, привязанного к этой конкретной службе AWS, непосредственно к службе через виртуальный объект «Конечная точка VPC». Это также решает проблему ограничения исходящего доступа к S3, например, потому что список префиксов может использоваться в группах безопасности исходящего трафика вместо целевого IP-адреса или блока, а конечная точка S3 VPC может быть предметом дополнительных политик. , ограничивая доступ к корзине изнутри по желанию.
2. Как отмечалось в документации, на самом деле здесь обсуждается порт, а также преобразование сетевых адресов. Обычно, хотя технически это немного неточно, объединенную операцию называют «NAT». Это отчасти похоже на то, как многие из нас обычно говорят «SSL», когда на самом деле имеют в виду «TLS». Мы знаем, о чем говорим, но не используем самое правильное слово, чтобы описать это. "Примечание. Мы используем термин NAT в этой документации, чтобы следовать общепринятой ИТ-практике, хотя фактическая роль устройства NAT - это как преобразование адресов, так и преобразование адресов портов (PAT) ".
person
Michael - sqlbot
schedule
05.03.2014