Warum kann ich auf meine WSL2 Ubuntu virtuelle Maschine nur mit localhost zugreifen, aber nicht mit 127.0.0.1

Warum kann ich auf meine WSL2 Ubuntu virtuelle Maschine nur mit localhost zugreifen, aber nicht mit 127.0.0.1

Ich habe sehr wenig Erfahrung mit virtuellen Maschinen. Ich habe WSL2 und Ubuntu 20 erfolgreich installiert und anschließend einen LAMP-Stack installiert. Es funktioniert alles einwandfrei, aber wenn ich einen Browser auf meinem Windows-Rechner verwende, kann ich nur über locahost auf Apache auf dem virtualisierten Ubuntu zugreifen. 127.0.0.1 sagt, dass es nicht erreichbar ist. Ich habe alle meine Entwicklungsdomänen in Hosts auf 127.0.0.1 gerichtet, also funktioniert das natürlich auch nicht.

Die Apache-Ports-Konfiguration lautet

    Listen 80

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule> 

Virtuelle Hosts sind

<VirtualHost *:80>
or <VirtualHost *:443>

ABER aus den Protokollen geht hervor, dass die Anfragen an 127.0.0.1 Apache nicht einmal erreichen, was angesichts der Meldung „Nicht erreichbar“ im Browser Sinn macht.

Kann mir jemand sagen, wo ich suchen sollte?

Danke.

Antwort1

Danke für die Kommentare. Gegen Ende dieser gesamten WSL2-Ubuntu-Setup-Anleitung habe ich hier eine Lösung gefunden: https://dev.to/aitorsol/wsl2-windows-linux-subsystem-a-guide-to-install-a-local-web-server-ubuntu-20-04-apache-php8-y-mysql8-3bbk

Das in diesem Beitrag enthaltene Skript ist mit meinem System nicht ganz kompatibel, da ifconfig veraltet ist und die von mir verwendete Version in der ersten Zeile „IP-Adresse“ statt „ifconfig“ verwendet.Aus einer anderen Quelle weiß ich, dass eth0 auf Ihrem System möglicherweise nicht verwendet wird. Daher müssen Sie die erste Zeile möglicherweise entsprechend dem Adapter anpassen.

Bearbeiten Sie im Skript, welche Ports Sie an die virtuelle Maschine weiterleiten möchten.

:

$remoteport = bash.exe -c "ip addr list eth0 | grep 'inet '"
$found = $remoteport -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}';

if( $found ){
  $remoteport = $matches[0];
} else{


echo "The Script Exited, the ip address of WSL 2 cannot be found";
  exit;
}

#[Ports]

#All the ports you want to forward separated by coma
$ports=@(80,443,10000,3000,5000,8080);


#[Static ip]
#You can change the addr to your ip config to listen to a specific address
$addr='0.0.0.0';
$ports_a = $ports -join ",";


#Remove Firewall Exception Rules
iex "Remove-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' ";

#adding Exception Rules for inbound and outbound Rules
iex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Outbound -LocalPort $ports_a -Action Allow -Protocol TCP";
iex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Inbound -LocalPort $ports_a -Action Allow -Protocol TCP";

for( $i = 0; $i -lt $ports.length; $i++ ){
  $port = $ports[$i];
  iex "netsh interface portproxy delete v4tov4 listenport=$port listenaddress=$addr";
  iex "netsh interface portproxy add v4tov4 listenport=$port listenaddress=$addr connectport=$port connectaddress=$remoteport";
}

Sobald Sie dies ausgeführt haben, sollten Sie in der Lage sein, auf Apache auf der virtuellen Maschine zuzugreifen, indem Sie auf die LAN-IP Ihrer Windows-Maschine zugreifen. Offensichtlich funktioniert 127.0.0.1 auf der Maschine selbst.

Nachdem ich es getestet hatte, habe ich es so eingerichtet, dass es von .profile ausgeführt wird, sodass die Änderungen der Portweiterleitung beim Start der virtuellen Maschine erfolgen.

/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe "C:\Users\user\wsl-networking-startup-ip-change.ps1"

verwandte Informationen