Verwenden von Dev Proxy mit WSL

Auf einen Blick
Ziel: Verwenden von Dev Proxy mit Windows-Subsystem für Linux (WSL)
Zeit: 15 Minuten
Voraussetzungen:Dev-Proxy einrichten, WSL installiert

Beim Entwickeln von Anwendungen in WSL (Windows-Subsystem für Linux) haben Sie zwei Optionen für die Verwendung von Dev Proxy: Ausführen auf Ihrem Windows-Host oder in WSL. Beide Ansätze haben je nach Entwicklungsworkflow ihre Vorteile.

Der einfachste Ansatz besteht darin, Dev Proxy unter Windows zu installieren und auszuführen. Mit dem Autoproxy- und gespiegelten Netzwerkmodus von WSL verwendet WSL den Windows-Systemproxy, sodass der Datenverkehr von Anwendungen, die in WSL ausgeführt werden, von Dev Proxy abgefangen wird, ohne dass der Proxy in WSL konfiguriert wird.

WSL-Netzwerk konfigurieren

Dev Proxy registriert sich selbst als Windows Systemproxy auf einer localhost-Adresse (127.0.0.1:8000 standardmäßig). Damit Anwendungen in WSL diesen Proxy verwenden können, aktivieren Sie die folgenden Einstellungen im Abschnitt [wsl2] der WSL-Konfigurationsdatei unter %UserProfile%\.wslconfig unter Windows:

[wsl2]
networkingMode=mirrored
autoProxy=true
Setting Description
networkingMode=mirrored Spiegelt die Windows-Netzwerkschnittstellen in Linux, sodass Anwendungen in WSL mithilfe von 127.0.0.1 eine Verbindung mit Servern herstellen können, die unter Windows ausgeführt werden, z. B. Dev Proxy. Erfordert Windows 11 Version 22H2 oder höher. Der Standardwert ist nat.
autoProxy=true Bewirkt, dass WSL die Windows-HTTP-Proxyeinstellungen verwendet, sodass der für Windows konfigurierte Proxy automatisch in WSL festgelegt wird. Verfügbar auf Windows 11. Standardmäßig aktiviert.

Nachdem Sie die .wslconfig Datei geändert haben, starten Sie WSL neu, damit die Änderungen wirksam werden:

wsl --shutdown

Hinweis

Im standardmäßigen NAT-Netzwerkmodus können Anwendungen in WSL unter Verwendung von 127.0.0.1 keine Verbindung mit Dev Proxy unter Windows herstellen. Wenn Sie den gespiegelten Netzwerkmodus nicht verwenden können, führen Sie stattdessen Dev Proxy in WSL aus. Weitere Informationen finden Sie unter Option 2: Dev Proxy in WSL.

Weitere Informationen finden Sie unter Zugriff auf Netzwerkanwendungen mit WSL und Erweiterte Einstellungen in WSL konfigurieren.

Einrichten von Dev Proxy unter Windows

  1. Installieren Sie Dev Proxy unter Windows mithilfe von Winget oder manueller Installation.

  2. Dev-Proxy starten:

    devproxy
    
  3. Vertrauen Sie dem Zertifikat, wenn Sie dazu aufgefordert werden.

Verwenden des Dev-Proxys von WSL

Wenn Dev Proxy als Systemproxy auf Windows (Standardverhalten) ausgeführt wird und Sie WSL-Netzwerkeinstellungen konfiguriert haben, leiten Anwendungen in WSL ihren Datenverkehr automatisch durch ihn.

Starten Sie Ihre Anwendung wie gewohnt in WSL. Dev Proxy fängt HTTPS-Anforderungen von Anwendungen ab, die die Proxyeinstellungen respektieren.

Von Bedeutung

Starten Sie WSL nach dem Starten oder Beenden des Dev-Proxys neu.

WSL liest beim Start die Windows-Proxyeinstellungen. Wenn Sie dev Proxy starten, nachdem WSL bereits ausgeführt wurde, oder wenn Sie den Dev Proxy beenden und neu starten, müssen Sie WSL neu starten, damit die Änderungen wirksam werden:

