Экземпляр EC2 не может подключиться к публичному IP.

Вопрос или проблема

Я ломаю голову, пытаясь понять, в чем проблема с подключением моего EC2 VPC. У меня есть два экземпляра EC2 в одной публичной подсети с интернет-шлюзом. Оба экземпляра имеют публичный (эластичный) IP-адрес. Экземпляр A может пинговать B по его приватному IP-адресу, но не может пинговать его публичный IP-адрес.
Я могу пинговать B из дома без проблем.

Таблица маршрутизации подсети выглядит так:

Назначение Цель
172.16.0.0/20 локальный
0.0.0.0/0 igw-xxxxx

Экземпляр A работает на Windows, и его таблица маршрутизации из route print выглядит правильно:

Таблица маршрутизации IPv4
===========================================================================
Активные маршруты:
Назначение сети        Маска сети          Шлюз       Интерфейс  Метрика
          0.0.0.0          0.0.0.0       172.16.0.1       172.16.0.9     15

Экземпляр B работает на Linux, и я отключил на нем брандмауэр.

Группа безопасности B имеет входящее правило, позволяющее весь трафик от группы безопасности A.

Если я добавляю входящее правило в группу безопасности B, позволяющее весь трафик от ЛЮБОГО источника, то все работает. Но я хочу разрешить трафик только от группы безопасности A.

Вам нужно разрешить эластичный IP-адрес A в группе безопасности B (ICMP), потому что когда вы пингуете B по его публичному IP-адресу, трафик не воспринимается как исходящий с приватного IP-адреса, а с публичного IP-адреса.

Вот что происходит:

  • Вы вводите: ping B (публичный IP/EIP),
  • Ваша сеть VPC пытается маршрутизировать трафик на публичный IP-адрес,
  • Совпадающий маршрут — 0.0.0.0/0 (igw-xxxxx)
  • Трафик маршрутизируется вне VPC/AWS, и исходный IP изменится (NAT). Таким образом, исходный IP пакета будет EIP A, а целевой IP будет EIP B,
  • Пакеты возвращаются в AWS.

Пожалуйста, проверьте документацию AWS:

Когда вы указываете группу безопасности как источник для правила, трафик разрешается от сетевых интерфейсов, которые ассоциированы с исходной группой безопасности для указанного протокола и порта. Входящий трафик разрешается на основе приватных IP-адресов сетевых интерфейсов, ассоциированных с исходной группой безопасности (и не публичных или эластичных IP-адресов).

Хотя, вопрос автора уже решен. Хотелось бы добавить еще несколько сценариев для будущих читателей, чтобы помочь им.

  • При создании экземпляра EC2 в сети, если вы выберете приватную подсеть, вы не сможете подключиться к ней через SSH.

enter image description here

  • Проверьте также свой NACL [Список контроля доступа к сети], группу безопасности. Если там есть какое-либо блокирующее входящее правило, сервер будет недоступен.

.

Ответ или решение

Когда возникает проблема с подключением EC2 экземпляра к публичному IP-адресу, важно рассмотреть несколько аспектов настройки сетевой инфраструктуры в вашем AWS аккаунте. На первый взгляд, проблема может показаться сложной, однако внимательное изучение всех аспектов, связанных с конфигурацией сети, поможет найти её решение.

Теория

Для начала давайте разберемся, как происходит маршрутизация и обработка запросов в Amazon VPC (Virtual Private Cloud). EC2 экземпляры, размещенные в VPC, взаимодействуют через сети, которые управляются несколькими компонентами:

  1. Маршрутные таблицы: Определяют, как трафик должен быть направлен внутри VPC и за её пределы через интернет-шлюз (IGW).

  2. Интернет-шлюзы (IGW): Обеспечивают инстансы в публичных подсетях доступом к интернету.

  3. Группы безопасности (Security Groups): Дейcтвуют аналогично брандмауэрам, контролируя входящий и исходящий трафик к инстансам.

  4. Списки управления доступом к сети (NACLs): Применяются на уровне подсети, контролируя трафик входа и выхода для всей подсети.

Пример

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

Проблема здесь может заключаться в правилах группы безопасности. Как работает неправильно настроенная группа безопасности:

  • Запрос на пинг (ICMP) с инстанса A на инстанс B, используя публичный IP-адрес, действительно покидает VPC через IGW. Из-за этого трафик видится как исходящий с публичного (эластичного) IP-адреса инстанса A, а не с его приватного IP-адреса.
  • Группа безопасности инстанса B, вероятно, настроена пропускать трафик только от приватного IP-адреса инстанса A, поэтому трафик с публичного IP адреса блокируется.

Применение

Чтобы разрешить эту проблему, нужно выполнить следующие шаги:

  1. Настроить группу безопасности B:

    • Добавьте правило, которое разрешает ICMP-трафик (пинг) с публичного IP-адреса инстанса A. Это позволит инстансу B корректно идентифицировать трафик, тогда как он будет видеть источник как публичный IP-адрес.
  2. Проверить NACLs:

    • Убедитесь, что правильные настройки Network ACL применены и не блокируют ICMP-пакеты между инстансами по публичным IP. Network ACL по умолчанию могут содержать раздражающие ограничения, которые препятствуют нормальному потоку трафика.
  3. Проверить маршрутизацию и конфигурацию интернет-шлюза:

    • Убедитесь, что все инстансы расположены в подсетях, которые правильно связаны с IGW и что маршрутные таблицы содержат запись для доступа к интернету (0.0.0.0/0 через IGW).

Заключение

Эта проблема подчеркивает важное различие между использованием приватных и публичных IP-адресов внутри VPC и обращение к безопасности как первоочередному аспекту. Инстансы внутри AWS в безопасности от атак из-за натуры приватных IP, однако, как только коммунальные IP адреса используются, трудно избежать нюансов маршрутизации и явления NAT (Network Address Translation).

Решение ошибок, которые остаются даже после выполнения этих шагов, можно искать и с помощью инструментов AWS, таких как VPC Flow Logs или службы детекции ех моделей трафика.

Таким образом, соблюдение правильных настроек и проверка конфигурации инфраструктуры являются ключевыми элементами успешного развертывания и обеспечения связи в Amazon EC2 и VPC.

Оцените материал
Добавить комментарий

Капча загружается...