Вопрос или проблема
Все IP-адреса, идентификаторы и т.д. находятся в тестовой среде и будут удалены, так что ничего не относится к реальной рабочей среде.
У меня есть группа безопасности EC2, и я открыл четыре порта для входящего трафика:
У меня есть экземпляр EC2, который использует эту группу безопасности. Я создал контейнер Docker и запустил его на порту 8001:
docker run -dit --restart unless-stopped -p 8001:8001 --name tce-docker_container tce-docker
Когда я пытался получить доступ к своему серверу через порт 8001 в браузере (http://1.2.3.4:8001), я получаю отказ в соединении.
Я перехожу на проверку открытых портов (https://www.yougetsignal.com/tools/open-ports/) и вот что я получаю:
На самом деле, только порты 80 и 22 видны как открытые, хотя я открыл порты 443 и 8001.
Я могу получить доступ к порту 80 по умолчанию на моем экземпляре EC2 в браузере без проблем, и я также могу подключиться к своему экземпляру по SSH, что подтверждает, что порты 80 и 22 открыты.
Почему мои порты 443 и 8001 не открыты? Что еще я могу проверить в AWS, чтобы открыть эти (или любые другие) порты?
Спасибо
Ответ или решение
Проблема, с которой вы столкнулись, заключается в том, что порты 443 и 8001, которые вы намеревались открыть для входящего трафика на вашем экземпляре EC2, недоступны. Ниже представлены возможные причины этой ситуации и методы их устранения.
Проверьте настройки группы безопасности
-
Группа безопасности EC2: Убедитесь, что ваша группа безопасности корректно настроена для разрешения входящего трафика на порты 443 и 8001. Откройте консоль AWS, перейдите к разделу EC2 и выберите секцию «Группы безопасности». Убедитесь, что для этих портов добавлены соответствующие правила. Например:
- Тип: Custom TCP
- Порт: 8001
- Исходящий IP: 0.0.0.0/0 (или ограничьте по необходимости)
-
Проверка правил: Проверьте, нет ли конфликтующих правил, которые могли бы блокировать или ограничивать доступ к этим портам. Например, если у вас есть правило, запрещающее доступ с определенных IP, это может быть причиной проблемы.
Проверьте настройки Docker
-
Проверка контейнера: Убедитесь, что контейнер Docker работает правильно и прослушивает на ожидаемом порту. Вы можете использовать команду для проверки активных контейнеров и их портов:
docker ps
Убедитесь, что ваш контейнер
tce-docker_container
запущен и настроен на прослушивание порта 8001. -
Логи контейнера: Если контейнер запущен, но по-прежнему не доступен, проверьте его логи:
docker logs tce-docker_container
Это может дать подсказки о том, что не так в приложении внутри контейнера.
Проверьте и настройте настройки операционной системы
-
Настройки брандмауэра: Если на вашем экземпляре EC2 установлены дополнительные системы безопасности или брандмауэр, такие как UFW или iptables (в случае Ubuntu или других дистрибутивах Linux), убедитесь, что они также разрешают трафик на порты 443 и 8001. Для управления UFW используйте команды:
sudo ufw status sudo ufw allow 8001
-
Службы и прослушивание: Убедитесь, что ваша служба прослушивает на порту 8001. Это можно сделать с помощью команды:
sudo netstat -tuln | grep 8001
Если порт не отображается, возможно, ваше приложение не запущено или не настроено на прослушивание данного порта.
Проверьте подключение к интернету
- Проверка доступности экземпляра: Проверьте, доступен ли ваш экземпляр EC2 с других источников. Для этого вы можете использовать доступные инструменты проверки портов или простую утилиту
telnet
:telnet 1.2.3.4 8001
Если соединение устанавливается, это указывает на возможность доступа к порту извне.
Заключение
Если вы проверили все вышеуказанные пункты и порты 443 и 8001 по-прежнему недоступны, имеет смысл рассмотреть возможность использования AWS VPC (Virtual Private Cloud) с настройками маршрутизации и специальными ACL (Access Control List), которые могли бы ограничивать трафик на нужные порты.
После тщательной проверки всех этих компонентов, вы сможете устранить проблемы, которые мешают получению доступа к портам 443 и 8001 на вашем экземпляре EC2. Не стесняйтесь обращаться к официальной документации AWS или сообществу разработчиков во время устранения неполадок, если возникнут дополнительные вопросы.