wsl --shutdown

Starten Sie dann eine neue WSL-Sitzung.

Vertraue dem Zertifikat in WSL

Damit Dev Proxy HTTPS-Datenverkehr abfangen kann, müssen Anwendungen in WSL dem Dev-Proxyzertifikat vertrauen. Sie können das Zertifikat entweder aus Windows kopieren oder mithilfe der Dev Proxy-API exportieren.

Option A: Kopieren des Zertifikats aus Windows

  1. Kopieren Sie in WSL das Zertifikat von Windows:

    cp "/mnt/c/Users/<your-username>/AppData/Local/Programs/Dev Proxy/rootCert.pfx" ~/
    
  2. Exportieren und Installieren des Zertifikats:

    # Export the certificate
    openssl pkcs12 -in ~/rootCert.pfx -clcerts -nokeys -out dev-proxy-ca.crt -passin pass:""
    # Install the certificate
    sudo cp dev-proxy-ca.crt /usr/local/share/ca-certificates/
    # Update certificates
    sudo update-ca-certificates
    

Option B: Verwenden der Dev-Proxy-API

Für die Dev Proxy-API ist ein Bearertoken erforderlich. Während Dev Proxy auf Windows ausgeführt wird, rufen Sie das Token ab, indem Sie den Befehl api token in einem Windows-Terminal ausführen:

devproxy api token

Laden Sie dann in WSL das Zertifikat herunter, und installieren Sie es. Ersetzen Sie <token> durch das token, das Sie abgerufen haben:

# Download the certificate from Dev Proxy API
curl -H "Authorization: Bearer <token>" -o dev-proxy-ca.crt "http://127.0.0.1:8897/proxy/rootCertificate?format=crt"
# Install the certificate
sudo cp dev-proxy-ca.crt /usr/local/share/ca-certificates/
# Update certificates
sudo update-ca-certificates

Hinweis

Für einige Anwendungen ist möglicherweise eine zusätzliche Konfiguration erforderlich, um dem Systemzertifikatspeicher zu vertrauen. Für Node.js Anwendungen müssen Sie möglicherweise für Entwicklungszwecke festlegen NODE_TLS_REJECT_UNAUTHORIZED=0 . Das Deaktivieren der Zertifikatüberprüfung wird für Produktionscode nicht empfohlen.

Option 2: Entwicklungs-Proxy im WSL

Wenn Sie Dev Proxy vollständig in WSL ausführen möchten, installieren Sie ihn mit der Linux-Installationsmethode, und konfigurieren Sie den Proxy manuell.

Installieren von Dev Proxy in WSL

Das Setupskript benötigt unzip, um Dev Proxy zu extrahieren. Neue WSL-Distributionen, wie Ubuntu, enthalten es nicht standardmäßig. Installieren Sie unzip:

sudo apt update
sudo apt install unzip

Installieren Sie Dev Proxy mithilfe des Setupskripts:

bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)"

Manuelles Konfigurieren des Proxys

