Cómo solucionar el bloqueo de descarga de WSL2 causado por el error de marca de tiempo TCP

Gestionar descargas grandes en WSL2 puede resultar bastante molesto. Todo funciona bien con archivos pequeños, pero al intentar descargar una imagen o un conjunto de datos de tamaño considerable, puede que se detenga justo al 40%.No aparecen errores, simplemente deja de actualizarse: la velocidad de transferencia cae a cero y se queda así, lo cual es exasperante. Es como si la red se rindiera sin previo aviso. Por suerte, existen varias soluciones que pueden ayudar. A veces basta con activar una opción, otras veces es necesario modificar algunos archivos de configuración o incluso cambiar la forma en que WSL2 interactúa con la red.¿La buena noticia? Estas soluciones han ayudado a mucha gente y, en general, se trata de evitar un error conocido en la forma en que WSL2 gestiona el tráfico TCP a través de la configuración NAT.

Cómo solucionar grandes interrupciones en las descargas en WSL2

Solución 1: Deshabilitar las marcas de tiempo TCP (prueba rápida): porque es rápido y fácil.

Esta es la forma más sencilla de comprobar si el problema está relacionado con el manejo de las marcas de tiempo TCP. Las marcas de tiempo TCP (según la RFC 7323) ayudan a medir los tiempos de ida y vuelta —lo cual suele ser útil—, pero en WSL2, al interferir con la NAT, pueden provocar que la conexión se bloquee durante transferencias largas. La solución es desactivarlas temporalmente. Si esto permite que la descarga se reanude, entonces, ¡bingo!, probablemente este sea el problema.

  • Abre tu terminal WSL2 y ejecuta este comando:
  • sudo sysctl -w net.ipv4.tcp_timestamps=0

Si la descarga se reanuda con normalidad, se confirma que las marcas de tiempo TCP son parte del problema. Si sigue fallando, entonces es momento de probar las demás soluciones. En algunas configuraciones, es posible que deba ejecutar este comando cada vez que inicie WSL2, a menos que lo configure de forma permanente; para eso sirve la Solución 2.

Solución 2: Hacer permanente la desactivación de la marca de tiempo TCP en wsl.conf

Este paso sirve para que el cambio se mantenga después de reiniciar el sistema. Dado que el comando de la Solución 1 se restablece cada vez que se reinicia WSL2, hay que indicarle que desactive las marcas de tiempo TCP en cada arranque editando el archivo wsl.conf.

  • En tu terminal WSL2, abre el archivo de configuración con nano:
  • sudo nano /etc/wsl.conf

Agregue estas líneas al archivo (si ya existe una sección [boot], simplemente agregue la línea de comandos debajo de ella):

[boot] command=sysctl -w net.ipv4.tcp_timestamps=0 systemd=true 

Guarda los cambios ( Ctrl + O, luego Enter, luego Ctrl + X ) y sal de nano.

A continuación, detenga completamente WSL2 desde PowerShell con:

wsl --shutdown

Luego, vuelve a abrir tu distribución. Ahora, cada vez que arranque WSL2, las marcas de tiempo TCP estarán desactivadas por defecto. Si tu distribución usa systemd, deja systemd=true ; de ​​lo contrario, puedes omitirlo o dejarlo como está. Esta solución suele ofrecer una solución a largo plazo, especialmente para grandes volúmenes de datos.

Solución 3: Deshabilitar la descarga de envíos grandes en el adaptador WSL.

Si desactivar las marcas de tiempo TCP no solucionó el problema, es posible que las funciones de descarga del adaptador de red estén empeorando las cosas. La función Large Send Offload (LSO) está diseñada para delegar la segmentación de paquetes al hardware, pero en redes virtuales, a veces causa problemas con las transferencias grandes, lo que provoca bloqueos o pérdida de paquetes.

  • Pulsa la tecla de Windows, escribe Panel de control y ábrelo.
  • Haz clic en Red e Internet.
  • Haga clic en Ver estado y tareas de la red.
  • A la izquierda, haga clic en Cambiar configuración del adaptador.
  • Localice el adaptador de red llamado vEthernet (WSL), haga clic con el botón derecho sobre él y seleccione Propiedades.
  • Haz clic en Configurar y luego ve a la pestaña Avanzado.
  • Desplácese por la lista y busque Large Send Offload Version 2 (IPv4). Establezca su valor en Deshabilitado.
  • Haga lo mismo para Large Send Offload Versión 2 (IPv6).
  • Haz clic en Aceptar y es posible que se reinicie brevemente tu conexión de red.

