Hyper-V/WSL2: falsche IP für Lokale Browsersession

WulfmanGER

Commander
Registriert
Juli 2005
Beiträge
2.225
Hallo zusammen,

ich nutze Windows 10 Pro und habe hier einen Apache installiert (Windows) und WSL2 (mit Ubuntu). Für WSL2 installiert/aktiviert Windows auch gleich Hyper-V

Durch Hyper-V bekomme ich nun 3 LAN-Adressen:

Auszug aus ipconfig /all (cmd.exe)
Code:
Ethernet-Adapter vEthernet (WSL):
Beschreibung. . . . . . . . . . . : Hyper-V Virtual Ethernet Adapter
IPv4-Adresse  . . . . . . . . . . : 172.31.64.1(Bevorzugt)
Subnetzmaske  . . . . . . . . . . : 255.255.240.0

Ethernet-Adapter vEthernet (Default Switch):
Beschreibung. . . . . . . . . . . : Hyper-V Virtual Ethernet Adapter #2
IPv4-Adresse  . . . . . . . . . . : 172.27.224.1(Bevorzugt)
Subnetzmaske  . . . . . . . . . . : 255.255.240.0

Ethernet-Adapter Ethernet:
Beschreibung. . . . . . . . . . . : Realtek PCIe GbE Family Controller
IPv4-Adresse  . . . . . . . . . . : 172.20.5.200(Bevorzugt)
Subnetzmaske  . . . . . . . . . . : 255.255.255.0

Unter WSL2/Ubuntu sieht ein ifconfig so aus:
Code:
inet 172.31.65.166  netmask 255.255.240.0
inet 127.0.0.1  netmask 255.0.0.0
(passt ja zum "Windows"-Ethernet-Adapter vEthernet (WSL) (gleiches Netz; Maske beachten).

Den "Default Switch" kann ich übrigens Deaktivieren - aktiviert sich nur leider nach Reboot und löst auch mein Problem nicht.

Bei der einzigen von mir gewählten Lokalen Adresse (172.20.5.200) liegen im DNS mehrere Hostnamen - wird für die Beschreibung noch wichtig. server.lan, zuhause.meinedomain.tld (u.a.) = 172.20.5.200; ja die "Internetdomain" wird LOKAL in eine Lokale IP übersetzt - das ist pure Absicht (keinerlei Einschränkung zur Nutzung wenn ich offline bin)

Das Problem bei diesen 3 IP-Adressen ist folgendes:
Wenn ich jetzt mit einem Webbrowser (egal ob Edge, Firefox; "wget") auf eine LOKALE Webseite zugreife: http://server.lan/ und dort ein Script hinterlegt ist was mir die IP-Adresse, DNS-Name und UserAgent anzeigt (mehr nicht), passiert folgendes:

IP: 172.31.64.1
Hostname: server.lan

oder
IP: 172.27.224.1
Hostname: server.mshome.net (!)

oder (so sollte es sein!)
IP: 172.20.5.200
Hostname: server.lan

Ansich ist das anzeigen/nutzen der falschen IP kein Problem .... aber ich habe Anwendungen die nur im Netz 172.20.5.0 funktionieren. Das klappt dann mit den falschen IPs nicht. Und im Logging / Troubleshooting ist es auch doof wenn ich die passende Client-IP bei dem Fehler nicht kenne: einfach alles anzeigen was mit 172.20.5.200 zu tun hat ist halt einfacher ;).

Ich hatte das ganze Problem vor einigen Monaten schon mal - da aber noch WSL1. Da hatte ich auch eine Lösung gefunden und das Problem war behoben. Die Lösung find ich leider nicht mehr - aber da WSL2 ja eh anders "integriert" ist als WSL1 glaub ich auch nicht das der alte Weg klappt. Seit ca. eine Woche ist das Problem wieder da

