2 votos

Abrir el firewall del servidor ubuntu para acceder a la aplicación gunicorn / Flask que se ejecuta en el puerto 80

Estoy tratando de servir a una aplicación de intranet desde un servidor que ejecuta Ubuntu 18.04 de nuestra red local

La aplicación está escrita en Flask y me han implementado el uso de gunicorn con el comando

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

SSHing en el servidor con display port forwarding puedo abrir la aplicación, el uso de firefox y de interactuar con él muy bien. Sin embargo, cuando me intente desde otra máquina de la subred se rechaza la conexión.

Que puedo hacer telnet en el puerto 22 bien, es decir,

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

pero tengo una conexión rechazada en el puerto 80

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

He configurado el firewall usando ufw con el comando

me@appserver:~$ sudo ufw allow 80

lo que me da

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)

También me confirmó esto con

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)

y

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

Sin embargo, la ejecución nmap desde el cliente muestra los 80 pero dice que está cerrado

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

Alguna idea de por qué y cómo solucionarlo? Puede que este tipo de cosas a ser administrado por la configuración de la subred, que son gestionados por el administrador de la red?

1voto

Gerald Schneider Puntos 193

El mensaje Connection refused sugiere que nada está escuchando en ese puerto, el puerto está cerrado. Si el firewall podría estar impidiendo el acceso recibirás un mensaje acerca de un tiempo de espera.

El problema es que usted comenzó su aplicación para escuchar sólo en la interfaz de loopback 127.0.0.1. Por lo que sólo está disponible en la interfaz, que a su netstat salida confirma. Si usted desea hacer que esté disponible en la interfaz externa, usted tiene que proporcionar esa IP en el inicio, o 0.0.0.0 a permitir que todas las interfaces.

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

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: