Recientemente instalé WSL Ubuntu 18.04 en mi máquina con Windows, pero nada parece funcionar correctamente porque no tengo acceso a Internet .
Probé algunos comandos y sudo apt update dice 'Error de conexión' y ping google.com literalmente lleva una eternidad, como puede ver en esta captura de pantalla:

También verifiqué nano /etc/resolv.conf y me aseguré de que los servidores de nombres fueran correctos, deshabilité completamente Kaspersky y su firewall, deshabilité Hyper-V, reinstalé WSL varias veces e incluso deshabilité Windows Defender. Nada ayudó.
Entonces, ¿tiene alguna idea de cuál podría ser el problema aquí?
Puede resolver este problema simplemente escribiendo este comando en su terminal
-> sudo systemctl reiniciar NetworkManager
Desafortunadamente, la única solución para mí fue:
Esto es con Win10 V1909 (OS Build 18363.1379). Había intentado todo en esta y otras publicaciones de stackoverflow, sin éxito.
Solo sugiero los pasos anteriores como último recurso absoluto.
Para mí, fue un problema con el servicio VPN (servicio NordVPN) que causó muchos problemas. Simplemente detenga su servicio desde services.msc .
Para mí, este problema surge cuando cambio de una red a otra. Digamos, por ejemplo, que estaba trabajando en el wifi de la oficina y luego me fui a casa y comencé a usar el wifi doméstico. La respuesta anterior https://stackoverflow.com/a/63578387/1409707 funcionó para mí. Parece que esto es un problema real, así que hasta que Windows encuentre una solución, tenía que encontrar una manera más fácil de hacerlo cada vez. Copié los comandos y creé un archivo bat, lo guardé en el escritorio. Entonces, cada vez que cambio la conexión/red wifi, ejecuto el archivo bat como administrador y reinicio el sistema. Espero que esto ayude a alguien que está tratando de averiguar por qué está sucediendo y cómo saber una manera fácil de solucionarlo (no permanente).
cree un nuevo archivo .bat con los siguientes contenidos.
Llamé a mi archivo como networkreset.bat
wsl --shutdown netsh winsock reset netsh int ip reset all netsh winhttp reset proxy ipconfig /flushdns netsh winsock reset shutdown /rcada vez que cambie el wifi/red, ejecute el script como administrador y reinicie.
Después de reiniciar, Internet funciona en WSL en la red conectada.
Abra el símbolo del sistema como administrador y escriba estos comandos:
netsh winsock reset netsh int ip reset all netsh winhttp reset proxy ipconfig /flushdnsReinicie su máquina.
https://github.com/microsoft/WSL/issues/3438#issuecomment-410518578
Tenía ufw instalado en WSL2 con debian 10, después de eliminarlo y reiniciar Windows funcionó.
Copio la receta que me funcionó.
Uso de WSL 2 en Windows 10.
Solución encontrada en https://github.com/microsoft/WSL/issues/5336#issuecomment-653881695
Pasos
Abra Powershell o Cmd como administrador
y ejecuta cada uno de estos comandos:
wsl --shutdown netsh winsock reset netsh int ip reset all netsh winhttp reset proxy ipconfig /flushdns Presiona la tecla de Windows,
escriba Network Reset ,
Pulsa Enter.
Reiniciar Windows
Si tiene suerte, WSL 2 ahora debería poder sudo apt-get update && sudo apt-get upgrade .
Caso de borde extraño
Para mí, todavía no puedo hacer ping a los sitios, pero Internet parece funcionar en cualquier otro lugar en WSL 2.
Por ejemplo, ping stackoverflow.com (o haga ping a cualquier sitio)
da como resultado una "pérdida de paquetes del 100 %".
Sin embargo curl --location stackoverflow.com -i
resulta en una respuesta exitosa.
Y sudo apt-get update && sudo apt-get upgrade ahora funciona.
Pasos de solución de problemas antes de encontrar la receta anterior :
No había usado WSL 2 en meses, estaba tratando de sudo apt update desde la terminal de una distribución de Debian cuando descubrí que mi Internet no funcionaba.
Pasé una hora configurando /etc/resolv.conf y /etc/wsl.conf de mi WSL y resolviendo el error de configuración automática ( https://github.com/microsoft/WSL/issues/3928 ). Todavía no funcionó.
Entonces encontré esta página. Probé las direcciones publicadas. No funcionó.
Finalmente encontré esta solución publicada, y WSL 2 de repente funciona perfectamente.
Me tomó horas tratar de solucionar esto, espero que esto sea útil para alguien algún día.
No desde arriba funcionó. ¡Pero cambiar a WSL 1 funcionó!
entonces en PowerShell como administrador:
wsl --set-default-version 1luego reinstalar Ubuntu
Esto me sucedió cuando intentaba instalar MySQL-Server en WSL2 y me equivoqué con ssh@local host tratando de acceder a la raíz en Ubuntu.
El sistema en sí se volvió realmente extraño (a veces desearía que hubiera alternativas para Ubuntu), así que intenté reiniciar el adaptador vEthernet (WSL) y reiniciar la computadora, y volvió a funcionar.
Así que no sé si esto ayuda a alguien, pero instalé Docker en Windows y seguí las instrucciones de Microsoft para instalar el motor WSL2 según lo recomendado por Docker.
Luego instalé Ubuntu 18.04 LTS con WSL2 y me encontré exactamente con el mismo problema: sin Internet. Todo lo que realmente quiero poder hacer es crear algunas imágenes de la ventana acoplable para probar, en mi computadora portátil de trabajo, por lo que WSL2 sin Internet fue un total fracaso para mí.
Después de mucho hurgar en varios foros y guías, incluido este hilo, esto es lo que finalmente funcionó para mí:
Este primer comando muestra la lista de distribuciones:
C:\usuarios\xyz> wsl -l -v
| NOMBRE | ESTADO | VERSIÓN |
|---|---|---|
| Ubuntu-20.04 | Corriendo | 1 |
| docker-desktop-datos | Corriendo | 2 |
| docker-escritorio | Corriendo | 2 |
Así que ahora use el siguiente comando para configurar la versión de WSL: sustituya el nombre de su distribución y use 1 para cambiar a WSL v1
C:\usuarios\xyz> wsl --set-versión
Resultados
En pocas palabras: tengo una distribución de Ubuntu WSL1, se conecta a Internet y puedo crear imágenes acoplables usando la CLI en Ubuntu usando Dockerfiles sin ningún problema.
En mi caso, la red WSL comienza a no funcionar cuando instalé los requisitos de WSL2 y actualicé mi wsl a la versión 2.
Puede resolver el dominio a IP pero no puede comunicarse con IP a través de Internet.
Actualicé los módulos OS y wsl2 a la última versión y probé todas las soluciones alternativas, pero no funcionó.
Finalmente, encontré la solución.
Para mí, la distribución permaneció como la versión 2 después de eso, ¡pero está funcionando! Vale la pena intentarlo.
Usé esta respuesta para reiniciar la red varias veces, pero la última vez no funcionó.
Solo volvió a funcionar después de desmarcar la compresión en la carpeta 'Temp' (% TEMP%)
compact /u /s:"%TEMP%" /i /Qhttps://github.com/microsoft/WSL/issues/5336#issuecomment-770494713
Y así, los pasos de reinicio de la red.
Referencia de línea de comando:
https://www.tenforums.com/tutorials/26340-compress-uncompress-files-folders-windows-10-a.html
La razón por la que ocurre este error es porque Windows genera automáticamente el archivo resolv.conf con un servidor de nombres incorrecto.
Para resolver este problema, siga los siguientes pasos.
Localice el archivo ejecutando el siguiente comando:
sudo nano /etc/resolv.conf
Verá lo siguiente en el archivo:
# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/resolv.conf # [network] # generateResolvConf = false nameserver xxx.xx.xx8.8.8.8 y guarde el archivo. Ahora debería poder conectarse a Internet.Asegúrese de que la compresión NTFS esté deshabilitada para el siguiente archivo:
%TEMP%\swap.vhdx (es decir, normalmente { 2 , 3 , 4 }: C:\Users\%USERNAME%\AppData\Local\Temp\swap.vhdx )
Esto también podría suceder si ha movido toda su carpeta %TEMP% a otra ubicación.
Referencias:
Instalé wsl y Ubuntu 20.04.
Después de solucionar problemas durante días, esto es lo que funcionó para mí.
Quiero creer que aquellos que experimentan este problema como yo están ejecutando la versión 2 de wsl.
Este problema se resolvió tan pronto como volví a la versión 1 de wsl sin necesidad de realizar más configuraciones.
Para ver cómo efectuar este cambio, siga este enlace Cambiar la versión de wsl
En mi caso, si no estoy en VPN, Internet en mi WSL funciona. Cuando me conecto a VPN, de repente deja de funcionar. Hay una discusión relevante (todavía abierta el día que estoy publicando) sobre la pérdida de Internet en WSL mientras está en VPN aquí .
Esta solución presentada anteriormente para esta pregunta funciona pero requiere reiniciar:
netsh winsock reset netsh int ip reset all netsh winhttp reset proxy ipconfig /flushdnsLa otra solución presentada antes:
sudo nano /etc/resolv.confcon el cambio del servidor de nombres a 8.8.8.8 o 1.1.1.1 o cualquier otra dirección aleatoria, no me funciona mientras estoy en VPN .
Sin embargo, lo que lo resolvió es un híbrido de esta segunda solución y la discusión presentada anteriormente :
Paso 1:
Mientras está en VPN en Powershell:
ipconfig /allBusque su adaptador que esté vinculado a su conexión VPN. Por lo general, puede encontrar en la descripción algo como
"Cisco Anyconnect..."
Busque en ese bloque las direcciones de sus servidores DNS (para mí el primer servidor DNS no funcionó, así que tomé el segundo)
Paso 2: Tomado de esa misma discusión aquí , en PowerShell:
Get-NetAdapter | Where-Object {$_.InterfaceDescription -Match "Cisco AnyConnect"} | Set-NetIPInterface -InterfaceMetric 6000Paso 3:
Mientras estoy en VPN en mi WSL:
$ sudo echo "nameserver <the DNS server address from point 1>" > /etc/resolv.confEl inconveniente de esta solución (al igual que las anteriores) es que debe hacerlo en cada nuevo lanzamiento de su WSL. Para hacerlo un poco más fácil, se puede crear un breve script .sh para automatizarlo. En su WSL:
$touch restore_internet_connection.sh $nano restore_internet_connection.shcoloque el siguiente texto dentro:
echo "nameserver <the output from point 1>" > /etc/resolv.confLa próxima vez que tenga el problema, simplemente repita el paso 2 y:
$sudo restore_internet_connection.shBien, sé que este hilo no ha tenido mucha actividad en mucho tiempo. Pasé DÍAS tratando de arreglar esto en una computadora portátil de trabajo, porque la configuración corporativa no permite una dirección 8.8.8.8 (Google DNS), no solo tuve que editar WSL2 /etc/wsl.conf
#/etc/wsl.conf [network] generateResolvConf = FalseTambién tuve que escribir un script de PowerShell para escribir desde Windows en la carpeta WSL2 la dirección del servidor DNS real. No sé si es por lo bloqueada que está mi PC de trabajo o qué, pero solo puedo usar el servidor DNS que usa mi máquina con Windows, y WSL2 siempre extrae su propia dirección IP para llenar el archivo resolv.conf, que tiene sin servidor DNS.
Cualquier otra persona que sufra este problema, así es como lo solucioné. Guarde esto como lo que desee (en mi caso, debian.ps1, ejecute desde un indicador de Admin PowerShell ./debian.ps1), estoy usando una distribución Debian Buster WSL2 personalizada importada configurada como predeterminada; si está usando algo más que no está configurado como predeterminado, deberá cambiar la última línea (wsl.exe) para iniciar la distribución correcta:
# Get the DNS server of the Windows machine, save into variable nameserver $nameserver = Get-WmiObject -Namespace root\cimv2 -Query "Select dnsserversearchorder from win32_networkadapterconfiguration" | where {$_.DNSServerSEarchOrder -ne $null} | select -ExpandProperty DNSServerSearchOrder # Convert nameserver object into a string $nameserver = Out-String -InputObject $nameserver # Run Set-Contents (sc) to write the resolv.conf file in a public location as it has DOS formatted line endings written by PowerShell, not readable by Linux sc -Path 'c:\Users\Public\Documents\resolv.conf' -Value ('nameserver ' + $nameserver) -Encoding utf8 # Convert the DOS formatted file into UNIX format for WSL2 and write it in the proper place (\etc\resolv.conf, its primary location is \\wsl$\[distro_name] from Windows) [string]::Join( "`n", (gc 'c:\Users\Public\Documents\resolv.conf')) | sc '\\wsl$\debian\etc\resolv.conf' wsl.exeTenga en cuenta que si su distribución no está en \wsl$\debian\, deberá cambiarla a donde realmente reside. Sé que esto no es bonito, y se basa en muchas soluciones diferentes publicadas en Internet, pero es la única que funciona con mi PC administrada por la empresa y las políticas de grupo. Espero que esto ahorre a alguien muchas molestias en una PC administrada por la empresa. Tenga en cuenta que si se está conectando a través de VPN, no creo que esto funcione; tampoco lo he probado en la oficina con Coronavirus, se está ejecutando en WiFi doméstico. Es posible que se necesiten algunos ajustes si está directamente en la red de una empresa.
NOTA : esta solución soluciona los problemas de resolución de DNS en WSL. Las configuraciones absurdas pueden hacer que la distribución WSL no tenga ninguna conexión a Internet.
La solución es configurar el DNS de su adaptador Ethernet/WiFi a su elección preferida. WSL usa el DNS de su máquina host. los comandos como wget funcionaban para mí, sin embargo, los comandos como apt update no parecían funcionar; básicamente, no podía resolver la URL del archivo de ubuntu.
Como se ve en esta imagen, el valor de DNS está vacío. Se deduce del DNS de la máquina host.
Aquí está la imagen de las propiedades del adaptador de la máquina host donde el DNS se proporciona manualmente. Si elige la opción de DNS automático para el host , es posible que algunas cosas no funcionen en el DNS proporcionado por su ISP.
Se recomienda usar OpenDNS, Google DNS o CloudFlare DNS ya que estos son bastante rápidos y confiables. Use DNSBenchmark para encontrar el más rápido para su conexión. Me gustaría resaltar que es estrictamente su elección.
Para mí, el servidor de nombres ya no se podía hacer ping. Así que hice lo siguiente y funcionó para mí.





Desafortunadamente, no pude eliminar Ubuntu ya que contenía mi trabajo. Había intentado todo en esta y otras publicaciones de stackoverflow, sin éxito.
Pero lo anterior funcionó para mí y sin pérdida de trabajo.
Si lo solucionó cambiando el DNS pero WSL2 sigue sobrescribiendo, siga leyendo.
# Replace the nameserver sudo rm /etc/resolv.conf sudo bash -c 'echo "nameserver 1.1.1.1" > /etc/resolv.conf' Si obtiene Operación no permitida . Cámbielo manualmente usando sudo nano /etc/resolv.conf
# Turn off generateResolvConf sudo bash -c 'echo "[network]" > /etc/wsl.conf' sudo bash -c 'echo "generateResolvConf = false" >> /etc/wsl.conf' sudo chattr +i /etc/resolv.confReceta que funcionó para mí. (WSL2 + Cisco AnyConnect)
Get-DnsClientServerAddress -AddressFamily IPv4 | Select-Object -ExpandProperty ServerAddresses Get-DnsClientGlobalSetting | Select-Object -ExpandProperty SuffixSearchList sudo unlink /etc/resolv.conf # this will unlink the default wsl2 resolv.conf # This config will prevent wsl2 from overwritting the resolve.conf file everytime # you start wsl2 cat <<EOF | sudo tee -a /etc/wsl.conf [network] generateResolvConf = false EOF cat <<EOF | sudo tee -a /etc/resolv.conf nameserver 10.50... # The company DNS/nameserver from the command in step 1 nameserver 10.50... # The company DNS/nameserver from the command in step 1 nameserver 10.50... # list all nameservers from step 1 nameserver 8.8.8.8 nameserver 8.8.4.4 search this.searchdomain.com # The search domain that we got from step 2 EOF # Make the new /etc/resolve.conf immutable sudo chattr +i /etc/resolv.conf Get-NetAdapter | Where-Object {$_.InterfaceDescription -Match "Cisco AnyConnect"} | Set-NetIPInterface -InterfaceMetric 6000Esto debe hacerse cada vez que se conecta VPN. Vea aquí https://gist.github.com/machuu/7663aa653828d81efbc2aaad6e3b1431 cómo automatizar esta tarea.
Restart-Service LxssManagerTomado aquí: https://jamespotz.github.io/blog/how-to-fix-wsl2-and-cisco-vpn