Da WSL2 a VirtualBox VM
In questo momento (aprile 2025) Microsoft permette di configurare WSL2 in modalità mirrored networking (e DNS Tunnelling):
[wsl2]
networkingMode=mirrored
dnsTunneling=true
Questo è utile per esporre un webserver eseguito all'interno della propria istanza WSL2 in localhost direttamente da un browser sulla macchina host. Ad esempio un semplice webserver python eseguito in questo modo dalla linea di comando:
python -m http.webserver
è accessibile da un browser sulla macchina host all'indirizzo http://localhost:8000/
.
Ma... Come fare nel caso si stia sviluppando un webserver all'interno della propria istanza WSL2 e si abbia bisogno di testare questo webserver all'interno di una macchina virtuale VirtualBox?
Una soluzione semplice è:
verificare l'esistenza di un Host-Only Ethernet Adapter presente in VirtualBox; questo avrà configurazione IP/netmask e server DHCP fatto così:
IPv4 Address 192.168.99.1 IPv4 Network Mask 255.255.255.0 Server Address 192.168.99.50 Server Mask 255.255.255.0 Lower Address Bound 192.168.99.99 Upper Address Bound 192.168.99.254 Installare il servizio Hyper-V, il relativo strumento a riga di comando e della GUI. Usando poi questa guida creiamo uno switch esterno basato sul dispositivo di rete Host-Only VirtualBox.
Ecco il risultato con ipconfig da una sessione powershell:
cmdAdattatore Ethernet vEthernet (hyperv-to-virtualkbox): Suffisso DNS specifico della connessione . : Indirizzo IPv6 Link-local . . . . : fe80::aa:bb:cc:aaf%28 Indirizzo IPv4. . . . . . . . . . . : 192.168.99.1 Maschera di sottorete . . . . . . . . . . . : 255.255.255.0 Gateway predefinito. . . . . . . . . . . :
Alla fine è possibile connettersi dall'istanza WSL2 alla VM VirtualBox in questo modo:
bashssh [email protected]
Dove 192.168.99.51
è l'ip della VM. Si veda anche questo articolo con cui fare port forwarding ssh.