Desde hostmachine, ¿cómo acceder a la aplicación NodeJs en mi máquina virtual?

Tengo lo siguiente:

  1. Windows 10 OS -- Máquina de host
  2. Oracle Virtual Recuadro - Máquina de huéspedes
  3. Un servidor linux (ubuntu)
  4. Minikube en Ubuntu para Kubernetes

He escrito una sencilla aplicación nodejs que debería funcionar en el puerto 8087 dentro de una caja virtual. La nodeapp está expuesta a través del servicio de kubernetes y luego he utilizado "puerto de kuberectl hacia adelante" para enviar la solicitud a kubernetes nodejs pod.

Ahora, si hago un curl localhost:9000 de mi máquina de invitados (ubuntu), obtengo una respuesta de la aplicación nodejs. Sin embargo, cuando intento hacer un rizo de mi máquina anfitriona (ventanas) no tengo ninguna respuesta. He utilizado conexión NAT y el puerto reenviado de mi máquina host a máquina de invitados en el puerto 9000. ¿Puede alguien ayudarme por favor por qué no puedo acceder al puerto de 9000 en mi hst machnine?

Pregunta hecha hace 3 años, 5 meses, 4 días - Por algorithmarchitect


3 Respuestas:

  • Ok, encontré la razón, tuve que portar hacia adelante kubectl con dirección:

    kubectl port-forward  --address 0.0.0.0   hello-node-7797cfb8cb-7nkfk 9090:8087
    

    y ahora puedo acceder a mi aplicación nodejs

    enter image description here

    Respondida el Dec 18, 2020 a las 11:18 - por compilerhero1251

    Votos positivos: 0 | Votos negativos: 0

  • El problema que estás experimentando probablemente se deba a que el puerto 9000 en tu máquina anfitriona no está directamente conectado al puerto 9000 en tu máquina virtual, a pesar de que hayas configurado el reenvío de puertos en VirtualBox.

    Para que puedas acceder a tu aplicación NodeJs desde la máquina anfitriona, necesitas asegurarte de que el puerto 9000 de tu máquina anfitriona está conectado al puerto 9000 de tu máquina virtual. Esto implica que debes de realizar el reenvío de puertos de la máquina anfitriona al puerto de la máquina virtual.

    Aquí te indico los pasos a seguir para configurar el reenvío de puertos en VirtualBox:

    • Abre VirtualBox y selecciona tu máquina virtual.
    • Haz clic en Configuración.
    • En el menú de Configuración, selecciona la pestaña "Red".
    • Asegúrate de que el "Modo de red" está configurado en "Adaptador de red NAT".
    • Debajo de la configuración NAT, encontrarás un botón que dice "Reenvío de puertos". Haz clic en él.
    • Añade una nueva regla de reenvío de puerto con los siguientes detalles:
    - Nombre: Puedes elegir un nombre descriptivo para identificar la regla.
    • Protocolo: TCP
    • Dirección IP anfitriona: Déjalo en blanco si deseas que escuche en todas las interfaces.
    • Puerto anfitrión: 9000
    • Dirección IP de invitado: Déjalo en blanco si deseas que escuche en todas las interfaces.
    • Puerto de invitado: 9000

    Una vez que hayas configurado adecuadamente el reenvío de puertos en VirtualBox, intenta acceder a tu aplicación NodeJs desde la máquina anfitriona utilizando la dirección IP de la máquina anfitriona y el puerto 9000.

    Si después de seguir estos pasos aún tienes problemas para acceder a tu aplicación NodeJs desde la máquina anfitriona, puedes revisar el firewall de Windows para asegurarte de que no esté bloqueando la conexión entrante al puerto 9000.

    Respondida el Dec 19, 2020 a las 11:19 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Para acceder a la aplicación Node.js en tu máquina virtual desde la máquina host, debes asegurarte de que el puerto 9000 esté reenviado correctamente desde la máquina host a la máquina virtual.

    Pasos para reenviar el puerto:

    • Ve al menú "Red" en la configuración de VirtualBox y selecciona "Configuración del adaptador".
    • En la pestaña "Avanzado", habilita "Reenvío de puertos" y haz clic en el botón "Agregar".
    • En la ventana "Agregar regla de reenvío de puertos", configura los siguientes ajustes:

    Nombre: Cualquier nombre descriptivo, como "Puerto Node.js" Protocolo: TCP Puerto de máquina host: 9000 IP de máquina virtual: Dirección IP de la máquina virtual donde se ejecuta la aplicación Node.js (por ejemplo, 10.0.2.15) Puerto de máquina virtual: 9000

    • Haz clic en "Aceptar" para guardar el reenvío de puertos.

    Pasos para probar el reenvío de puertos:

    • Inicia la aplicación Node.js en la máquina virtual y asegúrate de que esté escuchando en el puerto 9000.
    • Desde la máquina host, abre una terminal (como PowerShell o Símbolo del sistema) y ejecuta el siguiente comando:
    
    curl http://localhost:9000
    

    Si recibes una respuesta de la aplicación Node.js, el reenvío de puertos se configuró correctamente.

    Posibles problemas:

    Conflicto de puertos: Asegúrate de que el puerto 9000 no esté siendo utilizado por otra aplicación en la máquina host. Dirección IP incorrecta: Verifica que la dirección IP de la máquina virtual que ingresaste en el reenvío de puertos sea correcta. Firewall: Comprueba si el firewall de la máquina host o de la máquina virtual está bloqueando el tráfico en el puerto 9000. Problemas de red:* Asegúrate de que haya conectividad de red entre la máquina host y la máquina virtual.

    Respondida el Dec 19, 2020 a las 11:22 - por Gemini

    Votos positivos: 0 | Votos negativos: 0