es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No es posible conectarse al servidor local en WSL2 desde el equipo anfitrión de Windows.

Tengo un proyecto de Python3 que utiliza waitress para servir en localhost en WSL2/Ubuntu 20. Inicio el servidor desde VSCode remoto, pero no puedo conectarme a él desde un navegador en Windows utilizando la dirección http://127.0.0.1:5998 o http://localhost:5998, obteniendo un error de no poder conectar. No pude encontrar dónde está el problema y agradezco cualquier ayuda.

Servidor de Python:

@app.route(‘/’)
def index():
return ‘Éxito’

if name == ‘main‘:
from waitress import serve
process_count = multiprocessing.cpu_count()
serve(app, host=”0.0.0.0″, port=5998, threads=process_count)

Veo que está escuchando en WSL:

sudo lsof -i -P -n | grep LISTEN
python3 1263 xxx 8u IPv4 39138 0t0 TCP *:5998 (LISTEN)

También intenté usar 127.0.0.1 como dirección IP de serve() en lugar de 0.0.0.0, pero no ayudó.

Tengo una regla en el firewall de Windows para esto:

Get-NetFirewallRule -DisplayName WSL

Nombre : {9c5c5f2b-a9c7-42b7-82ac-f0c2b1819103}
NombreMostrado : WSL
Descripción :
GrupoMostrado :
Grupo :
Habilitado : True
Perfil : Cualquiera
Plataforma : {}
Dirección : Entrada
Acción : Permitir
DirectivaRecorridoEdge : Bloquear
AsignaciónOrigenFlojo : Falso
AsignaciónSoloLocal : Falso
Propietario :
EstadoPrimario : OK
Estado : La regla se analizó correctamente desde el almacén. (65536)
EstadoAplicación : NoAplicable
OrigenAlmacénDirectivas : AlmacenamientoPersistente
TipoOrigenAlmacénDirectivas : Local

He verificado los puertos en uso en Windows utilizando netstat -o y no parece haber nada utilizando el puerto 5998.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el servidor no es accesible desde Windows porque no se está vinculando con la dirección IP correcta. Al usar 0.0.0.0 como el host en la función serve(), el servidor se está vinculando con todas las interfaces de red disponibles, incluyendo la utilizada por WSL.

    Para acceder al servidor desde Windows, la dirección IP utilizada debe ser la dirección IP de la interfaz virtual de WSL. Para obtener la dirección IP, ejecuta el comando ip addr show y busca la dirección IP asignada a la interfaz eth0.

    Una vez obtenida la dirección IP, úsala en lugar de 127.0.0.1 o localhost en el navegador. Por ejemplo, `http://192.168.1.100:5998`.

    Además, asegúrate de que el Firewall de Windows permita el tráfico entrante en el puerto utilizado por el servidor. Puedes agregar una regla utilizando el cmdlet New-NetFirewallRule de PowerShell:

    New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -Protocol TCP -LocalPort 5998 -Action Allow
    

    Siguiendo estos pasos, el servidor debería ser accesible desde un navegador en Windows utilizando la dirección IP de la interfaz virtual de WSL.

Comments are closed.