Как диагностировать и устранять распространенные проблемы подключения экземпляров EC2

Это подробное руководство поможет вам устранить и решить распространенные проблемы сетевого подключения экземпляров Amazon EC2. Пошагово узнайте, как диагностировать проблемы, изучая группы безопасности, NACL, таблицы маршрутизации, интернет-шлюзы, шлюзы NAT и пиринг VPC. Включает практические примеры и лучшие практики для обеспечения постоянной доступности и эффективной связи ваших экземпляров EC2.

Как диагностировать и устранять распространенные проблемы с подключением EC2-инстансов

Проблемы с подключением EC2 обычно сводятся к одному заблокированному узлу: инстансу, группе безопасности, правилам подсети, таблице маршрутизации или пути через шлюз. Если вы не можете подключиться по SSH к EC2-инстансу, достичь порта приложения или соединиться между инстансами, последовательно проверяйте сетевой путь, а не меняйте правила наугад.

Приведенные ниже проверки помогут вам определить, где останавливается трафик, и применить минимальное исправление для восстановления доступа.

Распространенные причины проблем с подключением EC2

Проблемы с подключением могут возникать на разных уровнях сетевого стека AWS. Определение коренной причины часто включает проверку комбинации следующих элементов:

  • Группы безопасности: Это stateful-брандмауэры, прикрепленные к сетевым интерфейсам. Они контролируют входящий и исходящий трафик на уровне инстанса.
  • Сетевые ACL (NACL): NACL работают на уровне подсети и обеспечивают дополнительный уровень stateless-фильтрации для трафика, входящего и выходящего из подсетей.
  • Таблицы маршрутизации: Они определяют, куда направляется трафик подсети: локально внутри VPC, к интернет-шлюзу, к NAT-шлюзу или к транзитному шлюзу.
  • Состояние инстанса и сетевая конфигурация: Проблемы с самим EC2-инстансом, такие как его остановка или неправильные настройки сетевого интерфейса.
  • Интернет-шлюз (IGW) / NAT-шлюз: Для инстансов, которым нужен доступ в интернет, критична конфигурация IGW (для публичных подсетей) или NAT-шлюза (для частных подсетей).
  • Пиринг VPC / Транзитный шлюз: При подключении между VPC эти сервисы межсетевого взаимодействия должны быть правильно настроены.

Пошаговая диагностика и устранение

Начните с симптома, затем проследуйте по пути пакета.

1. Проверьте состояние инстанса и базовую сетевую доступность

Прежде чем углубляться в сложные сетевые конфигурации, убедитесь, что сам инстанс находится в рабочем состоянии и имеет базовые сетевые настройки:

  • Проверки статуса инстанса: В консоли EC2 выберите инстанс и перейдите на вкладку "Проверки статуса". Должны пройти как системные, так и инстансные проверки.
  • Публичные и частные IP: Убедитесь, что у инстанса есть ожидаемый адрес. Инстанс в публичной подсети все равно нуждается в публичном IPv4-адресе или Elastic IP для прямого доступа в интернет по IPv4.
  • Слушатель операционной системы: Если сетевой путь открыт, но порт все равно не работает, проверьте, что служба прослушивается на инстансе. Например, SSH должен слушать TCP 22, если вы не изменили конфигурацию демона.
  • Разрешение DNS: Если подключение по IP работает, а по имени хоста нет, проверьте настройки DNS VPC, пользовательские резолверы и /etc/resolv.conf на Linux.

2. Проверьте группы безопасности

Группы безопасности — это stateful-брандмауэры, контролирующие трафик к вашим EC2-инстансам и от них. Они являются очень частым источником проблем с подключением.

2.1. Входящие правила

Если вы не можете подключиться к своему инстансу, например, по SSH на Linux или RDP на Windows:

  • Проверьте группу безопасности, прикрепленную к вашему EC2-инстансу.
  • Проверьте входящие правила: Разрешите требуемый TCP-порт с вашего исходного IP или доверенного CIDR. Для административного доступа предпочтительнее использовать ваш текущий публичный IP как <ваш_ip>/32 вместо 0.0.0.0/0.
  • Пример: Чтобы разрешить SSH-доступ с вашего IP-адреса:
    Тип: SSH
    Протокол: TCP
    Диапазон портов: 22
    Источник: <ваш_ip>/32
    

