¿Por qué no puedo acceder a ng mediante la dirección IP de la interfaz?

¿Por qué no puedo acceder a ng mediante la dirección IP de la interfaz?

Estoy intentando usar VirtualBox para configurar una máquina virtual Ubuntu Linux para emular el servidor para el que estoy desarrollando. El servidor tiene tres interfaces de red.

En el servidor hay una página web alojada ngy una instancia de Mosquitto. Queremos que estén disponibles desde una interfaz, la interfaz de administración, pero no desde las otras dos. Usamos un VRF para aislar la interfaz de administración.

Los adaptadores VirtualBox están configurados para:

  • Adaptador 1: Adaptador solo de host (está destinado a ser la interfaz de administración). En la VM es ensp0s3 con dirección 192.168.56.104.
  • Adaptador 2 - NAT. En la VM es enp0s8 con dirección 10.0.3.15.
  • Adaptador 3 - NAT. En la VM es enp0s9 con dirección 10.0.4.15.

En la red de solo host, el host es 192.168.56.103.

En la máquina virtual no me importa el aislamiento, pero tengo un problema en el que no puedo acceder a la página web desde la computadora host.

La página web es atendida ng serve --host 0.0.0.0 --disable-host-checky la configuración la coloca en el puerto 4200. Entiendo que 0.0.0.0 significa "todas las direcciones".

lsofmuestra:

$ 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)

netstaty ssmostrar enlaces abiertos similares:

$ 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:*

Pero al intentar navegar http://192.168.56.104:4200en un navegador en la computadora host aparece "conexión rechazada".

Sé que no es un problema con la accesibilidad de la red porque

  1. Puedo pingla VM desde el host
  2. Puedo sshingresar a la VM desde el host
  3. Si lo hago watch -n 1 "ifconfig enp0s3"en la VM, veo que los contadores incrementan algunos paquetes cada vez que actualizo el navegador.

En la VM, curl http://0.0.0.0:4200y curl http://127.0.0.1:4200ambos devuelven la página pero curl http://192.168.56.104dice:

curl: (7) No se pudo conectar al puerto 192.168.56.104 4200: conexión rechazada

Parece que no estoy bloqueado en la VM porque sudo ufw statusdice "Estado: inactivo" y sudo iptables-savedice:

# 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

Podría pensar que esto es algo extraño, ngpero veo los mismos fallos con un broker MQTT en la VM.

Entonces, cuando estoy vinculado a 0.0.0.0, ¿por qué no puedo usar la dirección IP "real" de un navegador en el host o en curlla VM?

información relacionada