#google-cloud-platform #google-compute-engine #firewall
# #google-cloud-platform #google-compute-engine #брандмауэр
Вопрос:
Команда, нужна быстрая помощь! Я создал и разместил службу на Compute Engine в GCP. Это на сервере Ubuntu, при создании экземпляра я убедился, что флаг allow-HTTP amp;amp; allow-HTTPS включен. но все же я не могу подключиться к сервису извне.
Я предоставил сервис на порту 4000, но tcp: 80 должен разрешать вход HTTP-трафика. Я как бы хожу по кругу без результата.
Комментарии:
1. У вас нет правила брандмауэра, разрешающего трафик TCP-порта 4000.
2. Либо разрешите TCP-трафик на порт 4000, как говорит @John Hanley, либо предоставьте свой сервис на порту 80/443, например, с помощью Nginx / Apache.
3. «При создании экземпляра я убедился, что включен флаг allow-HTTP amp;amp; allow-HTTPS». делая это, вы включили входные подключения к портам 80 и 443. «Я предоставил сервис на порту 4000, но tcp: 80 должен разрешать вход HTTP-трафика». Ваша служба работает на порту 4000, который закрыт. Вы можете изменить порт вашей службы на 80 или настроить брандмауэр, чтобы разрешить входные соединения на порту 4000.
4. @JohnHanley Я добавил отдельное правило, чтобы включить порт 4000 для передачи вызовов в мою службу, это сработало. Чтобы быть уверенным и иметь безопасную экспозицию! Я изменил архитектуру, добавил перед ней обратный прокси-сервер и предоставил API.
Ответ №1:
Как вы упомянули в своем вопросе:
При создании экземпляра я убедился, что флаг allow-HTTP amp;amp; allow-HTTPS включен.
В соответствии с разделом документации «Создание и запуск экземпляра виртуальной машины» Создание экземпляра из общедоступного образа:
- Выберите
Allow HTTP traffic
илиAllow HTTPS traffic
, чтобы разрешить HTTP или HTTPS трафик для виртуальной машины. Когда вы выбираете один из них, Compute Engine добавляет сетевой тег к вашей виртуальной машине, который связывает правило брандмауэра с виртуальной машиной. Затем Compute Engine создает соответствующее правило брандмауэра входа, которое разрешает весь входящий трафик по tcp: 80 (HTTP) или tcp: 443 (HTTPS).
в результате вы включили входные соединения с вашими экземплярами на порты 80 и 443, а другие порты будут закрыты, кроме портов, открытых по правилам по умолчанию.
С другой стороны, у вас есть приложение, прослушивающее порт 4000:
Я предоставил сервис на порту 4000
В результате вы не можете получить доступ к своему приложению, http://EXTERNAL_IP_OF_YOUR_VM_INSTANCE:4000
потому что вы не открыли порт 4000, как это было упомянуто @John Hanley в комментарии.
Есть 2 способа решить вашу проблему:
- Измените настройки вашего приложения, чтобы оно отображалось на порту 80
- Следуйте документации, используя правила брандмауэра, и создайте новое правило брандмауэра, чтобы разрешить входящий трафик для вашего экземпляра виртуальной машины на порту 4000 через консоль или через командную строку.