Как диагностировать и устранять распространенные проблемы подключения экземпляров 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, таблица маршрутизации, шлюз и правила на удаленной стороне. Изменяйте один уровень за раз, затем тестируйте снова. Это сужает область исправления и делает следующий сбой гораздо более легким для диагностики.