Не удается получить доступ к сайту на экземпляре EC2 через публичный IP

10

У меня есть микроэкземпляр Amazon EC2 с сервером Windows 2008 и развернуто одно примерное веб-приложение, которое использует Java и развернуто на сервере Tomcat 7. Я могу получить к нему доступ локально на экземпляре, но когда я попытался получить доступ к нему за пределами экземпляра AWS, скажем, с моего домашнего компьютера, используя общедоступный DNS / публичный IP-адрес AWS / эластичный IP-адрес экземпляра, он дает мне «Веб-страница нет в наличии".

Я прошел через очень много подобных вопросов на этом форуме, и я думаю, что выполнил все настройки, о которых они просят, но все еще безуспешно.

Вот что я сделал / подтвердил.

1. localhost работает, поэтому приложение прослушивает порт 80.

2. добавлено правило для HTTP-входа на порт 80 для всех в группе безопасности, которую использует мой экземпляр.

3. проверил настройки брандмауэра на экземпляре Windows, убедившись, что порт 80 не заблокирован.

4. Пробовал даже с выключенным брандмауэром, но безуспешно.

Буду очень признателен, если кто-нибудь поможет мне в этом.

Спасибо нс

user242725
источник
1
Что Telnet говорит вам и traceroute?
Пратап

Ответы:

5

У меня была похожая неприятная проблема, когда я установил JetBrains YouTrack на экземпляр Windows Server 2012 ec2. Что мне помогло, так это открытие портов брандмауэра Windows, которые ява специально использовала, и отключение порта службы World Wide Publishing. Мне также пришлось запустить сервис YouTrack под учетной записью LocalSystem вместо учетной записи по умолчанию.

Попробуй это:

  • Отключите веб-сайт по умолчанию в IIS, если он используется

  • Запустите команду netstat -a -b, чтобы определить порты, к которым пытался привязаться java.exe, например:

    TCP 0.0.0.0:80 WIN-9NFIG6IEPT6: 0 СЛУШАТЬ [java.exe]

    TCP 127.0.0.1:49306 WIN-9NFIG6IEPT6: 49307 УСТАНОВЛЕНО [java.exe]

  • Откройте диспетчер управления службами, щелкните правой кнопкой мыши службу и откройте диалоговое окно свойств. На вкладке «Вход в систему как» выберите « Учетная запись локальной системы» в качестве учетной записи, под которой работает служба. Важно, чтобы этот пользователь был администратором

  • Я настоятельно рекомендую снова включить брандмауэр.
  • Откройте вкладку «Правила входящего трафика» брандмауэра и отключите правило HTTP-In.
  • Создайте новое правило для Tomcat с TCP-портом 80 и любым другим портом, который может понадобиться.

  • Сохраните правило и проверьте свой URL-адрес извне сервера.

Терренс Янг
источник
4

Вы не должны полностью отключать настройку брандмауэра. Это может поставить под угрозу безопасность вашего приложения. Вместо этого измените правила входящего брандмауэра Windows Server, чтобы разрешить входящий трафик через определенные порты.

У меня была похожая проблема, когда я развернул приложение на Tomcat 8 на сервере Windows 2012, подготовленном через AWS EC2. Я мог получить доступ к развернутому приложению по адресу http: // localhost: 8080 изнутри виртуальной машины, но не из общедоступного Интернета после замены строки localhost в URL-адресе общедоступным IP-адресом виртуальной машины.

