Das Symptom
Eine neue Linux-Distribution soll unter WSL 2 laufen, oder eine alte Installation soll
endlich von WSL 1 auf WSL 2 umziehen. Die Installation scheitert, die Umstellung mit
wsl –set-version bricht ab, und die Meldung lautet
There are no more endpoints available from the endpoint mapper. Das klingt nach
RPC-Problemen, nach kaputten Windows-Komponenten oder nach fehlender Virtualisierung.
Also wird im BIOS nachgesehen, WSL neu installiert, der Kernel aktualisiert und am Ende
vielleicht Windows repariert. Nichts davon hilft.
Ein paar Wochen vorher lief auf diesem Rechner eine Anleitung zum Entschlacken von Windows, ein Härtungsskript oder eine neue Gruppenrichtlinie der IT. Auf deren Liste stand auch der Dienst Internetverbindungsfreigabe, technischer Name SharedAccess. Wer teilt schon seine Internetverbindung mit anderen Rechnern? Also: deaktiviert. Dass zwischen diesem Häkchen und der Fehlermeldung bei WSL ein Zusammenhang bestehen könnte, kommt in der Fehlersuche niemandem in den Sinn.
Die „Layer 8“-Wahrheit
Der Zusammenhang steht schwarz auf weiß in Microsofts eigener Fehlerbehebungsseite zu WSL, in einem Abschnitt mit dem unmissverständlichen Titel „WSL 2 errors when ICS is disabled“. Dort heißt es: „Internet Connection Sharing (ICS) is a required component of WSL 2.“ Der Dienst ist also keine Beigabe für Leute, die ihr Notebook als Hotspot benutzen, sondern ein Baustein, den der Host Network Service braucht, um das virtuelle Netz für WSL 2 zu bauen. Über dieses Netz laufen laut Microsoft NAT, DNS, DHCP und die gemeinsame Nutzung der Verbindung des Rechners.
Die Folgen eines abgeschalteten Dienstes beschreibt Microsoft genauso präzise. Wer den ICS-Dienst SharedAccess deaktiviert oder ICS per Gruppenrichtlinie abschaltet, verhindert, dass das HNS-Netz für WSL überhaupt angelegt wird. Das führt zu Fehlern beim Anlegen eines neuen WSL-2-Abbilds und beim Umstellen eines Abbilds von Version 1 auf 2 zu genau der Meldung, die so gar nicht nach Netzwerk klingt: „There are no more endpoints available from the endpoint mapper.“
Der Denkfehler steckt im Namen. Internetverbindungsfreigabe klingt nach einer Komfortfunktion aus der Zeit, als sich drei Rechner ein Modem teilten, und landet deshalb regelmäßig auf Abschaltlisten. Technisch ist es aber die Grundlage, auf der das virtuelle Netz von WSL 2 mit NAT und DHCP aufsetzt. Wer einen Dienst nach seinem Anzeigenamen beurteilt, schaltet Dinge ab, die er nicht kennt.
Die Lösung ist entsprechend unspektakulär. Microsoft schreibt vor, dass Systeme mit WSL 2 den Dienst in seinem Auslieferungszustand lassen sollen, „Manual (Trigger Start)“, und dass jede Richtlinie, die ICS abschaltet, überschrieben oder entfernt werden soll. Automatisch muss der Dienst nicht starten. Manuell bedeutet laut der Dokumentation von Set-Service, dass ein Benutzer oder eine Anwendung ihn starten kann; erst Deaktiviert nimmt beiden diese Möglichkeit. Genau das braucht WSL: einen Dienst, der da ist, wenn er gebraucht wird.
Bleibt die Frage, was mit dem eigentlichen Ziel des Tuning-Skripts geschieht. Microsoft lässt eine Tür offen: Teile von ICS lassen sich nach einer eigenen Anleitung abschalten, ohne den Dienst stillzulegen. Wer also aus Sicherheitsgründen etwas einschränken muss, hat einen Weg, der WSL 2 nicht bricht. Der pauschale Haken bei Deaktiviert ist dieser Weg nicht.