複数のサービスを含むローカルで実行されるサーバー(Arch Linux)があり、別のポートで実行される新しいPythonサービス(Flask)を追加したいと思います。ローカルでは、サーバーが実行されており、192.168.x.x
現在サーバーで実行されているすべてのサービスにすでにアクセスできます。ポートでFlaskサーバーを起動しましたが、ノート5000
ブックでnmapを実行すると、ポートはまだ閉じていると表示されます。
mylaptop~$ nmap 192.168.x.x
PORT STATE SERVICE
22/tcp open ssh
3000/tcp open ppp
5432/tcp open postgresql
ただし、サーバーのローカルホストにはポートが開いています。
myserver~$ nmap localhost
PORT STATE SERVICE
22/tcp open ssh
3000/tcp open ppp
5000/tcp open upnp
5432/tcp open postgresql
私はこれがiptablesの一種の問題だと思いましたが(私はこれについてはよくわかりません)、3000
ポートでexpress.jsサーバーを実行しようとしました(すでにポートで実行されているサーバーがありました)、5000
十分に機能しました。
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
Flaskサーバーをどのように渡すべきかはまだ分からないので、なぜssh、express.js、postgresサービスがデフォルトで配信されるのか疑問に思います。助けてくれてありがとう!
答え1
HTTPサーバーに組み込まれたFlaskを使用すると仮定すると、次のように動作します。フラスコ文書(外部から見えるサーバーまで下にスクロール):
サーバーを実行すると、ネットワーク上の他のコンピューターではなく、自分のコンピューターからのみサーバーにアクセスできることがわかります。デバッグモードでは、アプリケーションユーザーがコンピュータ上で任意のPythonコードを実行できるため、これがデフォルト設定です。
デバッガを無効にした場合、またはネットワーク上のユーザーを信頼している場合は、コマンドラインに --host=0.0.0.0 を追加すると、サーバーを公に使用できます。
フラスコの実行 --host=0.0.0.0
これは、オペレーティングシステムにすべてのパブリックIPを受信するように指示します。
nmap
コンピュータの出力には、myserver
ポート5000が開いていると表示されます。を使用したため、nmap localhost
ローカルホストで192.168.xxではなく127.0.0.1のオープンポートを取得します。