1. Instalación de un Servidor Web (Apache o Nginx)
1. Instalación de un Servidor Web (Apache o Nginx)
El proceso es el mismo que en cualquier servidor Linux. La opción más común es Apache o Nginx.
Pasos para instalar Apache:
# Actualizar la lista de paquetes
sudo apt update
# Instalar Apache
sudo apt install apache2 -y
# Iniciar el servicio
sudo service apache2 startPara Nginx en su lugar:
sudo apt update
sudo apt install nginx -y
sudo service nginx startVerificar que funciona:
Desde tu navegador en Windows, ve a http://localhost. Deberías ver la página de bienvenida de Apache o Nginx.🎉
Los archivos de tu sitio web se guardan en:
Apache:
/var/www/html/Nginx:
/var/www/html/(por defecto)
Para que los servicios se inicien automáticamente al arrancar WSL, puedes habilitar systemd (opcional, pero recomendado).
2. Acceso por SSH a tu WSL
Sí, puedes acceder a tu WSL por SSH desde otros equipos de la red o incluso desde Internet (con configuración adicional).
2.1. Instalar y Configurar SSH en WSL
# Instalar el servidor SSH
sudo apt install openssh-server -y
# Editar la configuración
sudo nano /etc/ssh/sshd_configAsegúrate de que estas líneas estén así (sin # al inicio):
Port 22
PasswordAuthentication yesReiniciar el servicio:
sudo service ssh restartProbar localmente:
ssh localhost2.2. Conectar desde Otros Equipos de la Red (el desafío de WSL2)
Aquí está el punto clave que mencionas. WSL2, a diferencia de WSL1, no comparte la IP de Windows. Funciona con una máquina virtual en modo NAT (Traducción de Direcciones de Red). Esto significa que tiene su propia IP privada, a la que no se puede acceder directamente desde la red local.
La solución: Redirigir (forward) puertos desde Windows hacia WSL2.
Opción A: El método clásico (port forwarding manual)
Obtén la IP de WSL (desde PowerShell como administrador):
wsl -- ip addr | grep eth0Crea una regla de port forwarding en Windows (PowerShell como administrador):
netsh interface portproxy add v4tov4 listenport=2222 listenaddress=0.0.0.0 connectport=22 connectaddress=172.xx.xx.xxUsamos el puerto 2222 para evitar conflictos con el SSH de Windows.
Abre el puerto en el Firewall de Windows (PowerShell como administrador):
New-NetFirewallRule -DisplayName "WSL SSH" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 2222Conéctate desde otro equipo:
ssh usuario_wsl@IP_DEL_PC_WINDOWS -p 2222(Usa la IP de tu PC Windows en la red local).
⚠️ Advertencia: La IP de WSL2 cambia cada vez que reinicias Windows. Tendrás que repetir el paso 2 con la nueva IP. Puedes automatizar esto con un script.
Opción B: El método recomendado: "Modo Reflejado" (Mirrored Mode) ⭐
A partir de Windows 11, WSL2 tiene un modo de red reflejado que hace que WSL use la misma IP que Windows.
Crea (o edita) el archivo
C:\Users\TU_USUARIO\.wslconfigy añade:[wsl2] networkingMode=mirrored dnsTunneling=true firewall=true autoProxy=trueReinicia WSL (en PowerShell):
wsl --shutdownVuelve a abrir WSL. ¡Ya no necesitas port forwarding! La IP de WSL es la misma que la de Windows.
Abre el puerto 22 en el Firewall de Windows (PowerShell como administrador):
New-NetFirewallRule -DisplayName "WSL SSH" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 22Conéctate directamente:
ssh usuario_wsl@IP_DEL_PC_WINDOWS
💡 Nota importante: WSL2 se apaga después de un tiempo de inactividad, lo que detiene sshd. Para mantenerlo activo, mantén abierta una sesión de WSL o usa herramientas como wsl --keep-distro (en Windows 11).
3. Configuración de Red: WSL2 vs Máquina Virtual
Tu intuición es correcta. La red de WSL2 funciona de manera muy similar a la de una máquina virtual.
En resumen: WSL2 es una VM, pero mucho más ligera e integrada con Windows. La configuración de red es el principal punto donde notarás la diferencia.
4. Contenedores (Docker) y SSH
Puedes ejecutar contenedores Docker dentro de WSL y acceder a ellos por SSH de varias maneras.
4.1. Ejecutar Docker en WSL2 (Recomendado)
La forma más limpia es instalar Docker Desktop con el backend de WSL2.
Descarga e instala Docker Desktop desde docker.com.
En la configuración de Docker Desktop, activa "Use WSL 2 based engine".
Elige tu distribución Ubuntu en "Resources" -> "WSL Integration".
Ahora puedes ejecutar contenedores directamente desde tu terminal WSL con docker run.
4.2. Acceder por SSH a un Contenedor
Hay dos enfoques principales:
Opción 1: Mapear puertos del contenedor a WSL
Al ejecutar un contenedor, mapea su puerto SSH (ej. 22) a un puerto en WSL (ej. 2223).
docker run -d -p 2223:22 --name mi_servidor_ssh ubuntu:22.04Luego, desde WSL o desde la red (si configuraste el port forwarding), puedes conectarte a localhost:2223.
Opción 2: Ejecutar SSH dentro del contenedor
Dentro del contenedor, instala y configura el servidor SSH. Luego, mapea el puerto 22 del contenedor a un puerto en el host (WSL). El proceso es similar al que hicimos para acceder a WSL desde la red, pero ahora el "host" es WSL y el "invitado" es el contenedor.
4.3. Acceder a WSL desde un Contenedor
Si un contenedor necesita conectarse a un servicio que corre en WSL (no dentro de otro contenedor), usa la IP de Windows desde la perspectiva de WSL:
ip route show | grep -i default | awk '{ print $3}'Esta IP (ej. 172.xx.xx.1) es la que el contenedor debe usar para acceder a servicios en el host WSL.
5. Resumen y Buenas Prácticas
Para desarrollo local: Apache/Nginx en WSL y accede desde Windows con
localhost. Sin complicaciones.Para acceso desde la red local (LAN): La opción más sencilla y moderna es habilitar el modo reflejado en
.wslconfig. Olvídate del port forwarding manual.Para acceso desde Internet (WAN): Necesitarás configurar el port forwarding en tu router para redirigir el tráfico del puerto externo (ej. 2222) a la IP de tu PC Windows (y luego al puerto de WSL). Esto ya es más avanzado y requiere conocimientos de redes.
Para contenedores: Usa Docker Desktop con integración WSL2. Mapea puertos para acceder a los servicios de los contenedores.
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:ls /mnt/c/Navegar a una carpeta específica: Para moverte a, por ejemplo, tu carpeta de "Documentos", usa
cd:cd /mnt/c/Users/TuUsuarioWindows/DocumentosRecuerda reemplazar
TuUsuarioWindowscon 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
cppara copiar un archivo a tu entorno de WSL. Por ejemplo, para copiarmi_archivo.txta tu carpeta de inicio en WSL:cp mi_archivo.txt /home/tu_usuario_wsl/(Reemplaza
tu_usuario_wslcon 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.
Abre el Explorador de Archivos en Windows.
En la barra de direcciones, escribe
\\wsl$y presiona Enter.Verás una carpeta por cada distribución de Linux que tengas instalada (por ejemplo,
Ubuntu). Haz doble clic para entrar.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.
Comentarios
Publicar un comentario