Инфраструктура сети AWS может стать сложной. Существуют также некоторые совпадения между различными технологиями, что затрудняет понимание того, что делает.
Некоторые из вопросов, которые я слышу больше всего, относятся к пересечению между AWS VPC, упругими сетевыми интерфейсами, Elastic IP и тесно связанной группой безопасности и ACL. Это моя попытка прояснить на практическом плане разницу между этими технологиями.
Если вы хотите посмотреть на чит-лист, прокрутите вниз внизу.
AWS VPC
История — VPC была запоздалой мыслью
В первые дни AWS, когда EC2 пообещал все случаи всех клиентов, которые могли общаться друг с другом. Если Алиса запустила экземпляр в своей учетной записи, а Боб запустил другой экземпляр, его учетная запись, два экземпляра смогли общаться друг с другом из коробки. Чтобы предотвратить это, Алиса (или Боб) должна была установить группу безопасности, что позволило только трафику выбранного IPS или от экземпляров, запущенных с той же группой безопасности.
Проблема с группой безопасности заключалась в том, что это было очень легко испортить, что позволило другим аккаунтам AWS нарушать экземпляры. Этот режим операций называется EC2-Classic, чтобы отличить его от нового способа, которым предоставляются экземпляры EC2.
В этом новом режиме экземпляры EC2 всегда запускаются в VPC (называемом VPC по умолчанию), который имеет группу безопасности по умолчанию. Экземпляры в разных VPC не общаются друг с другом, если они не заглянуты. Конечно, вы также можете создать свои собственные экземпляры VPC и запуска.
Сегодня EC2-Classic существует только по унаследованным причинам, которые связаны с задачей вернуть услугу после запуска.
Что такое VPC?
Освещая историю, что такое VPC? Это изолированная часть облака AWS . Экземпляры, запущенные в VPC, не могут быть доступны из других VPC в той же учетной записи или других учетных записях AWS. Основным свойством является блок CIDR, который представляет собой диапазон адресов IPv4, назначенных экземплярам, запущенным в VPC. Оставив в стороне безопасность группы и ACL (которые обсуждаются позже), Все экземпляры, созданные в одном и том же VPC, могут общаться друг с другом, как в частной локальной сети Анкет
После создания VPC вы можете добавить дополнительные подсети, делит диапазон IP -адресов, назначенных VPC.
Группа безопасности
Что такое группа безопасности?
A Группа безопасности действует как виртуальный брандмауэр, который управляет трафиком от/до сетевого интерфейса. Когда вы запускаете экземпляр, вы получаете сетевой интерфейс по умолчанию (ETH0). Экземпляр EC2 может иметь несколько сетевых интерфейсов и Каждый сетевой интерфейс может иметь различную группу безопасности . Позже я расскажу, как прикрепить дополнительные сетевые интерфейсы к экземпляру.
Смущая терминология
Группы безопасности прикреплены к сетевому интерфейсу, а не к экземпляру. Когда вы запускаете экземпляр, он получает сетевой интерфейс по умолчанию (ETH0). Группа безопасности будет подключена к этому сетевому интерфейсу по умолчанию. Не одурачивайте, каждый раз, когда вы указываете группу безопасности для сервиса AWS, стоит сетевой интерфейс. Давайте возьмем, например, AWS Elastic File File System. Когда вы создаете файловую систему, вы будете указывать группы безопасности. Означает ли это, что группа безопасности контролирует доступ к файловой системе? Ну, в некотором смысле да. Но технически группа безопасности будет подключена к эластичному сетевому интерфейсу (ENI), который EFS создает от вашего имени.
Я собираюсь обсудить Энис позже, вывод здесь: Группы безопасности связаны с сетевыми интерфейсами (упругими или нет), и они действуют как виртуальный брандмауэр, который управляет трафиком от/до сетевых интерфейсов.
Еще более запутанно
Подсети в VPC может иметь группу безопасности по умолчанию. Означает ли это, что группы безопасности могут быть прикреплены к сетевым интерфейсам, а также подсети? Ммм, не совсем. Определяя группу безопасности по умолчанию для подсети, вы сообщили EC2, что в следующий раз, когда вы запустите экземпляр в этой подсети, она должна прикрепить эту группу безопасности к сетевому интерфейсу экземпляра. То есть, если вы не переопределяете группу безопасности в вызове API экземпляра запуска.
Подсету изоляция
После создания вашего VPC вы делите его на подсети. В AWS VPC подсети не являются границами изоляции. Скорее, они являются контейнерами для политики маршрутизации. Выделение между подсетями достигается путем прикрепления группы безопасности к экземплярам EC2.
Например, давайте предположим, что у нас есть две подсети в VPC: SubNetA — 10.0.0.0/25, а подсеть — 10.0.0.128/25. Чтобы изолировать их, создайте группу безопасности для SGSubNeta, которая позволяет весь трафик для CIDR 10.0.0.0/25 и другого SGSubNetB, который позволяет трафик для CIDR 10.0.0.128/25. Подключите Sgsubneta к экземплярам, запущенным в SubNetA и SGSUBNetB для одного в SubNetB. Результат : Только экземпляры в подсети могут разговаривать друг с другом, но экземпляры от подсети не могут общаться с экземплярами из SubNetB и наоборот.
VPC ACL
Список контроля доступа сети (ACL) — это сетевой брандмауэр. С группами безопасности вы можете контролировать то, что входит и выходит ваши экземпляры, и с VPC ACL вы можете контролировать то, что входит и выходит из вашего VPC.
Eip
Эластичный IP -адрес (EIP) — это статический адрес IPv4, предоставляемый AWS.
Вы связываете EIP с сетевым интерфейсом. Документация немного сбивает с толку по этому вопросу, потому что в нем говорится, что вы можете прикрепить EIP к бегому экземпляру или к ENI. Что не говорит, так это то, что, прикрепляя EIP к экземпляру, вы на самом деле прикрепляете его к сетевому интерфейсу по умолчанию экземпляра (ETH0).
Вы можете подключить дополнительные сетевые интерфейсы к экземпляру, подключив к нему дополнительную ENIS.
Эни
Эластичный сетевой интерфейс (ENI) — это стек сети экземпляра. Каждый ENI живет в определенной подсети VPC и имеет следующие атрибуты (не исчерпывающий список):
- Частный IP -адрес
- Эластичный IP -адрес
- MAC-адрес
- Группа безопасности (я)
Очень важным следствием этой новой модели является то, что идея запуска экземпляра EC2 в конкретной подсети VPC эффективно устарела. Один экземпляр EC2 может быть прикреплен к двум ENIS, каждый из которых на отдельной подсети. ENI (не экземпляр) теперь связан с подсети.
Это включает два мощных варианта использования: при условии, что мы создали два экземпляра EC2 (экземпляр-A и экземпляр B), ENI и публичный EIP. EIP прикреплен к ENI, а ENI прикреплен к экземпляру -A. Оба экземпляра EC2 запускают веб -сервер.
Давайте визуализируем это:
На изображении клиент отправляет HTTP -запрос в EIP. EC2-A ответит на HTML-страницу. Теперь, если мы перенесем ENI от EC2-A в EC2-B (отделить от EC2-A и приедем к EC2-B), следующий запрос, поступающий от клиента EC2-B. Это фундаментальный строительный блок, который позволяет создавать стратегию первичного обновления. ПРИМЕЧАНИЕ. Я не хочу мучать воду, поэтому я не буду ходить в другие решения для первичной эксплуатации. Только для того, чтобы вы узнали, что переключение ENI является лишь одним из возможных решений для создания механика первичного обморока в системе — балансировщики нагрузки или консенсусные группы — другие варианты.
Вы также можете использовать его для создания среды с двумя доходами для ваших серверов веб-сайтов, приложений и баз данных. Первый ENI экземпляра будет прикреплен к публичной подсети, маршрутизируя 0,0.0.0/0 (весь трафик) к интернет -шлюзу VPC. Второй ENI экземпляра будет прикреплен к частной подсети, причем 0,0.0.0 направляется к шлюзу VPN, подключенным к вашей корпоративной сети. Вы будете использовать частную сеть для доступа SSH, управления, ведения журнала и т. Д. Вы можете применять различные группы безопасности к каждому ENI, чтобы через первую ENI разрешается порт 80 трафика, а трафик из частной подсети на порту 22 разрешен через второй ENI.
Интернет -шлюз
Компонент VPC, который позволяет общаться между экземплярами в вашем VPC и в Интернете. Чтобы ваши экземпляры могли подключаться к Интернету или быть достигнутыми из Интернета, VPC должен иметь интернет -шлюз. Имейте в виду, что это необходимый компонент, но этого недостаточно, что означает, что вам также нужно что -то еще, чтобы обеспечить подключение к Интернету. Это обсуждается в разделах «Подключите от EC2 к Интернету» и «Подключиться от Интернета к EC2» Анкет
Маршрутный стол
Таблица маршрута определяет, как трафик проходит от одной подсети к другой. Таблица маршрутов создается автоматически при создании VPC и содержит только одно правило, которое позволяет всем экземплярам в VPC общаться между друг другу (правило называется «от подсети CIDR к локальному»). Правило не может быть изменено или удалено, что означает, что экземпляры в одном и том же VPC всегда могут общаться друг с другом, и вы не можете ограничить эту таблицу маршрутов. Вам нужно использовать группы безопасности для этого: см. Раздел «Азоляция подсетей ».
Частный против публичной подсети
Частная и публичная является новой собственностью подсети, что означает, что подсеть становится публичной или частной в зависимости от того, как настроена подсеть. Они идентифицируют концепцию, а не сущности в консоли AWS.
Общественная подсеть Если трафик подсети маршрутизируется в интернет -шлюз, подсеть известна как публичная подсеть. Частная подсеть Если подсеть не имеет маршрута к интернет -шлюзу, подсеть известна как частная подсеть.
Подключите от EC2 к Интернету
Чтобы подключиться к Интернету, у вас есть два варианта:
Общественная подсеть Анкет Создайте интернет -шлюз в VPC и назначьте общедоступный адрес (или публичный EIP) сетевому интерфейсу EC2. Эта же конфигурация также позволяет также тратить от Интернета до EC2. Таблица маршрутов, назначенная сети, должна быть установлена для пересылки интернет -трафика (0.0.0.0/0) в интернет -шлюз
Приватная подсеть Анкет Создайте две подсету (субпубличный и подплатный) и интернет -шлюз. Создайте Nat Gateway в Subbublic. Создайте две таблицы маршрутов, одну для субпублики и одну для субпростирания. В маршруте для субпублики определите правило, которое направляет весь интернет -трафик (0,0.0.0/0) в интернет -шлюз. В подправателе Определите правило, которое направляет интернет -трафик (0,0.0.0/0) в шлюз NAT
Прежде чем я скажу вам, какой из них я бы порекомендовал, позвольте мне немного отступить. Если вы следовали за ним, вы можете задать себе несколько общих вопросов. Что касается первого варианта, то общий вопрос: почему интернет -шлюз недостаточно для подключения к Интернету? Почему экземпляр EC2 нужен публичный адрес? Что ж, ответ заключается в том, что интернет -шлюз не выполняет полный NAT (например, маршрутизатор, который у нас есть дома), он выполняет только 1–1 NAT для публичных IP, которые нанесены на карту для экземпляров. Это означает, что вызовы не могут выйти из интернет -шлюза с помощью личного адреса, потому что шлюз не знал бы, как отобразить ответ на текущий экземпляр на обратном пути. Практически говоря, это не делает Nat Анкет
Что касается второго варианта, один вопрос заключается в том, почему нам нужны две подчинки, две таблицы маршрутов и т. Д. Можно представить, имея одну подсеть и создать в ней NAT. Создайте интернет -шлюз для VPC, и это будет все. И ответ в том, что вы не можете этого сделать И я не совсем уверен, почему. Вам нужно иметь две подчинки. Похоже на дизайнерское решение AWS.
Какой подход мы должны выбрать?
С первым подходом (публичной подсети) недостатком является то, что мы не только создали канал из экземпляров EC2 в Интернет, но и наоборот. Это означает, что любой в Интернете может попытаться получить доступ к вашим экземплярам EC2. Технически нет ничего, что не останавливает, вы используете этот подход, в конце концов, вы можете использовать группу безопасности, которая отрицает входящее соединение. Однако, используя частную подсеть, даже если вы случайно открыли группу безопасности, внешний доступ к этой подсети не существует напрямую, так что это дополнительный уровень защиты. Эта последняя точка делает приватную подсеть мой подход по умолчанию Анкет
Подключитесь от Интернета к EC2
Чтобы добраться до машины из Интернета, вам нужен интернет -шлюз и публичный IP (или публичный EIP, прикрепленный к экземпляру). Это общедоступный подход, который мы видели в предыдущем разделе.
Конечные точки VPC
Конечная точка VPC позволяет экземплярам в VPC общаться с поддерживаемыми службами AWS (S3, динамо и т. Д.) Без интернет -шлюза или шлюза Nat. Использование вариантов: экземпляры EC2 должны иметь доступ к другим услугам AWS, но вы не хотите разрешать какой -либо другой исходящий трафик в Интернете. Вы можете получить тот же результат, прикрепив группу безопасности, которая допускает только исходящие подключения к службам AWS, но это связано с риском случайного изменения группы безопасности таким образом, чтобы позволить доступ к Интернету. Конечная точка VPC решает эту проблему.
Получите оболочку в EC2
Забудьте SSH, используйте AWS SSM, чтобы подключиться к экземпляру. Или, если вы хотите использовать SSH, используйте SSM через SSH. Управление множеством клавиш SSH или бастионного хоста — это то, что скоро будет забыто.
Если экземпляры EC2 не должны быть клиентами (частная подсеть), рассмотрите возможность использования конечной точки VPC для SSM, которая Позволяет подключаться к экземплярам, пока оставайтесь совершенно недоступными от всех в Интернете.
AWS SSM предварительно установлен на экземплярах Amazon Linux 2, то есть вы можете начать использовать его из коробки, чтобы подключиться к экземплярам EC2. В любом случае, очень легко установить SSM на экземпляры в пользовательских данных как часть начальной загрузки экземпляра.
Выводы
Я освещал большой патрон сети AWS, но не все это. Некоторые вещи, которые вы, возможно, захотите прочитать дальше: VPN, Transit Gateways, VPC Peering, частные ссылки, Route53 частные зоны и т. Д.
Чит-лист
| Изолированная часть облачной сети AWS | VPC |
| Группа безопасности связана с сетевыми интерфейсами (Elastic или нет), и они действуют как виртуальный брандмауэр, который управляет трафиком от/до сетевого интерфейса | Группа безопасности |
| Подсети не являются границами изоляции. Скорее, они являются контейнерами для политики маршрутизации. Чтобы изолировать одну подсеть от другой, прикрепите группу безопасности к экземплярам, запущенным в каждой подсети | Подсету изоляция |
| ACL — это сетевой брандмауэр. С группами безопасности вы можете контролировать то, что входит и выходит ваши экземпляры, и с VPC ACL вы можете контролировать то, что входит и выходит из вашего VPC | Acl |
| Статический адрес IPv4 (он может частным или публичным) | Eip |
| Сетевой интерфейс, который можно подключить к экземпляру EC2 | Эни |
| Компонент VPC, который позволяет экземплярам в VPC подключаться к Интернету. Это необходимо, но недостаточно | Интернет -шлюз |
| Подсеть, которая трафик направляется в интернет -шлюз | Общественная подсеть |
| Подсеть, у которой нет маршрута к интернет -шлюзу | Частная подсеть |
| Чтобы подключиться к Интернету, экземпляр EC2 должен быть либо: — В VPC с интернет -шлюзом и общедоступным адресом (или общедоступным EIP) прикреплен к его сетевому интерфейсу — В VPC с интернет -шлюзом и шлюзом Nat. Таблица маршрутов должно иметь правило Этот движущийся трафик (от экземпляров EC2 и направлен на интернет -трафик) на Gateway Nat | Подключите от EC2 к Интернету |
| Чтобы подключиться из Интернета к экземпляру EC2, вам необходимо иметь VPC с интернет -шлюзом и иметь общедоступный адрес (или публичный EIP), прикрепленный к его сетевому интерфейсу | Подключитесь от Интернета к EC2 |
| Конечная точка VPC позволяет экземплярам в VPC общаться с поддерживаемыми службами AWS (S3, динамо и т. Д.) Без интернет -шлюза или Nat Gateway | Конечные точки VPC |
| Конечная точка SSM или SSM + VPC | Получите оболочку в EC2 |
Следуй за мной на Twitter Чтобы получить новые сообщения в вашем канале. Кредит на изображение обложки в Graphicmama-Team
Оригинал: «https://dev.to/napicella/aws-networking-cheat-sheet-eip-eni-vpc-etc-139m»