É possível redirecionar uma porta local para uma porta LAN?

0

Estou usando um aplicativo Flask com ambiente virtual. Quando inicio o servidor, posso acessá-lo localmente através do IP 127.0.0.1:5000 , mas gostaria de torná-lo acessível no meu WLAN (pointing at 10.0.0.1:5000) . Eu não sei se é possível, o fato de que tipo de ambiente virtual faz o meu servidor em área restrita.

Eu tentei ingenuamente alterar meu arquivo /etc/hosts

127.0.0.1    10.0.0.2

mas quando eu lanço meu navegador no link , isso não funciona. (Eu ainda posso acessar outros serviços no link , mas o redirecionamento na porta 5000 não está funcionando).

Não tenho certeza de acertar. Ajuda será muito apreciada.

Editar para o ambiente virtual, estou usando apenas virtualenv , um utilitário para lidar com a dependência do python. Então eu instalei o Flask-SocketIO . Eu não sei se é realmente seguro, mas o fato é que eu não consigo conectar à porta 5000.

se eu fizer

sudo nestat -anp | grep 5000

Eu recebo:

tcp     0      0 127.0.0.1:5000      0.0.0.0:*       LISTEN     18541/python
    
por Mr Bonjour 23.02.2016 / 11:42

2 respostas

2

Por que você não faz o Flask para ouvir em todos os IPs públicos?

link

Externally Visible Server

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 debug disabled or trust the users on your network, you can make the server publicly available simply by changing the call of the run() method to look like this:

app.run(host='0.0.0.0')

This tells your operating system to listen on all public IPs.

    
por 23.02.2016 / 12:29
1

O arquivo / etc / hosts é usado para pesquisa de nome, não para redirecionamento de endereço IP para endereço IP. Além disso, se a sandbox for eficaz, você não conseguirá acessar o servidor virtual do lado da LAN / WLAN. Posso sugerir duas maneiras possíveis de resolver seu problema, mas pode haver outras.

1) Se o servidor virtual pudesse ser configurado para suavizar a sandbox - ou seja, para ter um endereço IP sem loop, essa seria a solução mais fácil.

2) A segunda maneira requer mais trabalho. Isso implica escrever um programa simples de ouvinte / encaminhador que seja executado em segundo plano, escutando no endereço do computador real (mas não um arbitrário) na porta 5000 e encaminhando os pacotes para 127.0.0.1. Se isso funcionar, você pode usar seu roteador para encaminhar pacotes endereçados a qualquer endereço IP privado: porta (como 10.0.0.2:5000) para o endereço do computador do ouvinte.

    
por 23.02.2016 / 12:39