Accès aux applications réseau avec WSL

Vous devez tenir compte de certains éléments quand vous utilisez des applications réseau, que vous accédiez à une application réseau Linux à partir d’une application Windows ou à une application réseau Windows à partir d’une application Linux. Vous devrez peut-être identifier l’adresse IP de la machine virtuelle que vous utilisez, qui sera différente de l’adresse IP de votre ordinateur physique local.

Accès aux applications réseau Linux à partir de Windows (localhost)

Si vous créez une application réseau (par exemple, une application qui s’exécute sur un serveur SQL ou NodeJS) dans votre distribution Linux, vous pouvez y accéder à partir d’une application Windows (comme votre navigateur Internet Edge ou Chrome) à l’aide de localhost (comme vous le feriez normalement).

Accès aux applications réseau Windows à partir de Linux (adresse IP de l’hôte)

Si vous souhaitez accéder à une application réseau qui s’exécute sur Windows (par exemple, une application s’exécutant sur un serveur SQL ou NodeJS) à partir de votre distribution Linux (p. ex. Ubuntu), vous devez utiliser l’adresse IP de votre ordinateur hôte. Il ne s’agit pas d’un scénario courant, mais vous pouvez suivre ces étapes pour le faire fonctionner.

  1. Obtenez l’adresse IP de votre ordinateur hôte en exécutant cette commande à partir de votre distribution Linux : cat /etc/resolv.conf
  2. Copiez l’adresse IP qui suit le terme : nameserver.
  3. Connectez-vous à n’importe quel serveur Windows à l’aide de l’adresse IP copiée.

L’image ci-dessous présente un exemple de cela avec la connexion à un serveur Node.js en cours d’exécution dans Windows via curl.

Se connecter au serveur NodeJS dans Windows via Curl

Connexion via des adresses IP distantes

Lorsque vous utilisez des adresses IP distantes pour vous connecter à vos applications, celles-ci sont traitées comme des connexions à partir du réseau local (LAN). Cela signifie que vous devez vous assurer que votre application peut accepter les connexions LAN.

Par exemple, vous devrez peut-être lier votre application à 0.0.0.0 au lieu de 127.0.0.1. Dans l’exemple d’une application Python utilisant Flask, vous pouvez procéder à l’aide de la commande : app.run(host='0.0.0.0'). Gardez à l’esprit la sécurité lorsque vous apportez ces changements, car cela permettra d’établir des connexions à partir de votre réseau local.

Accès à une distribution WSL 2 à partir de votre réseau local (LAN)

Lorsque vous utilisez une distribution WSL 1, si votre ordinateur était configuré pour être accessible via votre réseau local, les applications qui s’exécutent dans WSL sont également accessibles sur votre réseau local.

Ce n’est pas le cas par défaut dans WSL 2. WSL 2 a une carte Ethernet virtualisée avec sa propre adresse IP unique. Actuellement, pour activer ce flux de travail, vous devez suivre les mêmes étapes que pour une machine virtuelle standard. (Nous recherchons des moyens d’améliorer cette expérience.)

Voici un exemple de commande PowerShell pour ajouter un proxy de port qui écoute sur le port 4000 sur l’hôte et le connecte au port 4000 à la machine virtuelle WSL 2 avec l’adresse IP 192.168.101.100.

netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=192.168.101.100

Accès IPv6

Les distributions WSL 2 ne peuvent actuellement pas atteindre les adresses IPv6 uniquement. Nous travaillons à l’ajout de cette fonctionnalité.