
Estou tentando servir um aplicativo de intranet de um servidor executando o Ubuntu 18.04 em nossa rede local
O aplicativo está escrito Flask
e eu o implantei usando gunicorn
o comando
me@appserver:~$ authbind gunicorn -w 4 -b 127.0.0.1:80 app:app
Fazendo SSH no servidor com encaminhamento de porta de exibição, posso abrir o aplicativo usando o Firefox e interagir com ele perfeitamente. No entanto, quando tento em outra máquina na sub-rede, a conexão é recusada.
Posso fazer telnet na porta 22, ok, ou seja
me@clientmachine:~$ telnet 123.45.67.89 22
Trying 123.45.67.89...
Connected to 123.45.67.89.
mas recebo uma conexão recusada na porta 80
me@clientmachine:~$ telnet 123.45.67.89 80
Trying 123.45.67.89...
telnet: Unable to connect to remote host: Connection refused
Eu configurei o firewall usando ufw
o comando
me@appserver:~$ sudo ufw allow 80
o que me dá
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)
Eu também confirmei isso com
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)
e
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
Porém, rodando nmap
do cliente mostra 80 mas diz que está fechado
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
Alguma ideia de por que isso aconteceria e como consertar? Esse tipo de coisa pode ser gerenciado por configurações na sub-rede gerenciadas pelo administrador da rede?
Responder1
A mensagem Connection refused
sugere que nada está escutando naquela porta, a porta está fechada. Se o firewall estivesse impedindo o acesso, você receberia uma mensagem sobre um tempo limite.
O problema é que você iniciou sua aplicação para escutar apenas na interface de loopback 127.0.0.1
. Portanto, ele está disponível apenas nessa interface, o que sua netstat
saída confirma. Se quiser disponibilizá-lo na interface externa, você deve fornecer esse IP na inicialização ou 0.0.0.0
permitir todas as interfaces.
me@appserver:~$ authbind gunicorn -w 4 -b 123.45.67.89:80 app:app