Он работал нормально после того, как я изменил правила брандмауэра, чтобы разрешить входящий трафик через порт 80 (для http), порт 443 (для https) и порт 8080 (это порт, на котором по умолчанию было развернуто мое веб-приложение на сервере tomcat.

Я задокументировал настройки брандмауэра и группы безопасности по ссылке ниже:

http://abhirampal.com/2015/08/04/firewall-config-for-java-web-app-hosted-on-aws-ec2-windows-2012-server/

Абхи Рампал
источник
1
Круто, Ты спас мой день <3
Thamaraiselvam
1

Вы, вероятно, неправильно настроили веб-сервер. Вы можете проверить это, подключившись к серверу через:

telnet $IP 80

если вы не получаете сообщение об ошибке, вы можете подключиться. В этом случае вы неправильно настроили веб-сервер.

Питер Лэмби
источник
Вы правы, я не могу подключиться через telnet с локального компьютера к экземпляру aws. Можете ли вы помочь мне, как я могу это исправить? Я попытался найти IIS на экземпляре AWS, и он работает.
user242725
Спасибо. Сработало после отключения доменного, частного и публичного брандмауэра на экземпляре. Но не уверен, как я могу защитить экземпляр и в то же время получить доступ к моему веб-приложению вне экземпляра.
user242725
1

Может потребоваться ввести правило для входящего TCP-порта 80 в группу безопасности AWS для вашего экземпляра.

jaybro
источник
1

Возможно, вам понадобится сделать порт доступным для прослушивания любых публичных вызовов с консоли AWS.

freaksterz
источник
Консоль AWS имеет множество функций, возможно, вы могли бы быть более конкретным.
kmarsh
1

Две вещи для меня:

  1. Модификация группы безопасности, прикрепленной к моему экземпляру RDS, чтобы разрешить входящий и исходящий трафик

  2. Настройка входящих и исходящих правил в RDS для порта приложения

Подробные шаги:

  • На верхней панели вашей консоли AWS нажмите Сервисы, выберите EC2

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

  • В таблице, содержащей экземпляр, к которому вы хотите получить доступ из общего доступа, прокрутите вправо до столбца с именем Группы безопасности. Нажмите на эту группу безопасности.

  • В таблице, которая отображается, прокрутите ее до конца, где есть описание группы безопасности и другие вкладки, такие как Входящие, Исходящие, Теги.
  • Нажмите на входящую вкладку. Нажмите изменить. По умолчанию существует одно правило (RDP).
  • Добавим еще два
  • Нажмите кнопку Добавить правило.
  • Выбрать весь трафик для типа, все для протокола
  • Оставьте диапазон портов (0 - 65535), выберите источник как Custom.
  • Все это относится к обоим правилам. 2) Для первого правила в текстовом поле, которое появляется после источника, укажите 0.0.0.0/0. 3) Для второго правила: :: / 0 4).
  • Хит Сохранить

    Теперь войдите в свой AWS RDS, чтобы установить правила входа и выхода через межсетевой экран.

  • Запустите панель управления. Нажмите «Система и безопасность» (может быть первым) и нажмите «Брандмауэр Windows». Затем нажмите на Дополнительные настройки

  • Нажмите на меню Входящие правила слева.

  • На вкладке Действия (справа) нажмите Новое правило.

  • Выберите порт и нажмите кнопку Далее

  • Выберите TCP (если не выбран) и ниже выберите «Определенные локальные порты».

  • В поле введите номер порта вашего приложения и нажмите «Далее».

  • Выберите Разрешить соединение и нажмите Далее.

  • Укажите имя правила. Что-то вроде названия вашего приложения для удобства чтения и нажмите «Готово»

Тогда давайте настроим исходящий трафик

  • В том же меню, что и для входящих правил, выберите Исходящие правила и следуйте той же процедуре, которая описана для входящих правил.
  • После этих настроек вы должны иметь доступ к своему приложению извне
Deo
источник
0

Пожалуйста, обратитесь по ссылке .. Это было бы более конкретно.

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html

Вы можете разрешить связь между всеми экземплярами, связанными с этой группой безопасности, или между экземплярами, связанными с другой группой безопасности, и экземплярами, связанными с этой группой безопасности. Нажмите Add Rule, выберите All ICMP, затем начните вводить идентификатор группы безопасности в Source; это дает вам список групп безопасности. Выберите группу безопасности из списка. Повторите шаги для протоколов TCP и UDP. Нажмите Сохранить, когда вы закончите.

freaksterz
источник
0

В основном это проблема с брандмауэром Windows. Я попробовал те же шаги, что и вы, но это не удалось. В тот момент, когда я отвернулся от брандмауэра, все было в порядке. Я думаю, что безопасность не должна быть затронута, поскольку мы настраиваем входящие исходящие правила.

user408251
источник
-1

Для экземпляра WINDOWS - щелкните правой кнопкой мыши имя экземпляра EC-2, найдите файл .pem, созданный во время создания экземпляра, и нажмите «Расшифровать пароль». Вы получите имя пользователя и пароль для подключения через Пуск -> Выполнить -> mstsc -> Windows IP с аутентификацией Windows в качестве администратора и его паролем.

Для LINUX Instance -> Download puttygen и нажмите кнопку LOAD, чтобы выбрать файл .pem, а затем нажмите кнопку GENERATE, чтобы создать файл ppk. Через шпаклевку введите IP и в Соединения -> SSH -> AUTH -> Обзор выберите файл .ppk и сохраните сеансы замазки.

Робертсон Бхадрачалам
источник
Это было бы отличным ответом, если бы вопрос был «как мне войти с моим SSH ключом». Но вопрос был «как мне получить доступ к веб-странице из моего браузера».
Дженни Д