
Ich versuche, mit VirtualBox eine Ubuntu Linux-VM einzurichten, um den Server zu emulieren, für den ich entwickle. Der Server verfügt über drei Netzwerkschnittstellen.
Auf dem Server gibt es eine von Mosquitto gehostete Webseite ng
und eine Instanz von Mosquitto. Wir möchten, dass diese über eine Schnittstelle, die Verwaltungsschnittstelle, verfügbar sind, aber nicht über die beiden anderen. Wir verwenden ein VRF, um die Verwaltungsschnittstelle zu isolieren.
Die VirtualBox-Adapter sind konfiguriert für:
- Adapter 1 – Host-Only-Adapter (dies soll die Verwaltungsschnittstelle sein). In der VM ist es ensp0s3 mit der Adresse 192.168.56.104.
- Adapter 2 – NAT. In der VM ist es enp0s8 mit der Adresse 10.0.3.15.
- Adapter 3 – NAT. In der VM ist es enp0s9 mit der Adresse 10.0.4.15.
Im Host-Only-Netzwerk ist der Host 192.168.56.103.
In der VM ist mir die Isolierung egal, aber ich habe das Problem, dass ich vom Hostcomputer aus nicht auf die Webseite zugreifen kann.
Die Webseite wird von Port 4200 bereitgestellt ng serve --host 0.0.0.0 --disable-host-check
und ist laut Konfiguration auf Port 4200 platziert. Ich verstehe 0.0.0.0 so, dass es „alle Adressen“ bedeutet.
lsof
zeigt an:
$ 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)
netstat
und ss
zeigen ähnliche offene Bindungen:
$ 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
Beim Versuch , in einem Browser auf dem Hostcomputer zu navigieren, wird jedoch die Meldung „Verbindung abgelehnt“ angezeigt.
Ich weiß, dass es kein Problem mit der Netzwerkerreichbarkeit ist, denn
- Ich kann
ping
die VM vom Host - Ich kann
ssh
vom Host aus in die VM - Wenn ich dies
watch -n 1 "ifconfig enp0s3"
in der VM mache, sehe ich, dass die Zähler bei jeder Aktualisierung des Browsers um einige Pakete hochzählen.
In der VM geben curl http://0.0.0.0:4200
beide curl http://127.0.0.1:4200
die Seite zurück, aber curl http://192.168.56.104
es steht:
curl: (7) Verbindung zu 192.168.56.104 Port 4200 konnte nicht hergestellt werden: Verbindung abgelehnt
Ich scheine auf der VM nicht blockiert zu sein, da sudo ufw status
dort „Status: inaktiv“ angezeigt wird und sudo iptables-save
Folgendes steht:
# 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
Ich denke vielleicht, dass das etwas Seltsames ist ng
, aber ich sehe die gleichen Fehler mit einem MQTT-Broker in der VM.
Warum kann ich also, wenn ich an 0.0.0.0 gebunden bin, nicht die „echte“ IP-Adresse von einem Browser auf dem Host oder auf curl
der VM verwenden?