Was ich jetzt noch festgestellt habe - daher die Geschichte mit den Hostnamen:
Während http://server.lan/ mir eine falsche IP gibt, gibt mir https://zuhause.meinedomain.tld die richtige. Also Port 80 falsch, Port 443 richtig. Findet sich hier vielleicht ein Ansatz? Dem Apache ist es übrigens egal welche IP er hat: 0.0.0.0:80 und 0.0.0.0:443 sind konfiguriert. Aber ich hab hier ja auch eher ein Client-Problem.

Bin ich einmal mit der falsche IP unterwegs hilft nur noch reboot (dann klappt es paar Minuten und switched wieder) oder TEILWEISE auch ein restart des ETHERNET-Adapters via PowerShell ... kann aber auch zufall sein.

Ich kann natürlich die beiden Hyper-V-Interface killen - dann kille ich aber auch den Internetzugriff von WSL2 - den brauch ich aber ;)

Ein Problem beim Surfen im Internet hab ich nicht.

Ich hab hier leider nicht so Idee wie ich das lösen soll. Am Ende möchte ich halt IMMER bei Zugriff auf Lokale Ressourcen die 172.20.5.200 als Client-IP nutzen. Hatte schon versucht die Metrik der virtuellen Verbindungen ins extrem zu ändern (hoch, runter) - die Metrik-Einstellung wird völlig ignoriert.

Grüße
 
Zuletzt bearbeitet:
Sobald Hyper-V aktiviert ist, sollte an den Realtek Ethernet-Adapter eigentlich keine IP mehr gebunden sein. Nur an den Ethernet-Adapter vEthernet (Default Switch). Hast du da manuell etwas geändert?
 
Wie ist denn das Verhalten mit einem anderen Client ? Inkognito-Mode hast du auch getestet ?
 
Dann ist dein Routing kaputt.

Vom Host wird immer der eigentliche Netzwerk-Adapter verwendet.

WSL 1 läuft intern über nen Translator, der Linux System Calls in Windows Calls übersetzt. WSL 1 nutzt deine Hardware direkt, also auch die eigentliche Netzwerkverbindung.

Bei WSL 2 arbeitet das Linux in einer VM, weswegen Hyper-V einen eigenen Netzwerkadapter mit eigenem Subnetz erstellt. Du kannst ohne eigene Regeln auch nicht von extern auf deine Dienste innerhalb der VM zugreifen, da es ein internes Netzwerk ist - heißt auf deinem Host inkl. VMs routebar, aber nicht darüber hinaus.

Übrigens gibt es keine "falschen" IPs.

Dass unterschiedliche IPs zugreifen heißt für mich eher, dass du nicht weißt, welcher Client von wo wohin verbindet, dir das Routing vollständig unbekannt ist. Das solltest du erstmal in Erfahrung bringen.

Dein Firefox lokal auf dem PC nimmt hierbei allerdings nicht den Adapter der VM, denn das wird nicht geroutet. Der Firefox weiß nicht mal was von der VM. Außer deine Ziel-Adresse liegt natürlich in einer VM auf deinem PC, dann nimmt der Host die Route zum Adapter - logischerweise.
Evil E-Lex schrieb:
Sobald Hyper-V aktiviert ist, sollte an den Realtek Ethernet-Adapter eigentlich keine IP mehr gebunden sein.
Doch, sonst gäbe es gar keine Verbindung mehr.
 
Yuuri schrieb:
Doch, sonst gäbe es gar keine Verbindung mehr.
Wäre mir neu. Ich kenne es nur so, das beim physischen Adapter alle Bindungen bis auf die zum "Hyper-V Extensible Virtual Switch" entfernt werden. Sieht üblicherweise so aus (Screenshot ist nur ein Beispiel, hab grad kein System zu Hand, wo ich selbst den Screenshot machen könnte):
image0011321642645787.jpg


Nur der Virtual Ethernet Adapter (Default vSwitch) hat danach noch Bindungen zu IPv4 und IPv6.
 
Zurück
Oben