Una vez finalizado, intente realizar la descarga grande nuevamente. Este truco puede parecer extraño, pero deshabilitar las rutinas de descarga suele solucionar los problemas de transferencias bloqueadas en entornos Windows virtualizados.

Solución 4: Cambiar al modo de red en espejo: la ruptura limpia.

Quizás el error de NAT sea demasiado persistente. Al cambiar WSL2 al modo de red duplicada, comparte la red del host directamente, evitando así todo ese problema de NAT. Esto puede eliminar por completo el error de la marca de tiempo TCP, pero tiene otras implicaciones, como la necesidad de reconfigurar las reglas del firewall o el reenvío de puertos si se utilizan.

  • En el Explorador de archivos, escriba %UserProfile%en la barra de direcciones y pulse Intro.
  • Comprueba si existe un archivo llamado .wslconfig. Si no existe, crea un nuevo archivo de texto plano llamado .wslconfig (sin extensión).
  • Abre el archivo .wslconfig en el Bloc de notas y añade estas líneas:
[wsl2] networkingMode=mirrored 
  • Guarda el archivo. Luego, en PowerShell, ejecuta:
  • wsl --shutdown
  • Vuelve a abrir tu distribución WSL2. El modo espejo suele reducir los problemas en las transferencias grandes, ya que evitas el problemático NAT. Ten en cuenta que, si utilizas algún programa sensible con reglas de firewall estrictas, revísalas cuidadosamente después de este cambio.

    Solución 5: Actualizar WSL y reiniciar: a veces la solución de software

    Microsoft corrige errores de WSL2 con frecuencia, por lo que mantener todo actualizado puede solucionar problemas de conexión de red. Simplemente ejecute esto en PowerShell :

    wsl --update

    Después de eso, apague completamente WSL con:

    wsl --shutdown

    Luego reinicia tu distribución y comprueba si la velocidad de descarga mejora. A veces funciona y a veces no: otras veces las actualizaciones solucionan el problema de inmediato, pero otras veces solo queda esperar a que Microsoft publique una versión con todos los parches.

    Consejos preventivos y buenos hábitos

    • Mantén WSL actualizado regularmente con wsl --update. Constantemente se implementan microcorrecciones.
    • Si vas a realizar transferencias masivas, cambia al modo de red duplicada al inicio para evitar por completo la traducción de direcciones de red (NAT).
    • Guarda tus ajustes en los archivos wsl.conf y .wslconfig para asegurarte de que la configuración se mantenga después de reiniciar el sistema.
    • Tras las actualizaciones de Windows, prueba a realizar descargas grandes; si algo no funciona correctamente, espera un poco o vuelve a aplicar los ajustes.

    La gente también pregunta

    ¿Qué son exactamente las marcas de tiempo TCP y por qué están causando problemas repentinamente?

    Se trata de información del encabezado TCP (según la RFC 7323) que ayuda a medir el tiempo de respuesta de un paquete y a ordenar su flujo. Normalmente, resulta muy útil, pero en la configuración NAT de WSL2, estos valores pueden corromperse o interpretarse erróneamente. Deshabilitarlos es como desactivar una parte del protocolo TCP que causa problemas durante descargas largas y continuas.

    ¿Cambiar al modo espejo es mejor que usar NAT para WSL2?

    En la mayoría de los casos, sí. La replicación de redes permite que WSL2 comparta directamente la red real del host, evitando así la capa NAT, que suele presentar errores. Esto puede mejorar la fiabilidad de las transferencias de datos grandes, pero no es perfecto si se tienen reglas de firewall específicas o configuraciones de redireccionamiento de puertos.

    Ojalá alguna de estas soluciones logre que esa descarga tan grande termine.¡Mucha suerte! Crucemos los dedos para que esto ayude a alguien a evitar tener que esperar una eternidad a que se desbloquee la descarga.