Exposer services WSL2 sur Windows – Guide en deux étapes
Windows Subsystem for Linux (WSL2) offre une intégration transparente des environnements Linux dans Windows. Cependant, exposer des services WSL2 au niveau de la machine Windows hôte peut être un peu délicat. Ce guide vous montre comment configurer votre système pour accéder aux services WSL2 depuis Windows, en deux étapes clés.
1ère étape : Configuration IP de WSL2 et redirection de port sur Windows
Trouver l’adresse IP de votre machine virtuelle WSL2
- Sous votre machine virtuelle Linux WSL2, installez
net-tools
avec la commandesudo apt install net-tools
. - Exécutez
ifconfig
pour trouver l’adresse IP de WSL2. Par exemple :172.22.40.15
.
Configurer la redirection de port sous PowerShell en mode administrateur
- Ouvrez PowerShell en tant qu’administrateur sur votre machine Windows hôte.
- Utilisez la commande
netsh
pour rediriger le port. Par exemple :
netsh interface portproxy add v4tov4 listenport=5678 listenaddress=0.0.0.0 connectport=5678 connectaddress=172.22.40.15
connect* est relatif à la machine virtuelle WSL2
Cette commande configure Windows pour écouter sur le port 5678
et rediriger les requêtes vers le même port sur l’adresse IP de WSL2.
2ème étape – Configuration du pare-feu Windows pour le port 5678
Ouvrir le port 5678 dans le pare-feu Windows
Toujours dans PowerShell en mode administrateur, créez des règles pour autoriser le trafic entrant et sortant sur le port 5678
. Utilisez les commandes suivantes :
New-NetFireWallRule -DisplayName ‘WSL 2’ -Direction Outbound -LocalPort « 5678 » -Action Allow -Protocol TCP
New-NetFireWallRule -DisplayName ‘WSL 2’ -Direction Inbound -LocalPort « 5678 » -Action Allow -Protocol TCP
Gérer le problème de changement d’adresse IP à chaque redémarrage de WSL2
Le redémarrage de WSL2 attribue une nouvelle adresse IP à la machine virtuelle, ce qui peut perturber la configuration de redirection de port établie.
Solution : Automatiser la mise à jour de l’adresse IP
La création d’un script automatisé pour mettre à jour l’adresse IP dans les règles de portproxy peut résoudre ce problème. Ce script peut récupérer l’adresse IP de WSL2 et mettre à jour la règle netsh
en conséquence à chaque démarrage du système.
$remoteport = bash.exe -c « ip address | grep ‘inet .* scope global' »
$found = $remoteport -match ‘\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}’;
if( $found ){
$remoteport = $matches[0];
} else{
echo « The Script Exited, the ip address of WSL 2 cannot be found »;
exit;
}
#[Ports]
#All the ports you want to forward separated by coma
$ports=@(80,443,10000,3000,5000);
#[Static ip]
#You can change the addr to your ip config to listen to a specific address
$addr=’0.0.0.0′;
$ports_a = $ports -join « , »;
#Remove Firewall Exception Rules
iex « Remove-NetFireWallRule -DisplayName ‘WSL 2 Firewall Unlock’ « ;
#adding Exception Rules for inbound and outbound Rules
iex « New-NetFireWallRule -DisplayName ‘WSL 2 Firewall Unlock’ -Direction Outbound -LocalPort $ports_a -Action Allow -Protocol TCP »;
iex « New-NetFireWallRule -DisplayName ‘WSL 2 Firewall Unlock’ -Direction Inbound -LocalPort $ports_a -Action Allow -Protocol TCP »;
for( $i = 0; $i -lt $ports.length; $i++ ){
$port = $ports[$i];
iex « netsh interface portproxy delete v4tov4 listenport=$port listenaddress=$addr »;
iex « netsh interface portproxy add v4tov4 listenport=$port listenaddress=$addr connectport=$port connectaddress=$remoteport »;
}
Conclusion : Accès Simplifié aux Services WSL2 depuis Windows
Avec cette configuration en deux étapes, vous pouvez aisément accéder aux services WSL2 depuis votre machine Windows. Bien que le changement d’adresse IP nécessite une attention supplémentaire, un script automatisé peut faciliter grandement la gestion.
Liens externes pour référence :
- Pour plus d’informations sur WSL2, consultez la documentation officielle de Microsoft sur WSL2.
Vous voulez rester à jour avec nos dernières astuces et guides ? Abonnez-vous à notre newsletter dès maintenant. Recevez les directement dans votre boîte de réception.