Открытие брандмауэра сервера ubuntu для доступа к приложению gunicorn / Flask, работающему на порту 80

Я пытаюсь обслуживать приложение интрасети с сервера под управлением Ubuntu 18.04 в нашей локальной сети

Приложение написано на Flask , и я развернул его, используя gunicorn с помощью команды

me@appserver:~$ authbind gunicorn -w 4 -b 127.0.0.1:80 app:app

SSHing на сервер с переадресацией порта отображения. Я могу открыть приложение с помощью firefox и нормально взаимодействовать с ним. Однако, когда я пытаюсь с другого компьютера в подсети, соединение отклоняется.

Я могу подключиться по telnet к порту 22 нормально, то есть

me@clientmachine:~$ telnet 123.45.67.89 22
Trying 123.45.67.89...
Connected to 123.45.67.89.

, но я получаю отказ в соединении с портом 80

me@clientmachine:~$ telnet 123.45.67.89 80
Trying 123.45.67.89...
telnet: Unable to connect to remote host: Connection refused

Я настроил брандмауэр, используя ufw с помощью команды

me@appserver:~$ sudo ufw allow 80

, которая дает мне

me@appserver:~$ sudo ufw status

Status: active

To                         Action      From
--                         ------      ----
80                         ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
22/tcp                     ALLOW       Anywhere
80/udp                     ALLOW       Anywhere
80 (v6)                    ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
22/tcp (v6)                ALLOW       Anywhere (v6)
80/udp (v6)                ALLOW       Anywhere (v6)

Я также подтвердил это с помощью

me@appserver:~$ netstat -an | grep :80
tcp        0      0 127.0.0.1:80            0.0.0.0:*               LISTEN

me@appserver:~$ lsof -i:80
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
gunicorn 1818 me    5u  IPv4  31215      0t0  TCP localhost:http (LISTEN)
gunicorn 1822 me    5u  IPv4  31215      0t0  TCP localhost:http (LISTEN)
gunicorn 1823 me    5u  IPv4  31215      0t0  TCP localhost:http (LISTEN)
gunicorn 1824 me    5u  IPv4  31215      0t0  TCP localhost:http (LISTEN)
gunicorn 1825 me    5u  IPv4  31215      0t0  TCP localhost:http (LISTEN)

и

me@appserver:~$ sudo iptables -L -n | grep :80
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:80
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:80

. Однако запуск nmap от клиента показывает 80, но говорит, что он закрыт

me@clientmachine:~$ nmap 123.45.67.89

Starting Nmap 7.01 ( https://nmap.org ) at 2019-07-24 16:41 AEST
Nmap scan report for appserver.myuni.edu (123.45.67.89)
Host is up (0.00041s latency).
Not shown: 997 filtered ports
PORT     STATE  SERVICE
22/tcp   open   ssh
80/tcp   closed http

Есть идеи, почему это может быть и как это исправить? Можно ли управлять такими вещами с помощью настроек в подсети, которыми управляет сетевой администратор?

2
задан 24 July 2019 в 10:24
1 ответ

Сообщение В соединении отказано предполагает, что на этом порту ничего не прослушивает, порт закрыт.Если брандмауэр будет препятствовать доступу, вы получите сообщение о тайм-ауте.

Проблема в том, что вы запустили приложение для прослушивания только интерфейса обратной петли 127.0.0.1 . Таким образом, он доступен только на том интерфейсе, что подтверждается выводом netstat . Если вы хотите сделать его доступным на внешнем интерфейсе, вы должны указать этот IP-адрес при запуске или 0.0.0.0 , чтобы разрешить все интерфейсы.

me@appserver:~$ authbind gunicorn -w 4 -b 123.45.67.89:80 app:app
1
ответ дан 3 December 2019 в 12:29

Теги

Похожие вопросы