Comment accéder à une application hébergé dans une VM WSL?
Par défaut, WSL2 utilise un mode NAT pour son accès réseau et ne présente donc pas les VM sur le LAN, il n'est donc pas possible d'accéder depuis le LAN à une application hébergée sous WSL2.
on peut évidement modifier profondément sa configuration Hyper-V pour avoir un réseau wsl
en mode bridge, mais cela demande une configuration spécifique et qui n'est ni supportée ni facile.
il est possible d'avoir un mode miroir
sous Windows 11; mais ce n'est pas le sujet.
WSL signifie Windows Subsystem for Linux.
C'est un logiciel qui permet d'exécuter des applications Linux directement sur le système d'exploitation Windows, sans avoir besoin de devoir gérer la virtualisation ou un double-boot.
Voici quelques points clés à retenir sur WSL :
/mnt/
) et les services de Windows.WSL est particulièrement utile pour les développeurs qui ont besoin d'utiliser des outils et des environnements de développement Linux sans quitter leur système d'exploitation Windows.
Accès des applications réseau Linux depuis Windows (localhost)
Accès des applications réseau Windows depuis Linux (adresse IP hôte)
A cause de la technologie réseau utilisée (NAT); Il est impossible d'accéder à une application WSL depuis le LAN… sauf si…
Avant de commencer il convient d'identifier l'adresse IP de la distribution que l'on désire utiliser; il existe deux scénarios principaux :
À partir du point de vue de l'hôte Windows, obtenir l'adresse IP d'une distribution Linux WSL2 afin que le programme sur l'hôte puisse se connecter à un serveur dans la distribution.
PS C:\Users\Frater> wsl -d debian hostname -I 172.25.212.151
le paramètre -d
permet de choisir la distribution que l'on désire interroger.
le paramètre -I
(en majuscule) demande l'IP de la distribution.
À partir du point de vue d'une distribution Linux WSL2, obtenir l'adresse IP de l'hôte Windows.
frater@SUPREMAE:~$ ip a | grep eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1492 qdisc mq state UP group default qlen 1000 inet 172.25.212.151/20 brd 172.25.223.255 scope global eth0 8: veth0db27a5@if7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-9e2c87c63ebd state UP group default
Les connexions via des adresses IP distantes sont traitées comme étant du LAN.
Assurez-vous que votre application peut accepter les connexions LAN (par exemple, en liant à 0.0.0.0 au lieu de 127.0.0.1).
Les applications peuvent être accessibles sur le LAN si l'ordinateur est configuré pour cela.
Par défaut, les applications ne sont pas accessibles sur le LAN. Il faut utiliser des commandes comme netsh interface portproxy pour configurer un port proxy.
netsh interface portproxy add v4tov4 listenport=<port-to-listen> listenaddress=0.0.0.0 connectport=<port-to-forward> connectaddress=<forward-to-this-IP-address>
Pour permettre à des clients réseau d'acceder a un serveur nginx
hébergé sous WSL, dans un powershell “Admin”:
PS C:\Users\Frater> wsl -d debian hostname -I 172.25.212.151 PS C:\Users\Frater> netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=172.25.212.151 PS C:\Users\Frater> netsh interface portproxy add v4tov4 listenport=443 listenaddress=0.0.0.0 connectport=443 connectaddress=172.25.212.151
Il convient de se rappeler que par défaut Windows (ou son antivirus) dispose d'un Firewall qui va bloquer les accès depuis le LAN; et que par conséquent, il faudra adapter ses règles pour autoriser la connection distantes aux ports en question.