17 votos

¿Cómo conectar wsl a un localhost de Windows?

Estoy intentando que WSL utilice un proxy localhost (en realidad es Fiddler) en mi Windows, pero no veo ninguna conexión así, y las descargas suelen fallar, ¿cómo lo arreglo?

Sé que puedo conectarme al localhost de Linux desde el de Windows, pero ¿cómo puedo revertir esto?

WSL es Ubuntu 18.04

12voto

Kiruahxh Puntos 121

Debe ejecutar el siguiente comando en un powershell ejecutado como administrador:

New-NetFirewallRule -DisplayName "WSL" -Direction Inbound  -InterfaceAlias "vEthernet (WSL)"  -Action Allow

Este comando proviene de este Billete WSL2 . Cualquier regla de firewall relacionada con la dirección IP de WSL no será efectiva porque con WSL2 la IP cambia cada vez.

6voto

Jordan Lev Puntos 146

No estoy seguro de si lo siguiente funcionará con las aplicaciones que están vinculadas a sólo localhost, pero esto funcionó para Fiddler y WSL2:

  1. Establezca la opción de Fiddler "Permitir la conexión de ordenadores remotos" y reinicie Fiddler Fiddler options: allow remote computers to connect

  2. Tome la información de su conexión de red WSL (en mi máquina, el adaptador se llama vEthernet (WSL) ) WSL network connection details

  3. Utilice esa dirección, por ejemplo, 172.26.224.1 donde normalmente utilizaría localhost curl -I 172.26.224.1 output in WSL2

5voto

Marduk Puntos 193

WSL 2 requiere un trabajo extra en comparación con WSL 1.

  1. Permitir el puerto(s) requerido(s) a través del firewall.

    1.1 Lanzamiento Windows Defender Firewall with Advanced Security

    1.2 En el panel izquierdo seleccione Incoming Rules .

    1.3 En el panel derecho haga clic en New Rule .

    1.4 Para el tipo de regla seleccione Port . Siguiente.

    1.5 Seleccionar TCP y Specific local ports . Introduzca el puerto, una lista de puertos separada por comas o un rango de puertos. Siguiente.

    1.6 Seleccione Allow connection . Siguiente.

    1.7 Compruebe sólo el Public perfil. Siguiente.

    1.8 Introduzca un nombre para la regla, por ejemplo WSL . Hecho.

  2. Averigüe la dirección IP de WSL desde su interior:

    grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'

Es la dirección IPv4 de la interfaz de red vEthernet (WSL) .

  1. Pruebe la conexión con el host de Windows utilizando curl o telnet :

    3.1 curl ip.from.step.2:port

He utilizado este procedimiento para conectarme a un servidor Oracle y a un servidor X que funciona en Windows.

Actualización : Dado que la dirección IP de WSL cambiará cada vez que se reinicie Windows, es conveniente obtenerla automáticamente y actualizar el hosts archivo.

En WSL:

  1. ejecutar cat /etc/hosts para averiguar el nombre del host de Windows.

  2. Añade el siguiente código a ~/.profile :

    HOST=<WINDOWS_HOSTNAME>
    IP_HOST=$(grep -m 1 $HOST /etc/hosts)
    OLD_IP=$(echo "$IP_HOST" | awk '{print $1}')
    NEW_IP=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}')
    
    if [ "$NEW_IP" != "$OLD_IP" ]; then
       echo "Updating IP Address-hostname mapping"
       sudo sed -i "s|$IP_HOST|$NEW_IP\t$HOST|" /etc/hosts
       echo "$HOST has the IP Address $NEW_IP"
    fi

0voto

Dasith Wijes Puntos 101

Vea las orientaciones aquí

https://docs.microsoft.com/en-us/Windows/wsl/networking#accessing-Windows-networking-apps-from-linux-host-ip

Si quieres acceder a una aplicación de red que se ejecuta en Windows (por ejemplo, una aplicación que se ejecuta en un servidor NodeJS o SQL) desde tu distribución de Linux (es decir, Ubuntu), entonces necesitas usar la dirección IP de tu máquina anfitriona. Aunque este no es un escenario común, puedes seguir estos pasos para que funcione.

Obtenga la dirección IP de su máquina anfitriona ejecutando este comando desde su distribución de Linux: cat /etc/resolv.conf Copie la dirección IP siguiendo el término: nameserver. Conéctese a cualquier servidor Windows utilizando la dirección IP copiada. La imagen de abajo muestra un ejemplo de esto conectándose a un servidor Node.js corriendo en Windows vía curl.

También tendrá que permitir las conexiones de entrada al puerto en el host.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X