Skip to content

Twisted

Blacky Cat edited this page May 17, 2026 · 3 revisions

Frage: kann ich unter Windows einen Server immitieren? Also das ich mit \\SERVER1\Data und \\SERVER2\Backup gleichermaßen auf localhost (127.0.0.1) zugreife - nur mit unterschiedlichen Verzeichnissen?

Antwort: Ja, das geht unter Windows ziemlich gut. Du kannst mehrere „virtuelle Servernamen“ auf deinen lokalen Rechner zeigen lassen und für jeden Namen unterschiedliche Freigaben verwenden.

Die einfachste Lösung ist:

  1. HOSTS-Datei erweitern
  2. Freigaben anlegen
  3. Mit unterschiedlichen UNC-Pfaden arbeiten

1. HOSTS-Datei bearbeiten

Datei: C:\Windows\System32\drivers\etc\hosts als Administrator öffnen und ergänzen:

127.0.0.1    SERVER1
127.0.0.1    SERVER2

Optional IPv6:

::1          SERVER1
::1          SERVER2

Danach zeigen beide Namen auf deinen lokalen Rechner.


2. Unterschiedliche Freigaben anlegen

New-SmbShare `
  -Name "Data" `
  -Path "D:\Server1\Data"

New-SmbShare `
  -Name "Backup" `
  -Path "D:\Server2\Backup"

3. Zugriff Jetzt funktionieren:

\\SERVER1\Data
\\SERVER2\Backup

Inhalt von C:\windows\system32\drivers\etc\hosts:

# -------------------------------------------
# the Standard devices on local machiene
# -------------------------------------------
127.0.0.1 localhost
::1       localhost

# -------------------------------------------
# ipv6 Connection numbers
# -------------------------------------------
fd00::10  servera server1
fd00::20  serverb server2
fd00::30  serverc server3

fd00::12  client1.servera
fd00::14  client2.servera
fd00::16  client3.servera
fd00::18  client4.servera

fd00::22  client1.serverb
fd00::24  client2.serverb
fd00::26  client3.serverb
fd00::28  client4.serverb

fd00::32  client1.serverc
fd00::34  client2.serverc
fd00::36  client3.serverc
fd00::38  client4.serverc

# -------------------------------------------
# ipv4 Connection numbers
# -------------------------------------------
192.168.10.10 servera server1
192.168.10.20 serverb server2
192.168.10.30 serverc server3

192.168.10.12 client1.servera
192.168.10.14 client2.servera
192.168.10.16 client3.servera
192.168.10.18 client4.servera

192.168.10.22 client1.serverb
192.168.10.24 client2.serverb
192.168.10.26 client3.serverb
192.168.10.28 client4.serverb

192.168.10.32 client1.serverc
192.168.10.34 client2.serverc
192.168.10.36 client3.serverc
192.168.10.38 client4.serverc

ping server1  -> OK
dir \\server1\bob16 -> Pfad nicht gefunden
Das bedeutet:

Namensauflösung funktioniert
SMB-Serveralias aber nicht
Und das ist ein typisches Windows-Loopback-/Alias-Problem.

Du hast bereits:

192.168.10.10 servera server1
in der HOSTS-Datei.

Windows SMB akzeptiert aber lokale Aliasnamen nicht automatisch.

Der entscheidende Fix mit PowerShell als Administrator:

New-ItemProperty `
  -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" `
  -Name "DisableStrictNameChecking" `
  -PropertyType DWord `
  -Value 1 `
  -Force
Danach:

New-ItemProperty `
  -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0" `
  -Name "BackConnectionHostNames" `
  -PropertyType MultiString `
  -Value "server1","servera","server2","serverb","server3","serverc" `
  -Force

Restart-Service LanmanServer -Force

Danach testen
dir \\server1\bob16
dir \\server2\bob16
dir \\server3\bob16

Warum das passiert: Windows schützt sich gegen sogenannte Loopback SMB Reflection Attacks

Wenn dein Rechner: DESKTOP-XYZ heißt, akzeptiert SMB normalerweise nur: \\DESKTOP-XYZ\ nicht aber: \\server1\ auch wenn server1 auf dieselbe IP zeigt.

Freigaben anzeigen

Get-SmbShare

Freigabe löschen

Remove-SmbShare -Name "Data"

Gemappte Laufwerke

net use Z: \\SERVER1\Data /persistent:yes

Benutzer anzeigen und anlegen, falls nicht vorhanden

Get-LocalUser
New-LocalUser "bob32" -Password (Read-Host -AsSecureString)

Danach Rechte setzen

NTFS-Rechte:
------------
icacls D:\Freigaben\bob32 /grant "bob32:(OI)(CI)F"

Freigaberechte:
---------------
Grant-SmbShareAccess `
  -Name "bob32" `
  -AccountName "bob32" `
  -AccessRight Full `
  -Force

Freigabe prüfen:
----------------
Get-SmbShare
Get-SmbShareAccess -Name bob32

Test ohne Laufwerksbuchstaben

dir \\Server1\bob32
explorer \\Server1\bob32

Wenn du gar keine Anmeldung willst

Grant-SmbShareAccess `
  -Name "bob32" `
  -AccountName "Jeder" `
  -AccessRight Full `
  -Force

NTFS zusätzlich:
----------------
icacls D:\Freigaben\bob32 /grant "Jeder:(OI)(CI)F"

Dann brauchst du kein Passwort mehr.

Falls noch alte falsche Credentials gespeichert sind:

net use M: /delete
cmdkey /delete:Server1

Dann nochmal verbinden.

Alte SMB-Verbindungen komplett löschen

net use * /delete /y
cmdkey /list
cmdkey /delete:Server1
cmdkey /delete:TERMSRV/Server1

Du hast aktuell keinen sauber aufgelösten Benutzernamen in der Freigabe, sondern nur die SID:

Get-SmbShareAccess -Name "bob32"

Name ScopeName AccountName AccessControlType AccessRight
---- --------- ----------- ----------------- -----------
bob32 * *S-1-5-21-3950508431-2044188425-536832209-1021 Allow Full

Das passiert oft, wenn:

  • der Benutzer nachträglich erstellt wurde
  • der Benutzer umbenannt wurde
  • die Freigabe vorher existierte
  • Windows die SID nicht korrekt auflösen konnte

SMB akzeptiert dann häufig die Anmeldung nicht sauber.

Lösung:
Freigaberechte komplett entfernen und neu setzen.
-------
Revoke-SmbShareAccess `
  -Name "bob32" `
  -AccountName "*S-1-5-21-3950508431-2044188425-536832209-1021" `
  -Force
Remove-SmbShare -Name "bob32" -Force

New-SmbShare `
  -Name "bob32" `
  -Path "S:\Server1\bob32" `
  -FullAccess "bob32"

Get-SmbShareAccess -Name "bob32"

Ping-Test

PS C:\\> ping server1
Ping wird ausgeführt für servera [192.168.10.10] mit 32 Bytes Daten:
Antwort von 192.168.10.10: Bytes=32 Zeit<1ms TTL=128
Antwort von 192.168.10.10: Bytes=32 Zeit<1ms TTL=128
Antwort von 192.168.10.10: Bytes=32 Zeit<1ms TTL=128
Antwort von 192.168.10.10: Bytes=32 Zeit<1ms TTL=128

Ping-Statistik für 192.168.10.10:
  Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0 (0% Verlust),
  Ca. Zeitangaben in Millisek.:
  Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms

Clone this wiki locally