Por que não consigo acessar pelo endereço IP da interface?

Por que não consigo acessar pelo endereço IP da interface?

Estou tentando usar o VirtualBox para configurar uma VM Ubuntu Linux para emular o servidor para o qual estou desenvolvendo. O servidor possui três interfaces de rede.

No servidor, há uma página web hospedada nge uma instância do Mosquitto. Queremos que eles estejam disponíveis em uma interface, a interface de gerenciamento, mas não nas outras duas. Usamos um VRF para isolar a interface de gerenciamento.

Os adaptadores VirtualBox estão configurados para:

  • Adaptador 1 - Adaptador somente de host (destina-se a ser a interface de gerenciamento). Na VM é ensp0s3 com endereço 192.168.56.104.
  • Adaptador 2 - NAT. Na VM é enp0s8 com endereço 10.0.3.15.
  • Adaptador 3 - NAT. Na VM é enp0s9 com endereço 10.0.4.15.

Na rede somente host, o host é 192.168.56.103.

Na VM, não me importo com o isolamento, mas estou enfrentando um problema em que não consigo acessar a página da Web no computador host.

A página da web é atendida ng serve --host 0.0.0.0 --disable-host-checke a configuração a coloca na porta 4200. Entendo que 0.0.0.0 significa "todos os endereços".

lsofmostra:

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

netstate ssmostrar ligações abertas semelhantes:

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

Mas tentar navegar http://192.168.56.104:4200em um navegador no computador host dá "conexão recusada".

Eu sei que não é um problema de acessibilidade da rede porque

  1. Eu posso pinga VM do host
  2. Posso sshentrar na VM a partir do host
  3. Se eu fizer isso watch -n 1 "ifconfig enp0s3"na VM, vejo os contadores incrementarem alguns pacotes cada vez que atualizo o navegador.

Na VM, curl http://0.0.0.0:4200e curl http://127.0.0.1:4200ambos retornam a página mas curl http://192.168.56.104diz:

curl: (7) Falha ao conectar à porta 192.168.56.104 4200: Conexão recusada

Parece que não estou bloqueado na VM porque sudo ufw statusdiz "Status: inativo" e sudo iptables-savediz:

# 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

Posso pensar que isso foi algo estranho, ngmas vejo as mesmas falhas com um corretor MQTT na VM.

Então, quando vinculado a 0.0.0.0, por que não posso usar o endereço IP "real" de um navegador no host ou curlna VM?

informação relacionada