IP Adresse in WSL2 herausfinden
Zuerst wird die WSL2 IP-Adresse benötigt, damit man Windows mitteilen kann, an welche Adresse die Anfrage weiter geleitet werden muss. Der Befehl ist dabei von der Linux-Distribution abhängig.
Ubuntu
ifconfig
Debian
ip a
In meinem Fall war die IP-Adresse des WSL2 Linux 172.29.192.157, diese sollte in allen folgenden Kommandos angepasst werden.
PowerShell oder Eingabeaufforderung als Administrator ausführen
Für die folgenden Befehle ist es notwendig, die Windows PowerShell oder Eingabeaufforderung als Administrator zu starten (Rechtsklick: Als Administrator ausführen)
Wichtig ist nochmal, die IP-Adresse in den Befehlen anzupassen.
OpenSSH Server freigeben
Will man OpenSSH freigeben ist dies standardmäßig der Port 22, alternativ kann man auch einen anderen Port in der Config des SSH Servers einstellen.
Proxy Weiterleitung
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=22 connectaddress=172.29.192.157 connectport=22
Firewall Regel
netsh advfirewall firewall add rule name=”WSL2 Freigabe Port 22” dir=in action=allow protocol=TCP localport=22
WebServer freigeben
Will man Apache oder Nginx freigeben ist dies standardmäßig der Port 80.
Proxy Weiterleitung
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=80 connectaddress=172.29.192.157 connectport=80
Firewall Regel
netsh advfirewall firewall add rule name=”WSL2 Freigabe Port 80” dir=in action=allow protocol=TCP localport=80
Proxy Regeln überprüfen
Zum Anzeigen aller eingetragenen Proxy Regel kann folgender PowerShell Befehl verwendet werden
netsh interface portproxy show v4tov4
Firewall Regeln überprüfen
Windows Defender Firewall -> Erweiterte Einstellungen -> Eingehende Regeln
Proxy Regeln löschen
Will man eine Proxy-Regel mit einem spezifischen Port löschen, funktioniert dies mit dem folgenden PowerShell Befehl, vor der Benutzung sollte {port} durch den gewünschten zu löschenden Port ausgetauscht werden
netsh interface portproxy delete v4tov4 listenport={port} listenaddress=0.0.0.0
Firewall Regeln löschen
Windows Defender Firewall -> Erweiterte Einstellungen -> Eingehende Regeln
Freigabe funktioniert nach dem Reboot nicht mehr
Nach jedem Reboot bekommt das WSL2 Linux eine neue IP-Adresse, wodurch die alten Regeln nicht mehr funktionieren, um diese zu lösen, habe ich ein PowerShell Script geschrieben.
Das Script ruft die IP-Adresse einer WSL2 Ubuntu Distribution ab, löscht alle existierenden PortProxy Regeln und erstellt diese wieder mit der neuen WSL2 IP-Adresse
#### ------------ Neue WSL 2 IP-Adresse setzen ------------ ####
$wsl_ip = (ubuntu.exe -c "ifconfig eth0 | grep 'inet '").trim().split()| where {$_}
$regex = [regex] "\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b"
$ip_array = $regex.Matches($wsl_ip) | %{ $_.value }
$wsl_ip = $ip_array[0]
Write-Host "WSL Machine IP: ""$wsl_ip"""
#### ------------ Alle PortProxy Regeln löschen ------------ ####
netsh int portproxy reset all
#### ------------ SSH Regel - Port 22 ------------ ####
netsh interface portproxy add v4tov4 listenport=22 listenaddress=0.0.0.0 connectport=22 connectaddress=$wsl_ip
#### ------------ Webserver SSL Regel - Port 443 ------------ ####
netsh interface portproxy add v4tov4 listenport=443 listenaddress=0.0.0.0 connectport=443 connectaddress=$wsl_ip
#### ------------ Webserver SSL Regel - Port 80 ------------ ####
netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=$wsl_ip
If you press this button it will load Disqus-Comments. More on Disqus Privacy: Link