37 votes

comment accéder à Windows localhost depuis wsl2 ?

J'ai Windows 11 avec wsl2(ubuntu) installé dessus.

J'ai installé un serveur d'écoute gdb sur mon serveur local Windows et je veux y accéder depuis wsl2. Mais il semble que ma machine Windows et le vm wsl utilisent des adaptateurs réseau différents.

>ipconfig

Windows IP Configuration

Ethernet adapter vEthernet (Default Switch):

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::1114:bb:d0ad:93f8%18
   IPv4 Address. . . . . . . . . . . : 172.29.192.1
   Subnet Mask . . . . . . . . . . . : 255.255.240.0
   Default Gateway . . . . . . . . . :

Ethernet adapter vEthernet (WSL):

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::897:849a:5fed:1c6e%52
   IPv4 Address. . . . . . . . . . . : 172.21.128.1
   Subnet Mask . . . . . . . . . . . : 255.255.240.0
   Default Gateway . . . . . . . . . :

Mon serveur écoute activement sur le port 8888 et est accessible sous Windows mais pas sous Ubuntu.

J'ai ouvert le port 8888 à partir du pare-feu Windows et du pare-feu Ubuntu.

quelle est la solution ?

47voto

harrymc Points 394411

localhost ne fonctionne pas parce que WSL2 fonctionne avec un réseau virtuel (vNIC) créé par la plateforme Windows Virtual Machine (un sous-ensemble de Hyper-V). A l'intérieur de WSL2, localhost est l'adresse de la vNIC.

WSL2 configure un routeur virtuel sur l'hôte Windows pour permettre la connectivité. au monde extérieur ainsi qu'à l'hôte Windows. Vous pouvez voir cela via :

ip route

L'adresse "default via" est l'adresse à utiliser pour l'hôte Windows.

Vous pourriez l'analyser à partir de ce qui précède, ou à partir de /etc/resolv.conf mais WSL met également en place un mDNS de commodité, le .local à l'aide du programme Windows "qui est également utilisé comme nom d'ordinateur. hostname de l'instance WSL.

On y accède en concaténant $(hostname) con .local .

Essayez :

ping "$(hostname).local"

Ou, si ICMP est bloqué (semble-t-il sur les nouvelles installations de Windows 11), utilisez netcat. Il est disponible par défaut dans l'installation Ubuntu du WSL, mais peut avoir besoin d'être installé dans d'autres distributions comme openSUSE :

nc -zv "$(hostname).local" <portnumber>

Référence : Accéder à un hôte local fonctionnant sous Windows depuis WSL2 ?

4voto

Peregrino69 Points 2641

"Localhost" fait toujours référence au système lui-même. Lorsque vous exécutez un système d'exploitation hôte et un système d'exploitation virtualisé, vous exécutez deux systèmes, qui se désignent tous deux par "localhost". Vous ne pouvez donc jamais accéder au "localhost" d'un autre système, vous devez utiliser son IP externe.

Dans votre cas, si vous voulez accéder à partir du système Ubuntu à un service qui fonctionne sur votre hôte Windows et qui écoute sur le port 8888, vous devez accéder à 172.29.192.1:8888 . Seul le système qui offre réellement le service doit écouter le port et autoriser les nouvelles connexions entrantes par ce port.

Ubuntu étant un système distinct, rien n'y écoutera le port 8888, sauf si vous installez un service qui écoute ce port.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X