Networking

打開埠不起作用

  • April 19, 2018

我有一個在樹莓派上的 8000 埠上執行的 python 伺服器,並希望在目前無法正常工作的本地網路中訪問它。

介面 wlan0 配置了 IP 10.0.0.69 和網路遮罩 255.255.255.0。

我無法訪問本地網路中的伺服器(來自不同的主機):

root@DESKTOP-Lukas:~# curl http://10.0.0.69:8000
curl: (7) Failed to connect to 10.0.0.69 port 8000: Connection refused

我也無法從樹莓派訪問伺服器:

lukas@raspberrypi:~ $ curl http://10.0.0.69:8000
curl: (7) Failed to connect to 10.0.0.69 port 8000: Connection refused

伺服器正在執行並偵聽埠 8000:

lukas@raspberrypi:~ $ sudo netstat -tnlp | ack 8000
tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN      743/python

使用 localhost 時伺服器正確響應:

lukas@raspberrypi:~ $ curl localhost:8000
<h1>Not Found</h1><p>The requested URL / was not found on this server.</p>

防火牆允許對埠 8000 執行操作:

lukas@raspberrypi:~ $ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
...
8000                       ALLOW       Anywhere
8000/tcp                   ALLOW       Anywhere
8000 (v6)                  ALLOW       Anywhere (v6)
8000/tcp (v6)              ALLOW       Anywhere (v6)

您的netstat輸出顯示了問題:

tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN      743/python

具體來說,127.0.0.1:8000表明您的 Web 伺服器僅綁定到環回地址127.0.0.1。您需要將其綁定到實際的網路介面,或者更簡單地說,將其綁定到所有地址(通常通過指定0.0.0.0),然後所有其他主機都可以通過路由訪問您的 Pi。

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