Networking

埠轉發問題,特別是 Flask,但不是 express.js

  • March 18, 2017

我有一個在本地執行的伺服器(Arch Linux),上面有幾個服務,我想添加一個在不同埠上執行的新 python 服務(Flask)。在本地,伺服器正在執行192.168.x.x,我已經可以訪問目前在其上執行的所有服務。我在 port 上啟動了我的 Flask 伺服器5000,但是在我的筆記型電腦上執行 nmap 顯示該埠仍然關閉:

mylaptop~$ nmap 192.168.x.x

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

但是,該埠在伺服器的 localhost 上是打開的

myserver~$ nmap localhost

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

我認為這是 iptables 的某種問題(我大多不熟悉),但我嘗試在 port 上執行 express.js 伺服器(我已經在 port 上執行了一個30005000,果然它確實有效。

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 服務預設轉發。任何幫助表示讚賞!

假設您使用的是內置於 HTTP 伺服器的 Flasks,那麼這在Flask 文件中進行了解釋(向下滾動到 Externally Visible Server):

如果您執行伺服器,您會注意到伺服器只能從您自己的電腦訪問,而不能從網路中的任何其他電腦訪問。這是預設設置,因為在調試模式下,應用程序的使用者可以在您的電腦上執行任意 Python 程式碼。

如果您禁用了調試器或信任網路上的使用者,您只需在命令行中添加 –host=0.0.0.0 即可使伺服器公開可用:

> > 燒瓶執行–host=0.0.0.0 > > >

這告訴您的作業系統偵聽所有公共 IP。

nmap您機器上的輸出myserver顯示埠 5000 為打開的,因為您使用nmap localhost了 ,它掃描本地主機上打開的埠,即 127.0.0.1,而不是 192.168.xx

引用自:https://unix.stackexchange.com/questions/351974