Problemas de Encaminhamento de Portas especificamente com o Flask, mas não express.js

2

Eu tenho um servidor (Arch Linux) rodando localmente com alguns serviços nele, e eu queria adicionar um novo serviço python (Flask) rodando em uma porta diferente. Localmente, o servidor está sendo executado em 192.168.x.x e já posso acessar todos os serviços em execução no momento. Iniciei meu servidor Flask na porta 5000 , mas a execução do nmap no meu laptop mostrou que a porta ainda estava fechada:

mylaptop~$ nmap 192.168.x.x

PORT     STATE SERVICE
22/tcp   open  ssh
3000/tcp open  ppp
5432/tcp open  postgresql

No entanto, a porta estava aberta no localhost do servidor

myserver~$ nmap localhost

PORT     STATE SERVICE
22/tcp   open  ssh
3000/tcp open  ppp
5000/tcp open  upnp
5432/tcp open  postgresql

Eu assumi que era algum tipo de problema com o iptables (que eu não estou familiarizado), mas eu tentei rodar um servidor expresso.js (eu já tinha um rodando na porta 3000 ) na porta 5000 e com certeza funcionou.

mylaptop~$ nmap 192.168.x.x

PORT     STATE SERVICE
22/tcp   open  ssh
3000/tcp open  ppp
5000/tcp open  upnp
5432/tcp open  postgresql

Ainda não tenho certeza sobre como encaminhar o servidor Flask e também estou curioso para saber por que meus serviços ssh, express.js e postgres são encaminhados por padrão. Qualquer ajuda é apreciada!

    
por marceloneil 16.03.2017 / 21:45

1 resposta

2

Supondo que você esteja usando Flasks embutidos no servidor HTTP, isso é explicado no Flask documentação (desloque-se para o servidor visível externamente):

If you run the server you will notice that the server is only accessible from your own computer, not from any other in the network. This is the default because in debugging mode a user of the application can execute arbitrary Python code on your computer.

If you have the debugger disabled or trust the users on your network, you can make the server publicly available simply by adding --host=0.0.0.0 to the command line:

flask run --host=0.0.0.0

     

Isto diz ao seu sistema operacional para escutar em todos os IPs públicos.

A saída nmap na sua máquina myserver mostrou a porta 5000 como aberta porque você usou nmap localhost , que procura abrir portas no host local também conhecido como 127.0.0.1, não 192.168.x.x.

    
por 18.03.2017 / 12:45