
Estoy intentando permitir que WSL use un proxy de host local (en realidad es Fiddler) en mi Windows, pero no puedo ver ninguna conexión como esa y las descargas generalmente fallan, ¿cómo soluciono eso?
Sé que puedo conectarme al host local de Linux desde Windows, pero ¿cómo puedo revertir esto?
WSL es Ubuntu 18.04
Respuesta1
No estoy seguro de si lo siguiente funcionará con aplicaciones que están vinculadas ajustolocalhost, pero esto funcionó para Fiddler y WSL2:
Respuesta2
Debe ejecutar el siguiente comando en PowerShell como administrador:
New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow
Este comando viene de esto.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.
Editar 2023: Un nuevomodo espejo de redy un nuevoherramienta de gestión de cortafuegosse han aplicado.
Respuesta3
WSL 2 requiere algo de trabajo adicional en comparación con WSL 1.
Permita que los puertos requeridos atraviesen el 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
. Próximo.1.5 Seleccione
TCP
ySpecific local ports
. Inserte el puerto, una lista de puertos separados por comas o un rango de puertos. Próximo.1.6 Seleccione
Allow connection
. Próximo.1.7 Verificar solo el
Public
perfil. Próximo.1.8 Ingrese un nombre para la regla. p.ej
WSL
. Hecho.Descubra la dirección IP de WSL desde dentro:
grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'
Esta es la dirección IPv4 de la interfaz de red vEthernet (WSL)
.
Pruebe la conexión al host de Windows usando
curl
otelnet
:3.1
curl ip.from.step.2:port
He utilizado este procedimiento para conectarme a un servidor Oracle y a un servidor X que se ejecuta en Windows.
Actualizar: Dado que la dirección IP de WSL cambiará cada vez que se reinicie Windows, es conveniente recuperarla y actualizar el hosts
archivo automáticamente.
En WSL:
ejecútelo
cat /etc/hosts
para averiguar el nombre del host de Windows.Agregue 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
Respuesta4
Hay una "función" de conveniencia que viene conWSL-VPNKit. Si instala e importa esta distribución como se muestra en las instrucciones README, podrá utilizarla host.internal
para acceder al host de Windows sin conocer su dirección IP.
Después de la descarga,
wsl --import wsl-vpnkit --version 2 $env:USERPROFILE\wsl-vpnkit wsl-vpnkit.tar.gz
Agregue a su ~/.bashrc,
wsl.exe -d wsl-vpnkit --cd /app service wsl-vpnkit status >/dev/null || wsl.exe -d wsl-vpnkit --cd /app service wsl-vpnkit start
Después de recargar el terminal, intenta golpear host.internal
desde WSL. Por ejemplo, si el puerto proxy de Fiddler es 8888,
nc -v -w5 -z host.internal 8888