2.2. Исходящие правила

Если ваш инстанс не может получить доступ к внешним ресурсам (например, загрузить пакеты, подключиться к другим сервисам AWS):

  • Проверьте группу безопасности, прикрепленную к вашему EC2-инстансу.
  • Проверьте исходящие правила: По умолчанию группы безопасности разрешают весь исходящий трафик. Если были созданы пользовательские исходящие правила, убедитесь, что они разрешают необходимый трафик к вашим портам и IP назначения.
  • Пример: Чтобы разрешить весь исходящий трафик:
    Тип: Весь трафик
    Протокол: Все
    Диапазон портов: Все
    Назначение: 0.0.0.0/0
    

3. Исследуйте сетевые ACL (NACL)

NACL — это stateless-брандмауэры, работающие на уровне подсети. Они фильтруют трафик до того, как он достигнет группы безопасности или инстанса.

  • Определите NACL, связанный с подсетью вашего инстанса.
  • Проверьте входящие правила: NACL оцениваются по порядку номеров правил. Убедитесь, что есть входящее правило, разрешающее трафик на требуемом порту с исходного IP.
  • Проверьте исходящие правила: Аналогично проверьте, что исходящие правила разрешают трафик к назначению.
  • Stateless-природа: NACL не запоминают установленные соединения. Вам нужны входящие и исходящие правила для обеих сторон потока. Для SSH с вашего ноутбука NACL подсети обычно требует входящее правило TCP 22 с вашего IP и исходящее правило на эфемерные порты к вашему IP для обратного трафика. Диапазоны эфемерных портов различаются в зависимости от операционной системы и клиента, поэтому используйте диапазон, подходящий для вашей среды.
  • Нумерация правил: Правила с меньшими номерами оцениваются первыми. Используйте явные правила запрета (например, правило 100 для запрета определенного трафика) и правила разрешения (например, правило 200 для разрешения более широкого трафика) с осторожностью.

4. Проверьте таблицы маршрутизации

Таблицы маршрутизации определяют, куда направляется сетевой трафик из ваших подсетей. Неправильная маршрутизация может помешать трафику достичь пункта назначения.

  • Найдите таблицу маршрутизации, связанную с подсетью вашего инстанса.
  • Проверьте наличие маршрута по умолчанию: Для инстансов в публичной подсети для доступа в интернет должен быть маршрут 0.0.0.0/0, указывающий на интернет-шлюз (IGW).
    Назначение | Цель
    ----------------|--------
    10.0.0.0/16     | local
    0.0.0.0/0       | igw-xxxxxxxxxxxxxxxxx
    
  • Частные подсети и NAT-шлюзы: Для инстансов в частной подсети, чтобы инициировать исходящие интернет-соединения, таблица маршрутизации для этой подсети должна содержать маршрут 0.0.0.0/0, указывающий на NAT-шлюз или NAT-инстанс.
    Назначение | Цель
    ----------------|--------
    10.0.0.0/16     | local
    0.0.0.0/0       | nat-xxxxxxxxxxxxxxxxx
    
  • Пиринг VPC, транзитный шлюз или VPN: Если вашему инстансу необходимо взаимодействовать с другой VPC или локальной сетью, добавьте маршруты для удаленных блоков CIDR к правильной цели с обеих сторон, где требуется маршрутизация.

5. Устраните проблемы с подключением через интернет-шлюз (IGW) и NAT-шлюз

Интернет-шлюз

*   Убедитесь, что IGW создан и прикреплен к вашей VPC.
*   Проверьте, что таблица маршрутизации для вашей публичной подсети содержит маршрут `0.0.0.0/0`, указывающий на IGW.
*   Подтвердите, что вашему инстансу назначен публичный IP-адрес или Elastic IP-адрес.
*   Правила групп безопасности и NACL должны разрешать требуемый входящий и исходящий трафик. Не открывайте чувствительные порты для всего интернета, если у вас нет четкой причины и компенсирующих мер контроля.

NAT-шлюз

