IP fija en WSL2

 IP fija en WSL2 es uno de los mayores dolores de cabeza para los desarrolladores. Por suerte, hoy en día existen varias soluciones prácticas. Aquí te explico las mejores opciones, ordenadas de la más fácil a la más avanzada.


Opción 1: Modo Reflejado (Mirrored Mode) - La más fácil 🌟

Esta es la solución más moderna y sencilla. Hace que WSL2 use la misma IP que tu PC con Windows.

Pasos:

  1. Abre tu editor de texto favorito como administrador y crea (o edita) el archivo:

    text
    C:\Users\TU_USUARIO\.wslconfig
  2. Copia y pega este contenido:

    ini
    [wsl2]
    networkingMode=mirrored
    dnsTunneling=true
    firewall=true
    autoProxy=true
  3. Reinicia WSL (abre PowerShell y ejecuta):

    powershell
    wsl --shutdown
  4. Vuelve a abrir tu terminal WSL. ¡Ya está! Ahora la IP de tu WSL es la misma que la de tu PC con Windows.

Ventajas:

  • No necesitas scripts ni configuraciones complejas.

  • Funciona con cualquier versión moderna de Windows 11.

Requisitos: Windows 11 22H2 o superior.


Opción 2: Script Automático con PowerShell (el "doble IP") 🛠️

Este método es muy popular y consiste en añadir una IP fija adicional, sin eliminar la dinámica que ya tiene WSL2. Así tienes lo mejor de ambos mundos.

Paso 1: Crea el script

Crea un archivo llamado wsl2-static-ip.ps1 (puedes usar el Bloc de notas) y pega este contenido:

powershell
# Configura la IP fija que quieres (cámbiala si quieres)
$WSL_IP = "172.28.131.101"
$WIN_IP = "172.28.131.102"

# Elimina configuraciones IP existentes en el adaptador virtual
Get-NetAdapter -IncludeHidden 'vEthernet (WSL)' | Get-NetIPAddress | Remove-NetIPAddress -Confirm:$false

# Asigna la IP fija en Windows
New-NetIPAddress -IPAddress $WIN_IP -PrefixLength 24 -InterfaceAlias 'vEthernet (WSL)' -SkipAsSource $true

# Ejecuta comandos dentro de WSL para asignar la IP fija
wsl -d Ubuntu -u root ip addr add $WSL_IP/24 broadcast 172.28.131.255 dev eth0
wsl -d Ubuntu -u root ip link set eth0 up

Nota: Cambia Ubuntu por el nombre de tu distribución si es diferente.

Paso 2: Ejecuta el script automáticamente al iniciar Windows

  1. Guarda el script en una carpeta, por ejemplo: C:\Scripts\wsl2-static-ip.ps1

  2. Abre el Programador de tareas de Windows.

  3. Crea una nueva tarea:

    • Trigger: "Al iniciar sesión"

    • Acción: "Iniciar un programa"

    • Programa: powershell.exe

    • Argumentos: -ExecutionPolicy Bypass -File "C:\Scripts\wsl2-static-ip.ps1"

¿Cómo funciona?
Este sistema asigna dos IPs: una dinámica para salir a Internet y una fija (la que tú eliges) para que tú siempre sepas cómo acceder a WSL2.


Opción 3: Puente (Bridge) con Hyper-V - La más profesional 🏗️

Si necesitas que tu WSL2 sea accesible desde toda la red local como si fuera un equipo más, esta es la opción.

Pasos:

  1. Abre el Administrador de Hyper-V.

  2. Crea un conmutador virtual externo (External Virtual Switch) que use tu tarjeta de red.

  3. Crea o edita el archivo .wslconfig:

    ini
    [wsl2]
    networkingMode=bridged
    vmSwitch="NOMBRE_DEL_SWITCH"
    ipv6=true
  4. Reinicia WSL con wsl --shutdown.

Ahora, para que la IP no cambie: configura una IP fija en tu router para la MAC de WSL2 (asignación DHCP estática).


Comparativa rápida

MétodoDificultad¿IP fija?Acceso desde la red local
Modo reflejado⭐ Muy fácilUsa la IP de WindowsSí, con la IP de Windows
Script PowerShell⭐⭐ FácilSí, IP propia fijaNo directamente (solo desde Windows)
Puente (Bridge)⭐⭐⭐ MediaSí (con DHCP del router)Sí, como un equipo más

Recomendación final

Si tienes Windows 11: ve directo a la Opción 1 (Modo reflejado). Es la más simple y funciona de maravilla.

Si usas Windows 10: la Opción 2 (Script PowerShell) es tu mejor aliada. Es la solución más probada y recomendada por la comunidad.

Si necesitas acceso desde otros dispositivos de la red: combina el Modo reflejado con abrir puertos en el firewall, o ve por la Opción 3 (Puente).

¡Elige la que mejor se adapte a tu flujo de trabajo y olvídate del problema de la IP cambiante.


**************************

WSL está diseñado para que compartir archivos entre Windows y Linux sea muy sencillo. La integración es tan directa que puedes ver y manipular los archivos de un sistema directamente desde el otro.

Aquí te explico cómo hacerlo en ambos sentidos.

📂 Desde WSL (Linux) hacia Windows

Desde tu terminal de WSL, puedes acceder a todas las unidades de Windows porque se montan automáticamente en la carpeta /mnt/.

  • Ver el contenido de tu disco C: Para listar los archivos de tu unidad C, usa el comando ls:

    bash
    ls /mnt/c/
  • Navegar a una carpeta específica: Para moverte a, por ejemplo, tu carpeta de "Documentos", usa cd:

    bash
    cd /mnt/c/Users/TuUsuarioWindows/Documentos

    Recuerda reemplazar TuUsuarioWindows con el nombre de tu usuario en Windows.

  • Copiar un archivo de Windows a WSL: Una vez ubicado en la carpeta de Windows que te interesa, puedes usar el comando cp para copiar un archivo a tu entorno de WSL. Por ejemplo, para copiar mi_archivo.txt a tu carpeta de inicio en WSL:

    bash
    cp mi_archivo.txt /home/tu_usuario_wsl/

    (Reemplaza tu_usuario_wsl con tu nombre de usuario en WSL).

🪟 Desde Windows hacia WSL (Linux)

Existen un par de métodos muy cómodos para hacer esto.

  • Usando el Explorador de Archivos de Windows (El más fácil): WSL expone sus archivos a través de una ruta de red especial.

    1. Abre el Explorador de Archivos en Windows.

    2. En la barra de direcciones, escribe \\wsl$ y presiona Enter.

    3. Verás una carpeta por cada distribución de Linux que tengas instalada (por ejemplo, Ubuntu). Haz doble clic para entrar.

    4. Dentro, podrás navegar por todo el sistema de archivos de WSL. Ahora, puedes copiar y pegar archivos desde cualquier otra carpeta de Windows directamente en esta ventana, como si fuera una carpeta más de tu PC.

  • Copiar texto entre sistemas (Clipboard): Puedes usar el portapapeles para transferir texto entre ambos sistemas.

    • En WSL, para copiar la salida de un comando al portapapeles de Windows, usa clip.exe. Por ejemplo:

      bash
      cat /etc/hosts | clip.exe
    • En Windows, para pegar ese texto en una terminal de WSL, solo usa el atajo de teclado habitual Ctrl + V (o clic derecho).

Comentarios

Entradas más populares de este blog

12. Hola Mundo en Docker.

11¿Qué es Docker? y ¿Por qué debo saberlo?

14. Publish and Detached modes