仮想マシンで実行されているシステム内で、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は非アクティブです。
この問題を修正するにはどうすればよいですか?
まず、次の出力を確認して、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')
最善の方法
flask run --Host=0.0.0.0
同じ問題が発生しました。それを解決するために、アプリケーションを実行する方法を更新しました:
app.run(debug=True,Host='0.0.0.0')
Host = 0.0.0.0を使用すると、ローカルネットワーク経由でアプリにアクセスできます。