Ubuntu

為什麼即使它適用於 localhost 並且防火牆已打開,我的 IP 地址也會被拒絕連接?

  • May 24, 2022

當我sudo ufw status在 Ubuntu 機器上執行時,我得到以下輸出

sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
30303                      ALLOW       Anywhere
9000                       ALLOW       Anywhere
3000                       ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
8008/tcp                   ALLOW       Anywhere
8008                       ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
30303 (v6)                 ALLOW       Anywhere (v6)
9000 (v6)                  ALLOW       Anywhere (v6)
3000 (v6)                  ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
8008/tcp (v6)              ALLOW       Anywhere (v6)
8008 (v6)                  ALLOW       Anywhere (v6)

8008當我從盒子內訪問在埠上執行的服務時,localhost它可以工作。也就是說,以下工作:

curl --head http://localhost:8008/metrics

但如果我改用盒子的 IP 地址,它就不起作用。那是:

$ curl --head http://<public-ip>:8008/metrics
curl: (7) Failed to connect to <public-ip> port 8008: Connection refused

如果我也嘗試從瀏覽器訪問,它仍然被拒絕連接。

這裡會發生什麼?的輸出sudo ufw status顯示埠已打開且可訪問,但仍無法正常工作。

編輯:根據評論中的要求:

netstat -tln | grep 8008
tcp        0      0 127.0.0.1:8008          0.0.0.0:*               LISTEN
ss -tln | grep 8008
LISTEN  0        511            127.0.0.1:8008           0.0.0.0:*

答案在 的輸出中netstat。您正在收聽地址127.0.0.1。您可能需要監聽0.0.0.0(所有本地介面/地址)。

感謝其他評論者的解決。

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