Da WSL nicht über eine grafische Desktopumgebung verfügt, kann Dev Proxy nicht automatisch als Systemproxy registriert werden. Konfigurieren Sie Ihre Anwendungen so, dass der Proxy manuell verwendet wird.

  1. Erstellen Sie eine Konfigurationsdatei für Dev Proxy mit asSystemProxy auf false eingestellt.

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rc.schema.json",
      "asSystemProxy": false,
      "plugins": [
        {
          "name": "RetryAfterPlugin",
          "enabled": true,
          "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
        },
        {
          "name": "GenericRandomErrorPlugin",
          "enabled": true,
          "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
          "configSection": "genericRandomErrorPlugin"
        }
      ],
      "urlsToWatch": [
        "https://jsonplaceholder.typicode.com/*"
      ],
      "genericRandomErrorPlugin": {
        "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/genericrandomerrorplugin.schema.json",
        "errorsFile": "devproxy-errors.json",
        "rate": 50
      },
      "logLevel": "information"
    }
    
  2. Dev-Proxy starten:

    devproxy
    
  3. Vertrauen Sie dem Zertifikat:

    # Export Dev Proxy root certificate
    openssl pkcs12 -in ~/.config/dev-proxy/rootCert.pfx -clcerts -nokeys -out dev-proxy-ca.crt -passin pass:""
    # Install the certificate
    sudo cp dev-proxy-ca.crt /usr/local/share/ca-certificates/
    # Update certificates
    sudo update-ca-certificates
    
  4. Konfigurieren Sie Ihre Anwendung für die Verwendung des Proxys. Festlegen der HTTPS_PROXY Umgebungsvariable:

    export HTTPS_PROXY=http://127.0.0.1:8000
    

    Oder geben Sie sie beim Ausführen der Anwendung an:

    HTTPS_PROXY=http://127.0.0.1:8000 node app.js
    

Tipp

Weitere Informationen zum Konfigurieren des Proxys für Node.js Anwendungen finden Sie unter Verwenden von Dev Proxy mit Node.js Anwendungen.

Vergleich von Ansätzen

Merkmal Windows-Host (Option 1) Innerhalb WSL (Option 2)
Einrichtungskomplexität Simple Mäßig
Requirements Windows 11 22H2 oder höher, WSL-Netzwerkmodus mit Spiegelung None
Zertifikatverwaltung Einmalige Kopie von Windows Manueller Export
Proxykonfiguration Automatisch (WSL Auto Proxy) Manuell (HTTPS_PROXY)
WSL-Neustart erforderlich Ja, beim Umschalten des Proxys Nein
Funktioniert mit allen WSL-Apps Ja Hängt von der App-Proxyunterstützung ab

Für die meisten Szenarien ist die Ausführung von Dev Proxy unter Windows (Option 1) aufgrund ihrer Einfachheit und der automatischen Proxykonfiguration der empfohlene Ansatz.

Problembehandlung

Anforderungen werden nicht abgefangen, wenn man den Windows-Host verwendet.

Wenn der Dev Proxy unter Windows keine Anforderungen von WSL abfängt, befolgen Sie diese Schritte:

  1. Stellen Sie sicher, dass networkingMode=mirrored und autoProxy=true im [wsl2]-Abschnitt Ihrer .wslconfig-Datei festgelegt sind. Weitere Informationen finden Sie unter Konfigurieren des WSL-Netzwerks.

  2. Starten Sie WSL neu, um Proxyeinstellungen zu aktualisieren:

    wsl --shutdown
    
  3. Überprüfen Sie, ob Dev Proxy ausgeführt und als Systemproxy registriert ist.

  4. Überprüfen Sie, ob das Dev Proxy-Zertifikat in WSL vertrauenswürdig ist.

unzip: Befehl nicht gefunden

Wenn das Setupskript mit dem unzip: command not found Fehler fehlschlägt, installieren Sie unzip und führen Sie das Setupskript erneut aus:

sudo apt update
sudo apt install unzip

Zertifikatfehler

Wenn Zertifikatfehler angezeigt werden:

  1. Stellen Sie sicher, dass Sie das Zertifikat in WSL installiert haben, und führen Sie die Schritte unter "Vertrauen" des Zertifikats in WSL aus.
  2. Für Node.js Anwendungen müssen Sie die Anwendung möglicherweise so konfigurieren, dass der Proxy-Agent verwendet wird. Weitere Informationen finden Sie unter Verwenden des Dev-Proxys mit Node.js Anwendungen.

WSL-Netzwerkprobleme

WSL 2 verwendet einen virtualisierten Netzwerkadapter. Wenn Netzwerkprobleme auftreten:

  1. Stellen Sie sicher, dass Ihre Windows-Firewall Dev-Proxy zulässt.
  2. Verwenden Sie localhost anstelle von 127.0.0.1, wenn Sie die Proxyadresse konfigurieren.