*   Убедитесь, что NAT-шлюз создан и находится в публичной подсети.
*   Проверьте, что NAT-шлюзу назначен Elastic IP-адрес.
*   Подтвердите, что таблица маршрутизации для вашей частной подсети содержит маршрут `0.0.0.0/0`, указывающий на NAT-шлюз.
*   Правила NACL на частных и публичных подсетях должны разрешать исходящее соединение и обратный трафик. NAT-шлюзы не используют группы безопасности.

6. Пиринг VPC и транзитный шлюз

Если у вас возникают проблемы с подключением между VPC:

  • Пиринг VPC:
    • Убедитесь, что пиринговое соединение активно и принято обеими VPC.
    • Проверьте, что таблицы маршрутизации в обеих VPC содержат маршруты, разрешающие трафик к блокам CIDR пиринговой VPC.
    • Убедитесь, что группы безопасности и NACL в обеих VPC разрешают трафик между необходимыми диапазонами IP.
  • Транзитный шлюз:
    • Подтвердите, что транзитный шлюз создан и соответствующие VPC прикреплены к нему.
    • Проверьте таблицы маршрутизации транзитного шлюза, чтобы убедиться, что они правильно маршрутизируют трафик между прикрепленными VPC.
    • Проверьте, что таблицы маршрутизации внутри каждой VPC также содержат маршруты, указывающие на транзитный шлюз для трафика, предназначенного для других VPC.
    • Группы безопасности и NACL в каждой VPC должны разрешать межсетевой трафик VPC.

7. Использование инструментов сетевой доступности AWS

AWS предоставляет инструменты для диагностики сетевых проблем:

  • Анализатор доступности VPC: Этот инструмент анализирует доступность между поддерживаемыми ресурсами источника и назначения. Он может выявить сбои пути, вызванные группами безопасности, NACL, таблицами маршрутизации, шлюзами и связанной сетевой конфигурацией.
  • Журналы потоков VPC: Хотя они напрямую не диагностируют сбои подключения, журналы потоков VPC захватывают информацию об IP-трафике, поступающем на сетевые интерфейсы в вашей VPC и исходящем из них. Анализ этих журналов может выявить шаблоны заблокированного или неожиданного трафика, помогая вам определить неправильные конфигурации в группах безопасности или NACL.

8. Другие потенциальные проблемы

  • Эластичный сетевой интерфейс (ENI): Убедитесь, что ENI прикреплен к инстансу и настроен правильно.
  • Связь таблицы маршрутизации с подсетью: Проверьте, что подсеть правильно связана с предполагаемой таблицей маршрутизации.
  • Конфигурация DNS: При использовании пользовательского DNS убедитесь, что он правильно разрешает имена. Для DNS VPC по умолчанию проверьте, включено ли разрешение DNS для вашей VPC.
  • Прокси-серверы: Если ваш инстанс настроен на использование прокси, убедитесь, что сам прокси доступен и настроен правильно.

Лучшие практики для предотвращения проблем с подключением

  • Минимальные привилегии: Настройте группы безопасности и NACL с минимально необходимыми разрешениями. Избегайте использования 0.0.0.0/0 для чувствительных портов, если это не абсолютно необходимо и не защищено другими средствами.
  • Тегирование: Последовательно тегируйте свои сетевые ресурсы (VPC, подсети, группы безопасности, таблицы маршрутизации), чтобы легко определять их назначение и связанные инстансы.
  • Документация: Ведите четкую документацию вашей сетевой топологии, схем IP-адресации и правил безопасности.
  • Регулярные аудиты: Периодически пересматривайте правила групп безопасности и NACL, чтобы убедиться, что они все еще актуальны и безопасны.
  • Используйте инструменты AWS: Ознакомьтесь с анализатором доступности VPC и журналами потоков VPC для активного мониторинга и устранения неполадок.

Вывод

Когда подключение EC2 нарушается, проследите путь по порядку: состояние инстанса, слушатель, группа безопасности, NACL, таблица маршрутизации, шлюз и правила на удаленной стороне. Изменяйте один уровень за раз, затем тестируйте снова. Это сужает область исправления и делает следующий сбой гораздо более легким для диагностики.