Устранение распространенных проблем с подключением и ошибок экземпляров EC2
Подключение к экземпляру Amazon Elastic Compute Cloud (EC2) является основой управления облачными ресурсами. Независимо от того, используете ли вы SSH для экземпляров Linux или протокол удаленного рабочего стола (RDP) для экземпляров Windows, сбои подключения случаются часто и часто вызывают разочарование. Это руководство предоставляет систематический, пошаговый подход к диагностике и устранению наиболее частых причин, по которым вы не можете получить доступ к своему экземпляру EC2.
Понимание сбоев подключения требует взгляда за пределы самого экземпляра. Проблемы обычно возникают из-за неправильной настройки уровней безопасности (Группы безопасности, NACL), неверной настройки сети (маршрутизация VPC) или проблем с аутентификацией. Систематически проверяя эти компоненты по порядку, вы можете быстро изолировать коренную причину и восстановить доступ.
Этап 1: Первоначальные проверки и состояние экземпляра
Прежде чем углубляться в сложные сетевые конфигурации, убедитесь, что экземпляр работает корректно и доступен на базовом уровне.
1. Проверки состояния экземпляра
Используйте консоль управления AWS или AWS CLI для проверки общего состояния экземпляра. Должны пройти две важные проверки:
- Проверки системного состояния: Сбои здесь обычно указывают на проблемы с базовым оборудованием или инфраструктурой, которые требуют вмешательства AWS или завершения/пересоздания экземпляра.
- Проверки состояния экземпляра: Сбои здесь часто связаны с проблемами загрузки операционной системы, повреждением файловой системы или проблемами с драйверами. Если эта проверка не пройдена, экземпляр, вероятно, находится в недостаточно работоспособном состоянии для приема сетевых подключений.
Действие: Если какая-либо из проверок не пройдена, рассмотрите возможность остановки и запуска экземпляра (что переместит его на новое оборудование, если не пройдена системная проверка) или проверьте системный журнал на наличие подсказок.
2. Проверка публичного IP-адреса и имени DNS
Убедитесь, что вы пытаетесь подключиться к правильному адресу. Если ваш экземпляр находится в общедоступной подсети, ему требуется публичный IPv4-адрес или эластичный IP-адрес. Если он находится в частной подсети, вы должны подключаться через Bastion Host или использовать Session Manager AWS Systems Manager.
- Совет: Если экземпляр был остановлен и запущен повторно, его публичный IP-адрес мог измениться, если вы не назначили ему эластичный IP-адрес.
3. Проверка конфигурации клиента (SSH/RDP)
Ошибки подключения иногда бывают локальными. Убедитесь, что ваше клиентское программное обеспечение работает правильно.
- Для SSH (Linux/macOS): Убедитесь, что вы используете правильный файл закрытого ключа (
.pemили.ppk) и что разрешения установлены корректно (chmod 400 /path/to/key.pem). - Для RDP (Windows): Убедитесь, что вы используете правильный пароль, полученный путем расшифровки пароля администратора с помощью файла закрытого ключа в консоли EC2.
Этап 2: Диагностика уровней безопасности (наиболее распространенные сбои)
Неправильная настройка безопасности является основной причиной проблем с подключением. И Группы безопасности, и NACL действуют как брандмауэры, и обе должны разрешать необходимый трафик.
4. Правила входящего трафика Группы безопасности (SG)
Группы безопасности — это stateful-брандмауэры, прикрепленные непосредственно к сетевому интерфейсу экземпляра (ENI).
Требования для Linux (SSH):
- Протокол: TCP
- Диапазон портов: 22
- Источник: Ваш публичный IP-адрес (
My IP) или0.0.0.0/0(для всех IP-адресов, хотя это не рекомендуется из соображений безопасности).
Требования для Windows (RDP):
- Протокол: TCP
- Диапазон портов: 3389
- Источник: Ваш публичный IP-адрес или
0.0.0.0/0.
Шаг устранения неполадок: Временно измените источник требуемого правила входящего трафика на 0.0.0.0/0 для соответствующего порта (22 или 3389). Если вы смогли подключиться, проблема заключалась в том, что ваш конкретный IP-адрес клиента был заблокирован или неправильно определен.
Внимание: Никогда не оставляйте группы безопасности открытыми для
0.0.0.0/0для портов управления (22/3389) в производственных средах. По возможности используйте определенные IP-адреса источников или конечные точки VPC.
5. Сетевые списки контроля доступа (NACL)
NACL — это stateless-брандмауэры на уровне подсети. Они проверяют входящий и исходящий трафик независимо. Если входящий трафик разрешен, ответный трафик также должен быть разрешен исходящим.
Требования NACL для подключения:
| Направление | Протокол | Диапазон портов | Действие правила |
|---|---|---|---|
| Входящий | TCP | 22 (SSH) или 3389 (RDP) | Разрешить |
| Исходящий | TCP | Эфемерные порты (1024-65535) | Разрешить |
Эфемерные порты имеют решающее значение. Когда ваш клиент подключается (например, с порта 54321), сервер отвечает на высоконумерованный эфемерный порт. Если NACL блокирует исходящий трафик на этих высоких портах, сервер не сможет отправить вам ответ, что приведет к тайм-ауту соединения.
Шаг устранения неполадок: Убедитесь, что и входящий порт (22/3389), и исходящие эфемерные порты (1024-65535) имеют правило Разрешить в связанном NACL.
Этап 3: Маршрутизация и конфигурация VPC
Если уровни безопасности подтверждены как открытые, проблема заключается в том, как трафик маршрутизируется в подсеть экземпляра и из нее.
6. Тип подсети и таблицы маршрутизации
Подключение полностью зависит от того, находится ли ваш экземпляр в публичной подсети или в частной подсети.
Подключение в публичной подсети
Для прямого доступа в Интернет (SSH/RDP из внешнего мира):
- Экземпляру должен быть назначен публичный IPv4-адрес или эластичный IP-адрес.
- Связанная Таблица маршрутизации должна содержать маршрут для
0.0.0.0/0, указывающий на Интернет-шлюз (IGW).
Подключение в частной подсети
К экземплярам в частных подсетях нельзя получить прямой доступ из Интернета. Для подключения требуется многошаговый путь:
- Подключение через Bastion Host (Jump Box): Вы подключаетесь по SSH к публичному экземпляру EC2, а затем подключаетесь по SSH с Bastion Host к частному экземпляру (используя его частный IP-адрес).
- Подключение через VPN/Direct Connect: При использовании AWS Site-to-Site VPN или Direct Connect маршрутизация должна быть настроена таким образом, чтобы направлять трафик в вашу локальную сеть, которая затем маршрутизирует его в частную подсеть.
7. Проблемы с брандмауэром на уровне ОС
Если проверки безопасности AWS пройдены успешно, подключение может блокироваться операционной системой, работающей на самом экземпляре EC2. Это часто случается, если вы вручную установили или настроили локальные брандмауэры (например, iptables в Linux или Брандмауэр Защитника Windows).
Диагностика (если возможно через консоль или Session Manager):
- Linux: Проверьте
iptables -Lили используйтеfirewall-cmd --list-all. Убедитесь, что порт 22 явно разрешен. - Windows: Проверьте настройки Брандмауэра Защитника Windows для входящих правил на порту 3389.
Совет по восстановлению: Если вы потеряли все соединения, рассмотрите возможность остановки экземпляра, отсоединения корневого тома, присоединения его к работающему экземпляру восстановления, изменения файлов конфигурации ОС для отключения брандмауэра, а затем повторного присоединения тома к исходному идентификатору экземпляра.
Сводка порядка устранения неполадок
При сбое подключения следуйте этому приоритетному контрольному списку:
- Состояние экземпляра: Пройдены ли проверки системного/экземплярного состояния?
- Аутентификация клиента: Правильный ли файл ключа и установлены ли разрешения (SSH)?
- Группа безопасности: Разрешает ли SG входящий трафик на порт 22/3389 с вашего IP-адреса?
- NACL: Разрешает ли NACL входящий (22/3389) И исходящий (1024-65535) трафик?
- Маршрутизация: Указывает ли таблица маршрутизации на IGW для публичных подсетей?
- Брандмауэр ОС: Разрешает ли локальный брандмауэр на экземпляре EC2 подключение?
Систематически просматривая эти шесть областей, вы сможете уверенно устранить подавляющее большинство сбоев подключения EC2.