Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Il existe quelques considérations à prendre en compte lors de l’utilisation d’applications réseau et WSL. Par défaut, WSL utilise une architecture basée sur NAT et nous vous recommandons d’essayer le nouveau mode réseau mis en miroir pour obtenir les dernières fonctionnalités et améliorations.
Identifier l’adresse IP
Il existe deux scénarios à prendre en compte lors de l’identification de l’adresse IP utilisée pour une distribution Linux exécutée via WSL :
Scénario 1 : Du point de vue de l’hôte Windows, vous souhaitez interroger l’adresse IP d’une distribution Linux exécutée via WSL2, afin qu’un programme sur l’hôte Windows puisse se connecter à un programme serveur s’exécutant à l’intérieur de la distribution (instance).
L’hôte Windows peut utiliser la commande suivante :
wsl -d <DistributionName> hostname -I
Si vous interrogez la distribution par défaut, cette partie de la commande désignant la distribution peut être omise : -d <DistributionName>
. Veillez à utiliser un indicateur majuscule -I
et non pas un minuscule -i
.
Sous le capot, la commande wsl.exe
hôte lance l’instance cible et exécute la commande hostname -I
Linux (notation courte pour --all-ip-addresses
). Cette commande imprime ensuite l’adresse IP de l’instance WSL sur STDOUT
. Le STDOUT
contenu du texte est ensuite relayé à wsl.exe. Enfin, wsl.exe affiche cette sortie sur la ligne de commande.
Une sortie classique peut être :
172.30.98.229
Scénario 2 : Un programme s’exécutant à l’intérieur d’une distribution Linux via WSL2 (instance) souhaite connaître l’adresse IP de l’hôte Windows, afin qu’un programme Linux puisse se connecter à un programme de serveur hôte Windows.
L’utilisateur Linux WSL2 peut utiliser la commande suivante :
ip route show | grep -i default | awk '{ print $3}'
Une sortie classique peut être :
172.30.96.1
172.30.96.1
Il s’agit donc de l’adresse IP de l’hôte pour Windows, dans cet exemple.
Remarque
Ces actions d’interrogation d’adresses IP ci-dessus sont généralement requises lorsque WSL2 est en cours d’exécution avec le mode réseau NAT par défaut.
Lorsque WSL2 est en cours d’exécution avec le nouveau mode mis en miroir, l’hôte Windows et la machine virtuelle WSL2 peuvent se connecter les uns aux autres à l’aide localhost
de (127.0.0.1) comme adresse de destination, de sorte que l’astuce d’utilisation de l’adresse IP d’un homologue de requête n’est pas nécessaire.
Mode réseau par défaut : NAT
Par défaut, WSL utilise une architecture nat (traduction d’adresses réseau) pour la mise en réseau. Gardez à l’esprit les considérations suivantes lors de l’utilisation d’une architecture réseau basée sur NAT :
Accès aux applications réseau Linux à partir de Windows (localhost)
Si vous créez une application réseau (par exemple, une application s’exécutant sur un nodeJS ou un serveur SQL) dans votre distribution Linux, vous pouvez y accéder à partir d’une application Windows (comme votre navigateur Internet Edge ou Chrome) à l’aide localhost
(comme vous le feriez normalement).
Accès aux applications réseau Windows à partir de Linux (adresse IP hôte)
Si vous souhaitez accéder à une application réseau s’exécutant sur Windows (par exemple, une application s’exécutant sur un nodeJS ou un serveur SQL) à partir de votre distribution Linux (à savoir Ubuntu), vous devez utiliser l’adresse IP de votre ordinateur hôte. Bien qu’il ne s’agisse pas d’un scénario courant, vous pouvez suivre ces étapes pour qu’elle fonctionne.
- Obtenez l’adresse IP de votre ordinateur hôte en exécutant cette commande à partir de votre distribution Linux :
ip route show | grep -i default | awk '{ print $3}'
- Connectez-vous à n’importe quel serveur Windows à l’aide de l’adresse IP copiée.
L’image ci-dessous montre un exemple de ceci en vous connectant à un serveur Node.js s’exécutant dans Windows via curl.
Connexion via des adresses IP distantes
Lorsque vous utilisez des adresses IP distantes pour vous connecter à vos applications, elles 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
la place de 127.0.0.1
. Dans l’exemple d’une application Python à l’aide de Flask, cette opération peut être effectuée avec la commande : app.run(host='0.0.0.0')
. Gardez à l’esprit la sécurité lors de ces modifications, car cela autorise les 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 a été configuré pour être accessible par votre réseau local, les applications exécutées 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 normale. (Nous examinons des façons d’améliorer cette expérience.)
Voici un exemple d’utilisation de la commande Netsh interface portproxy Windows pour ajouter un proxy de port qui écoute sur votre port hôte et connecte ce proxy de port à l’adresse IP de la machine virtuelle WSL 2.
netsh interface portproxy add v4tov4 listenport=<yourPortToForward> listenaddress=0.0.0.0 connectport=<yourPortToConnectToInWSL> connectaddress=(wsl hostname -I)
Dans cet exemple, vous devez effectuer une mise à jour <yourPortToForward>
vers un numéro de port, par exemple listenport=4000
.
listenaddress=0.0.0.0
signifie que les demandes entrantes sont acceptées à partir d’une adresse IP QUELCONQUE. L’adresse d’écoute spécifie l’adresse IPv4 pour laquelle écouter et peut être modifiée en valeurs qui incluent : adresse IP, nom NetBIOS de l’ordinateur ou nom DNS de l’ordinateur. Si aucune adresse n’est spécifiée, la valeur par défaut est l’ordinateur local. Vous devez mettre à jour la <yourPortToConnectToInWSL>
valeur sur un numéro de port dans lequel vous souhaitez que WSL se connecte, par exemple connectport=4000
. Enfin, la connectaddress
valeur doit être l’adresse IP de votre distribution Linux installée via WSL 2 (l’adresse de machine virtuelle WSL 2), qui se trouve en entrant la commande : wsl.exe hostname -I
.
Par conséquent, cette commande peut ressembler à ceci :
netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=192.168.101.100
Pour obtenir l’adresse IP, utilisez :
-
wsl hostname -I
pour l’adresse IP de votre distribution Linux installée via WSL 2 (adresse de machine virtuelle WSL 2) -
cat /etc/resolv.conf
pour l’adresse IP de l’ordinateur Windows comme indiqué à partir de WSL 2 (machine virtuelle WSL 2)
En utilisant listenaddress=0.0.0.0
, l’écoute sera effectuée sur tous les ports IPv4.
Remarque
L’utilisation d’une minuscule « i » avec la commande nom d’hôte génère un résultat différent de celui d’un majuscule « I ».
wsl hostname -i
est votre machine locale (127.0.1.1 est une adresse de diagnostic fictive), tandis que wsl hostname -I
retourne l'adresse IP de votre machine locale telle qu'elle est vue par d'autres machines et doit être utilisée pour identifier la distribution Linux exécutée via WSL 2.
Accès IPv6
-
wsl hostname -i
pour l’adresse IP de votre distribution Linux installée via WSL 2 (adresse de machine virtuelle WSL 2) -
ip route show | grep -i default | awk '{ print $3}'
pour l’adresse IP de l’ordinateur Windows comme indiqué à partir de WSL 2 (machine virtuelle WSL 2)
En utilisant listenaddress=0.0.0.0
, l’écoute sera effectuée sur tous les ports IPv4.
Mise en réseau en mode mise en miroir
Sur les machines exécutant Windows 11 22H2 et versions ultérieures, vous pouvez définir networkingMode=mirrored
dans le fichier [wsl2]
sous .wslconfig
pour activer la mise en réseau en mode miroir. En activant cette option, WSL adopte une nouvelle architecture réseau qui vise à reproduire les interfaces réseau de Windows au sein de Linux, afin d'ajouter de nouvelles fonctionnalités réseau et d'améliorer la compatibilité.
Voici les avantages actuels pour activer ce mode :
- Prise en charge d’IPv6
- Connectez-vous aux serveurs Windows à partir de Linux à l’aide de l’adresse
127.0.0.1
localhost. L’adresse localhost IPv6::1
n’est pas prise en charge - Compatibilité réseau améliorée pour les VPN
- Prise en charge de la multidiffusion
- Se connecter à WSL directement à partir de votre réseau local (LAN)
Remarque
Exécutez la commande suivante dans la fenêtre PowerShell avec des privilèges d’administrateur pour configurer Hyper-V paramètres de pare-feu pour autoriser les connexions entrantes : Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allow
ou New-NetFirewallHyperVRule -Name "MyWebServer" -DisplayName "My Web Server" -Direction Inbound -VMCreatorId '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -Protocol TCP -LocalPorts 80
.
Ce nouveau mode résout les problèmes réseau rencontrés avec l’utilisation d’une architecture nat (traduction d’adresses réseau). Recherchez des problèmes connus ou des commentaires sur les bogues identifiés dans le dépôt de produit WSL sur GitHub.
DNS Tunneling
Sur les machines exécutant Windows 11 22H2 et versions ultérieures, en définissant dnsTunneling=true
sous [wsl2]
dans le fichier .wslconfig
, WSL utilise une fonctionnalité de virtualisation pour répondre aux demandes DNS à partir de WSL, au lieu de les solliciter via un paquet réseau. Cette fonctionnalité vise à améliorer la compatibilité avec les VPN et d’autres mises en réseau complexes.
Proxy automatique
Sur les machines exécutant Windows 11 22H2 et versions ultérieures, autoProxy=true
sous [wsl2]
dans le fichier .wslconfig
force WSL à utiliser les informations de proxy HTTP de Windows. Si vous avez déjà configuré un proxy dans Windows, l’activation de cette fonctionnalité rend ce proxy automatiquement défini dans WSL.
WSL et pare-feu
Sur les ordinateurs exécutant Windows 11 22H2 et versions ultérieures, avec WSL 2.0.9 et versions ultérieures, la fonctionnalité de pare-feu Hyper-V sera activée par défaut. Cela garantit que :
- Consultez le Pare-feu Windows Defender avec Advanced Security pour en savoir plus sur les fonctionnalités de sécurité Windows qui s’appliquent automatiquement à WSL.
- Consultez Configurer Hyper-V pare-feu pour en savoir plus sur l’application de ces règles et paramètres localement et via des outils en ligne comme Intune.
Windows Subsystem for Linux