Tengo Ubuntu-20.04 Versión 2 WSL ejecutándose en mi computadora portátil con Windows 10. Todo funciona bien, tengo conexión a internet. Pero solo mientras no esté conectado a una red VPN.
Si me conecto a la red de mi universidad usando Cisco AnyConnect, ya no puedo conectarme a Internet en WSL, mientras que todo funciona bien usando, por ejemplo, Firefox en el sistema de Windows. Obtengo: ping: google.de: falla temporal en la resolución de nombres
Ya intenté abrir un símbolo del sistema de Windows en modo administrador y escribí estos comandos:
netsh winsock reset netsh int ip reset all netsh winhttp reset proxy ipconfig /flushdns rebootEso funcionó una vez, tuve acceso a Internet. Pero tan pronto como desconecté la conexión VPN y me conecté nuevamente, tuve el mismo problema nuevamente. Intenté simplemente ejecutar los comandos nuevamente y reinicié, pero ahora eso ya no funciona.
Así que realmente no sé qué más hacer. Realmente necesito usar WSL mientras estoy conectado a través de VPN.
Hay un problema con la integración de VPN en WSL que se ejecuta en mi Windows 10. Debe redirigir WSL a VPN, siga estos pasos:
PASO-1: Obtenga la dirección DNS de Windows Power Shell
>nslookup Servidor predeterminado: yyyy.com Address: xxxxo
>ipconfig /allPASO-2 Abra Ubuntu-20.04 Versión 2 WSL y abra /etc/resolv.conf
PASO-3 Modifique /etc/resolv.conf . Agregue la dirección VPN en la primera posición (borré las otras direcciones pero no es necesario), guarde el archivo e intente acceder nuevamente. Mi archivo se parece a:
nameserver XXXXEsto funcionó para mí.
Cómo lo rompe Anyconnect v4.9: agrega una ruta para wsl2 con una métrica baja de 2, inferior a 5256, lo que hace que vpn se convierta en la ruta elegida y, por supuesto, eso nunca funcionará. Como se ve a continuación. c:> route.exe print Nota: “172.17.228.192 255.255.255.240” es la subred de destino wsl2. 172.17.228.192 255.255.255.240 En enlace 172.17.228.193 5256 172.17.228.192 255.255.255.240 10.255.0.1 10.255.0.71 – red – haga clic en vpn – propiedad – IPv4 – propiedad, avanzada – métrica automática: desmarque y escriba 5500.
fuente: https://riowingwp.wordpress.com/2020/12/13/anyconnect-bug/
Hay un problema con el reenvío de DNS en WSL2 cuando se usa VPN ( ver Problema de github ). Además, hay un problema con Cisco AnyConnect . Así que aquí hay una solución para estos problemas. Debería funcionar para Ubuntu y Debian.
Averigüe el servidor de nombres con Windows PowerShell (durante la sesión de VPN)
nslookupObtendrá la dirección IPv4 de su servidor de nombres corporativo Copie esta dirección.
Deshabilite la generación de resolv.conf en wsl:
sudo nano /etc/wsl.confcopie este texto en el archivo (para deshabilitar la generación de resolve.conf, cuando se inicie wsl)
[network] generateResolvConf = false En wsl Agregue su servidor de nombres corporativo a resolv.conf
sudo nano /etc/resolv.confElimine otras entradas y agregue la IP de su servidor de nombres corporativo (si tiene un servidor de nombres secundario, agréguelo en una línea separada)
nameserver XXXX (donde XXXX es su dirección obtenida en el paso 1)Configure su adaptador VPN (si tiene Cisco AnyConnect ) abra un PowerShell de administrador
Get-NetIPInterface (en mi caso: "Cisco AnyConnect" ) Get-NetAdapter | Where-Object {$_.InterfaceDescription -Match "Cisco AnyConnect"} | Set-NetIPInterface -InterfaceMetric 6000( Qué es la métrica de la interfaz : se usa para determinar la ruta, Windows usa la interfaz con la métrica más baja)
Reinicie wsl en powershell : wsl.exe --shutdown
Pruébelo en wsl run: wget google.com - si este comando funciona, ya está.
En mi caso, tengo problemas de DNS cuando trato de conectarme a cosas internas a través del navegador (en Windows 10, fe: intranet), causados por el alto valor de métrica establecido en el paso 4 (básicamente deshabilitando la ruta VPN). Así que aquí está la solución para la solución:
Get-NetAdapter | Where-Object {$_.InterfaceDescription -Match "Cisco AnyConnect"} | Get-NetIPInterface Get-NetAdapter | Where-Object {$_.InterfaceDescription -Match "Cisco AnyConnect"} | Set-NetIPInterface -InterfaceMetric 1Todo lo que necesitaba de la respuesta de @kraego es
Get-NetAdapter | Where-Object {$_.InterfaceDescription -Match "Cisco AnyConnect"} | Get-NetIPInterfaceNo pude hacer ping a 8.8.8.8, pero con el cambio de métrica comenzó a funcionar.