Ответ 1
Обновление: в конце декабря 2015 года AWS анонсировала новую функцию Управляемый NAT Gateway для VPC. Эта дополнительная услуга предоставляет альтернативный механизм для экземпляров VPC в частной подсети для доступа к Интернету, где ранее общее решение было экземпляром EC2 в общей подсети в VPC, функционирующей как "экземпляр NAT", обеспечивающий трансляцию сетевых адресов ( технически, преобразование адресов порта) для экземпляров в других частных подсетей, позволяющих этим машинам использовать публичный IP-адрес экземпляра NAT для исходящего доступа к Интернету.
Новая управляемая служба NAT принципиально не изменяет применимость следующей информации, но этот вариант не рассматривается в следующем ниже содержании. Экземпляр NAT можно использовать, как описано, или вместо него можно настроить службу управляемого шлюза NAT. Расширенная версия этого ответа, включающая дополнительную информацию о NAT Gateway и том, как она сравнивается с экземпляром NAT, будет доступна, так как они имеют отношение к частной/публичной парадигме подсети в VPC.
Обратите внимание, что Интернет-шлюз и шлюз NAT - это две разные функции. Все конфигурации VPC с доступом в Интернет будут иметь виртуальный объект Internet Gateway.
Чтобы понять различие между "private" и "общедоступными" подсетями в VPC Amazon, необходимо понимать, как работают IP-маршрутизация и трансляция сетевых адресов (NAT), и как они специально реализованы в VPC.
Основное различие между публичной и частной подсети в VPC определяется тем, что этот маршрут по умолчанию для подсети, в таблицах маршрутизации VPC.
Эта конфигурация, в свою очередь, диктует обоснованность использования или не использования общедоступных IP-адресов для экземпляров в этой конкретной подсети.
Каждая подсеть имеет ровно один маршрут по умолчанию, который может быть только одним из двух:
- объект VPC "Интернет-шлюз" , в случае "общедоступной" подсети или
- устройство NAT, то есть либо NAT-шлюз, либо экземпляр EC2, выполняющий роль "NAT-экземпляр" в случае подсети "private".
Интернет-шлюз не выполняет трансляции сетевых адресов для экземпляров без общедоступных IP-адресов, поэтому экземпляр без публичного IP-адреса не может подключаться наружу к Интернету - выполнять такие функции, как загрузка обновлений программного обеспечения или доступ к другим ресурсам AWS, таким как S3 1 и SQS - если маршрут по умолчанию в подсети VPC является объектом интернет-шлюза. Итак, если вы являетесь экземпляром в "общедоступной" подсети, вам нужен публичный IP-адрес, чтобы сделать значительное количество вещей, которые обычно нужно выполнять серверам.
Для экземпляров с только частным IP-адресом существует альтернативный способ исходящего доступа к Интернету. В этом случае Network Address Translation & sup2; и появляется экземпляр 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 в трафике), а не объектом интернет-шлюза (а это не так). Входящий трафик из Интернета попадает в общий IP-адрес экземпляра, но ответы будут пытаться маршрутизировать наружу через экземпляр NAT, который либо снизит трафик (поскольку он будет состоять из ответов на соединения, о которых он не знает, поэтому они 'd считается недопустимым) или переписывает трафик ответа на использование своего собственного общедоступного IP-адреса, который не будет работать, поскольку внешнее происхождение не будет принимать ответы, которые поступают с IP-адреса, отличного от того, который они пытались инициировать.
В сущности, тогда "private" и "общедоступные" обозначения на самом деле не касаются доступности или недоступности из Интернета. Они относятся к типам адресов, которые будут назначены экземплярам в этой подсети, что имеет значение из-за необходимости переводить или избегать перевода - эти 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 Endpoint". Он также решает проблему ограничения исходящего доступа к S3 для конкретного экземпляра, поскольку список префикса может использоваться в исходящих группах безопасности вместо IP-адреса назначения или блока - и конечная точка S3 VPC может подвергаться дополнительным политическим утверждениям, ограничивая доступ к ведру изнутри, по желанию.
2. Как отмечается в документации, на самом деле обсуждаются здесь как порт, так и трансляция сетевых адресов. Обычно, хотя технически немного неточно, ссылаться на комбинированную операцию как "NAT". Это несколько похоже на то, как многие из нас склонны говорить "SSL", когда мы на самом деле имеем в виду "TLS". Мы знаем, о чем мы говорим, но мы не используем наиболее правильное слово для его описания. " Примечание. Мы используем термин NAT в этой документации для соблюдения общей практики ИТ, хотя фактическая роль устройства NAT - это как преобразование адресов, так и трансляция адресов портов (PAT).