為什麼我無法透過介面IP位址存取ng?

為什麼我無法透過介面IP位址存取ng?

我正在嘗試使用 VirtualBox 設定 Ubuntu Linux VM 來模擬我正在開發的伺服器。伺服器有三個網路介面。

在伺服器上,有一個由 Mosquitto 託管的網頁ng和一個 Mosquitto 實例。我們希望這些可以從一個介面(管理介面)獲得,但不能從其他兩個介面獲得。我們使用 VRF 來隔離管理介面。

VirtualBox 適配器配置為:

  • 適配器 1 - 僅主機適配器(旨在作為管理介面)。在虛擬機器中,它是 ensp0s3,位址為 192.168.56.104。
  • 適配器 2 - NAT。在虛擬機器中,它是 enp0s8,位址為 10.0.3.15。
  • 適配器 3 - NAT。在虛擬機器中,它是 enp0s9,位址為 10.0.4.15。

在僅主機網路上,主機為 192.168.56.103。

在虛擬機器中,我不關心隔離,但我遇到了無法從主機存取網頁的問題。

該網頁由連接埠 4200 提供服務ng serve --host 0.0.0.0 --disable-host-check,配置將其置於連接埠 4200 上。

lsof顯示:

$ sudo lsof | grep :4200
ng\x20ser  30802                            root   20u     IPv4             330718      0t0        TCP *:4200 (LISTEN)
ng\x20ser  30802 30803 node                 root   20u     IPv4             330718      0t0        TCP *:4200 (LISTEN)
ng\x20ser  30802 30804 node                 root   20u     IPv4             330718      0t0        TCP *:4200 (LISTEN)
ng\x20ser  30802 30805 node                 root   20u     IPv4             330718      0t0        TCP *:4200 (LISTEN)
ng\x20ser  30802 30806 node                 root   20u     IPv4             330718      0t0        TCP *:4200 (LISTEN)
ng\x20ser  30802 30807 node                 root   20u     IPv4             330718      0t0        TCP *:4200 (LISTEN)
ng\x20ser  30802 30808 node                 root   20u     IPv4             330718      0t0        TCP *:4200 (LISTEN)
ng\x20ser  30802 30916 ng\x20ser            root   20u     IPv4             330718      0t0        TCP *:4200 (LISTEN)
ng\x20ser  30802 30917 ng\x20ser            root   20u     IPv4             330718      0t0        TCP *:4200 (LISTEN)
ng\x20ser  30802 30918 ng\x20ser            root   20u     IPv4             330718      0t0        TCP *:4200 (LISTEN)
ng\x20ser  30802 30919 ng\x20ser            root   20u     IPv4             330718      0t0        TCP *:4200 (LISTEN)

netstatss顯示類似的開放綁定:

$ sudo netstat -tln | grep :4200
tcp        0      0 0.0.0.0:4200            0.0.0.0:*               LISTEN
$ sudo ss -tln | grep :4200
LISTEN  0        511              0.0.0.0:4200           0.0.0.0:*

http://192.168.56.104:4200但嘗試在主機上的瀏覽器中導航時會出現「連線被拒絕」的情況。

我知道這不是網路可及性的問題,因為

  1. 我可以ping從主機存取虛擬機
  2. 我可以ssh從主機進入虛擬機
  3. 如果我watch -n 1 "ifconfig enp0s3"在虛擬機器中這樣做,每次刷新瀏覽器時,我都會看到計數器增加一些資料包。

在虛擬機器中,curl http://0.0.0.0:4200兩者curl http://127.0.0.1:4200都返回頁面,但curl http://192.168.56.104顯示:

curl:(7)無法連線到192.168.56.104埠4200:連線被拒絕

我似乎沒有在虛擬機器上被阻止,因為sudo ufw status顯示“狀態:非活動”並sudo iptables-save顯示:

# Generated by iptables-save v1.8.4 on Tue Nov 29 14:13:18 2022
*filter
:INPUT ACCEPT [160:15704]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [219:23422]
-A FORWARD -m physdev --physdev-in enp0s8 --physdev-out enp0S9 -j ACCEPT
-A FORWARD -m physdev --physdev-in enp0S9 --physdev-out enp0s8 -j ACCEPT
COMMIT
# Completed on Tue Nov 29 14:13:18 2022

我可能認為這是一些奇怪的ng事情,但我在虛擬機器中的 MQTT 代理中看到了同樣的失敗。

那麼,當綁定到 0.0.0.0 時,為什麼我不能使用主機或curl虛擬機器上的瀏覽器中的「真實」IP 位址?

相關內容