Zugriff auf Netzwerkanwendungen mit WSL

Bei der Arbeit mit Netzwerk-Apps müssen Sie einige Aspekte berücksichtigen, unabhängig davon, ob Sie über eine Windows-App auf eine Linux-Netzwerk-App oder über eine Linux-App auf eine Windows-Netzwerk-App zugreifen. Möglicherweise müssen Sie die IP-Adresse des virtuellen Computers identifizieren, mit dem Sie arbeiten. Diese unterscheidet sich von der IP-Adresse Ihres lokalen physischen Computers.

Zugreifen auf Linux-Netzwerk-Apps aus Windows (localhost)

Wenn Sie in Ihrer Linux-Verteilung eine Netzwerk-App (z. B. eine App, die auf einer NodeJS- oder SQL Server-Instanz ausgeführt wird) entwickeln, können Sie auf diese über eine Windows-App (z. B. Ihren Microsoft Edge- oder Chrome-Internetbrowser) unter Verwendung von localhost zugreifen (genau wie Sie dies normalerweise tun würden).

Wenn Sie jedoch eine ältere Version von Windows ausführen (Build 18945 oder älter), müssen Sie die IP-Adresse der Linux-Host-VM abrufen (oder auf die neueste Windows-Version aktualisieren).

So ermitteln Sie die IP-Adresse des virtuellen Computers, der Ihre Linux-Verteilung unterstützt:

  • Führen Sie in ihrer WSL-Verteilung (z. B. Ubuntu) den folgenden Befehl aus: ip addr
  • Suchen und kopieren Sie die Adresse unter dem inet-Wert der eth0-Schnittstelle.
  • Wenn Sie das grep-Tool installiert haben, finden Sie es leichter, indem Sie die Ausgabe mit dem Befehl ip addr | grep eth0 filtern.
  • Stellen Sie mithilfe dieser IP-Adresse eine Verbindung mit Ihrem Linux-Server her.

Die Abbildung zeigt ein Beispiel dafür – hier wird mithilfe des Microsoft Edge-Browsers eine Verbindung mit einem Node.js-Server hergestellt.

Herstellen einer Verbindung mit dem NodeJS-Server über Microsoft Edge

Zugreifen auf Windows-Netzwerk-Apps aus Linux (Host-IP)

Wenn Sie von Ihrer Linux-Verteilung (d. h. Ubuntu) aus, auf eine Netzwerk-App zugreifen möchten, die unter Windows ausgeführt wird (z. B. eine App, die auf einer NodeJS- oder SQL Server-Instanz ausgeführt wird), müssen Sie die IP-Adresse des Hostcomputers verwenden. Obwohl dies kein gängiges Szenario ist, können Sie die folgenden Schritte ausführen, damit es funktioniert.

  1. Rufen Sie die IP-Adresse Ihres Hostcomputers ab, indem Sie den folgenden Befehl aus Ihrer Linux-Verteilung heraus ausführen: cat /etc/resolv.conf
  2. Kopieren Sie die IP-Adresse nach dem Begriff: nameserver.
  3. Stellen Sie mithilfe der kopierten IP-Adresse eine Verbindung zu jedem beliebigen Windows-Server her.

Die Abbildung zeigt ein Beispiel dafür – hier wird über curl eine Verbindung mit einem Node.js-Server hergestellt, der unter Windows ausgeführt wird.

Herstellen einer Verbindung mit dem NodeJS-Server in Windows über Curl

Verbinden über Remote-IP-Adressen

Wenn Sie Remote-IP-Adressen verwenden, um Verbindungen mit Ihren Anwendungen herzustellen, werden diese als Verbindungen aus dem LAN (Local Area Network) behandelt. Dies bedeutet, Sie müssen sicherstellen, dass Ihre Anwendung LAN-Verbindungen akzeptieren kann.

Sie müssen z. B. möglicherweise Ihre Anwendung an 0.0.0.0 statt an 127.0.0.1 binden. In dem Beispiel einer Python-App, die Flask verwendet, kann das mithilfe dieses Befehls erfolgen: app.run(host='0.0.0.0'). Beachten Sie bei diesen Änderungen die Sicherheit, da Verbindungen aus Ihrem LAN zugelassen werden.

Zugreifen auf eine WSL 2-Verteilung aus Ihrem LAN (Local Area Network)

Wenn Sie eine WSL 1-Verteilung verwenden und Ihr Computer so eingerichtet wurde, dass auf ihn über Ihr LAN zugegriffen wird, kann auf Anwendungen, die in WSL ausgeführt werden, in Ihrem LAN ebenfalls zugegriffen werden.

Dies ist nicht der Standardfall in WSL 2. WSL 2 verfügt über einen virtualisierten Ethernet-Adapter mit einer eigenen eindeutigen IP-Adresse. Um diesen Workflow zu aktivieren, müssen Sie aktuell die gleichen Schritte wie bei einem gewöhnlichen virtuellen Computer durchlaufen. (Wir untersuchen Möglichkeiten, dieses Verhalten zu verbessern.)

Hier ist ein PowerShell-Beispielbefehl zum Hinzufügen eines Portproxys, der Port 4000 auf dem Host überwacht und ihn mit Port 4000 mit der IP-Adresse 192.168.101.100 zum WSL 2-Computer verbindet.

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

IPv6-Zugriff

WSL 2-Verteilungen können aktuell keine reinen IPv6-Adressen erreichen. Wir arbeiten daran, diese Funktion hinzuzufügen.