Рейтинг:0

80 порт Соединение отклонено

флаг cn

Я новичок в брандмауэре Ubuntu, и у меня есть сервер Ubuntu 20.04.

Все порты 8080, 81... доступны извне, но когда пробовал телнет IP 80 я получил telnet: невозможно подключиться к удаленному хосту: в соединении отказано

подробный статус ufw является:

Статус: активен
Ведение журнала: включено (низкий уровень)
По умолчанию: запрещать (входящие), разрешать (исходящие), запрещать (маршрутизируемые)
Новые профили: пропустить

К действию от
-- ------ ----
80 ДОПУСКАЙТЕ ВСЕГДА                  
80/tcp РАЗРЕШИТЬ ВХОД В любом месте                  
22/tcp РАЗРЕШИТЬ ВХОД ВСЕГДА                  
4000 ДОПУСТИМ ВСЕГДА                  
443 РАЗРЕШИТЬ ВСЕГДА                  
80/tcp (Nginx HTTP) РАЗРЕШИТЬ ВХОД В любом месте                  
81 ДОПУСТИМ ВСЕГДА                  
80 (v6) РАЗРЕШИТЬ ВХОД ВСЕГДА (v6)             
80/tcp (v6) РАЗРЕШИТЬ ВХОД ВСЕГДА (v6)             
22/tcp (v6) РАЗРЕШИТЬ ВХОД ВСЕГДА (v6)             
4000 (v6) РАЗРЕШИТЬ ВХОД ВСЕГДА (v6)             
443 (v6) РАЗРЕШИТЬ ВХОД ВСЕГДА (v6)             
80/tcp (Nginx HTTP (v6)) РАЗРЕШИТЬ ВХОД В любом месте (v6)             
81 (v6) РАЗРЕШИТЬ ВХОД ВСЕГДА (v6)  

Похожие вопросы, которые помогают мне расширить свои знания по теме:

https://serverfault.com/questions/129086/how-to-start-stop-iptables-on-ubuntu

Соединение через порт 80 отклонено

Последняя ссылка указывает на перезапуск iptables, но я надеюсь, что пропустил что-то еще, и мне не нужно перезапускать iptables.

Подскажите, пожалуйста, что мне лучше сделать в этой ситуации, и как получить публичный доступ к моему хосту с портом 80.

Большое спасибо за поддержку.

Andrej Podzimek avatar
флаг cn
Очевидно, что когда вы получаете *отказ в соединении*, порт **не** заблокирован. (Кроме того, настройки брандмауэра в наши дни называются nftables (команда: `nft`), а не iptables.) Вы уверены, что что-то прослушивает ваш порт `80`? Когда вы смотрите на `netstat -atpn`, ваш порт `80` находится в состоянии `LISTEN`? (Еще одно замечание заключается в том, что вам **не** нужно использовать порт `80` все эти дни, порта `443` должно хватить. Порт `80`, когда он используется, должен перенаправлять на `https` только в порт `443` для совместимости с очень старыми клиентами.)
dos4dev avatar
флаг cn
Привет, @AndrejPodzimek, `netstat -atpn` дает мне следующий результат `tcp6 0 0 127.0.0.1:80 :::* LISTEN 55264/java ` Я использую 80 для тестирования/обучения. Приходится переходить на 443 порт, но хочу разобраться в этой ситуации.
dos4dev avatar
флаг cn
@AndrejPodzimek, не могли бы вы пояснить, почему я могу подключиться к своему Java-серверу локально, но не публично?
dos4dev avatar
флаг cn
Я предполагаю, что у меня будет такая же проблема с портом 443 `tcp6 0 0 127.0.0.1:443 :::* LISTEN 55264/java ` Доступно только локально.
Tilman avatar
флаг cn
К сожалению, вы не дали точную команду, которую вы использовали. Я предполагаю, что там, где вы написали «IP», вы на самом деле использовали IP-адрес. Был ли этот адрес «127.0.0.1»? Потому что, согласно вашему выходу `netstat`, это единственный адрес, который ваш сервер прослушивает на порту 80.
dos4dev avatar
флаг cn
Привет @Tilman, я не знал, как замаскировать свой реальный IP-адрес в вопросе. Для telnet я использовал свой настоящий IP-адрес.
dos4dev avatar
флаг cn
@AndrejPodzimek извините за фиктивный вопрос. Означает ли это, что мне нужно настроить свое Java-приложение? Я предпочитаю избегать этого, потому что у меня нет большого доступа к Java-приложению.
Andrej Podzimek avatar
флаг cn
`::1` будет адресом только для `localhost`. Вывод `netstat` показывает сокет `tcp6` (т.двойной стек, как и должно быть) прослушивание устаревшего адреса `localhost` из неудачного эксперимента 1975 года под названием IPv4, который [вредит Интернету](https://docs.google.com/document/d/1YgiM5K16mlRWwqf6DNKU3--IkmtEViyN72MADgTPcZs /). Чтобы прослушивать определенный интерфейс, `bind()` (или создайте) [`ServerSocket`](https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java /net/ServerSocket.html) с одним из адресов интерфейса. Чтобы прослушивать _любой_ адрес, `bind()` к *подстановочному* адресу `::`.
Andrej Podzimek avatar
флаг cn
@ dos4dev Это зависит от того, откуда взят адрес. Если это запрограммировано в коде, вам может потребоваться изменить код. Если это исходит из файла конфигурации, просто настройте файл конфигурации и установите (например) `::` в качестве адреса для прослушивания. Кстати, в документации сказано: *Если `bindAddr` имеет значение `null`, по умолчанию будут приниматься соединения с любыми/всеми локальными адресами.* Однако, если приложение всегда использует какую-то адресную строку (например, из конфигурационного файла), тогда вам может понадобиться явно указать `::`.

Ответить или комментировать

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