Как разрешить удаленные соединения с Flask?

19

Внутри системы, работающей на виртуальной машине, я могу получить доступ к работающему серверу на 127.0.0.1:5000 .

Хотя «удаленный» адрес vm равен 192.168.56.101 (ping и ssh работают нормально), я не могу получить доступ к серверу с 192.168.50.101:5000 ни с виртуальной машины, ни с локальной.

Я предполагаю, что есть что-то, что предотвращает удаленные подключения.

Здесь / etc / network / interfaces:

auto eth1
iface eth1 inet static
address 192.168.56.101
netmask 255.255.255.0

ufw неактивен.

Как исправить эту проблему?

    
задан Ilya Smagin 01.12.2012 в 22:34
источник

2 ответа

34

Прежде всего - убедитесь, что ваш HTTP-сервер прослушивает 192.168.50.101:5000 или всюду ( 0.0.0.0:5000 ), проверяя вывод:

netstat -tupln | grep ':5000'

Если это не так, обратитесь к документации Flask для привязки к адресу, отличному от localhost.

Если это так, разрешите трафик с помощью iptables:

iptables -I INPUT -p tcp --dport 5000 -j ACCEPT

Из документации Flask:

  

Внешний видимый сервер. Если вы запустите сервер, вы заметите, что   сервер доступен только с вашего собственного компьютера, а не с любого   другие в сети. Это значение по умолчанию, так как в режиме отладки   пользователь приложения может выполнить произвольный код Python на вашем   компьютер.

     

Если отладка отключена или доверена пользователям в вашей сети, вы можете   сделать сервер общедоступным просто, изменив вызов    run() , чтобы выглядеть следующим образом:

app.run(host='0.0.0.0')
    
ответ дан Marcin Kaminski 01.12.2012 в 22:49
источник
0

У меня была такая же проблема. Чтобы решить эту проблему, я обновил способ запуска приложения:

 app.run(debug=True,host='0.0.0.0')

Использование host = 0.0.0.0 позволяет мне получить доступ к моему приложению через локальную сеть.

    
ответ дан Alex andre 24.02.2018 в 15:14