DFS-N auf FQDN umstellen
Microsoft DFS (Distributed File System) wird gerne genutzt, um Freigaben von Daten im Netzwerk unabhängig vom dahinter liegenden Fileserver zu publizieren. Dabei ist es egal, ob sich im Hintergrund ein oder mehrere Windows Server, NetApp, EMC oder andere Maschinen verbergen, die Windows File Shares anbieten.
Historisch bedingt ist DFS allerdings so konfiguriert, dass es immer die NetBIOS Namen der Server veröffentlicht, auf denen die Freigaben gehostet werden. Im “normalen” kleinen Netzwerkumfeld wird diese Einstellung auch gar nicht auffallen, wenn wir allerdings von größeren Umgebungen oder Migrationsszenarien reden, kann man hier wunderbar in Probleme laufen. Hier spielen dann solche Konfigurationen, wie WINS Server, DNS Suffix Suchliste der Clients, Konfiguration von VPN Clients, uvm. eine Rolle. Viele davon kann man relativ leicht aus dem Weg räumen, wenn man DFS direkt so konfiguriert, dass es FQDN (Fully Qualified Domain Names) benutzt. Und wie das unter Windows geht, zeige ich jetzt …
Wir gehen einmal davon aus, wir haben einen bestehenden Namespace, der unter “normalen” Voraussetzungen installiert wurde und somit noch reine NetBIOS Verweise nutzt. Der sollte dann in etwa so aussehen:
Schaut man allerdings mal unter die Haube, kann man sehr leicht die NetBIOS Verweise des Namespace selbst, aber auch der Folder Targets sehen. Mit den folgenden Befehlen kann man die Konfiguration wunderbar auslesen:
Get-DfsnRoot | Get-DfsnRootTarget | fl Get-DfsnFolder \\demo.intra\MyNamespace\* | Get-DfsnFolderTarget | ft -AutoSize
Oder aber auch über dfsutil.exe:
dfsutil root \\demo.intra\MyNamespace
In meinem Beispiel sieht das dann so aus:
Nun kann man das Ganze sogar on-the-fly umstellen, das bedeutet also ohne Downtime – worauf wartet ihr also? Mit etwas Vorbereitung und wenigen Skripts ist das auch schnell gemacht. Grundsätzlich funktioniert der Vorgang in zwei Schritten:
- Ändern jedes DFS Namespace Servers
- Aktualisieren der Folder Targets
Ändern jedes DFS Namespace Servers
Wichtig: Solltet ihr nur einen Namespace Server haben, nehmt unbedingt (zumindest temporär) einen zweiten dazu, sonst geht euch Euer Namespace komplett verloren!
Die folgenden Änderungen müssen auf jedem Namespace Server vorgenommen werden:
- Entfernt den Namespace Server aus dem DFS Root
- Ändert die Konfiguration des DFS Dienstes
- Startet den DFS Dienst neu
- Fügt den Namespace Server dem DFS Root wieder hinzu
Das funktioniert unter Powershell mit den folgenden Befehlen:
Remove-DfsnRootTarget -TargetPath \\dc2012r2\MyNamespace -Confirm:$false Set-DfsnServerConfiguration -ComputerName dc2012r2 -UseFqdn $true Stop-Service dfs Start-Service dfs New-DfsnRootTarget -TargetPath \\dc2012r2.demo.intra\MyNamespace
Und mit dfsutil.exe so:
dfsutil.exe target Remove \\fs2012r2\MyNamespace Dfsutil.exe server registry dfsdnsconfig set fs2012r2 Net stop dfs Net start dfs Dfsutil target add \\fs2012r2.demo.intra\MyNamespace
Den Unterschied zwischen einem umgestellten und einem nicht umgestellten sieht man dann in der DFS Verwaltung.
Damit werden die Namespace Server schon mal über DNS aufgelöst, die Folder Targets (also die Fileserver dahinter) allerdings noch nicht.
Aktualisierung der Folder Targets
Für die Aktualisierung der Folder Targets muss die vorhandene Konfiguration exportiert und geändert werden. Danach wird die modifizierte Konfiguration wieder importiert. Das funktioniert nicht mit der Power Shell, sondern nur mit dfsutil.exe.
Den Export erstellt man mit folgendem Befehl:
dfsutil.exe root export \\demo.intra\MyNamespace c:\MyNamespace.xml
Damit erhält meine XML Datei, die etwa so aussehen könnte:
<?xml version="1.0"?> <Root xmlns = "http://schemas.microsoft.com/dfs/2007/03/dfsutil" majorVersion = "2" minorVersion = "0" Name="\\demo.intra\MyNamespace" State="OK" Timeout="300" SITECOSTING = "1" > <Target State="ONLINE" >\\dc2012r2.demo.intra\MyNamespace</Target> <Target State="ONLINE" >\\fs2012r2.demo.intra\MyNamespace</Target> <Link Name="Share1" State="OK" Timeout="1800" > <Target State="ONLINE" >\\DC2012R2\Share1</Target> </Link> <Link Name="Share2" State="OK" Timeout="1800" > <Target State="ONLINE" >\\DC2012R2\Share2</Target> </Link> </Root>
Diese Datei ändern wir nun. Dafür werden in den markierten Zeilen die Pfade zu den Folder Targets von NetBIOS auf DNS Namen umgestellt. Danach sollte es dann etwa so aussehen:
<?xml version="1.0"?> <Root xmlns = "http://schemas.microsoft.com/dfs/2007/03/dfsutil" majorVersion = "2" minorVersion = "0" Name="\\demo.intra\MyNamespace" State="OK" Timeout="300" SITECOSTING = "1" > <Target State="ONLINE" >\\dc2012r2.demo.intra\MyNamespace</Target> <Target State="ONLINE" >\\fs2012r2.demo.intra\MyNamespace</Target> <Link Name="Share1" State="OK" Timeout="1800" > <Target State="ONLINE" >\\DC2012R2.demo.intra\Share1</Target> </Link> <Link Name="Share2" State="OK" Timeout="1800" > <Target State="ONLINE" >\\DC2012R2.demo.intra\Share2</Target> </Link> </Root>
Die so geänderte Konfiguration importiert man wieder mit folgendem Befehl:
dfsutil.exe root import set C:\MyNamespace.xml \\demo.intra\MyNamespace
Und … tada! Alle Folder Targets sind auf DNS Namen umgestellt.
Wenn man nun weitere Namespace Server hinzufügt, muss man pro Server die DNS Konfiguration von oben einmalig vornehmen.
Wichtig: Wenn man über die grafische Oberfläche entweder Namespace Server oder Folder Targets hinzufügt, wird dort immer der NetBIOS Name eingetragen, selbst wenn die Einstellung auf DNS vorgenommen wurde!
Ihr müsst hier unbedingt darauf achten, den DNS Namen manuell einzutragen!
Nur so funktioniert das Ganze auch mit neuen Folder Targets.
All diese Informationen sind aus dem Knowledge Base Artikel 244380 (Link) entnommen und schon in vielen Projekten erfolgreich angewandt worden 😉 . Vielleicht stellt ja Microsoft irgendwann auch mal die GUI um … die Hoffnung stirbt zuletzt.
Na dann zeig mal her. Wir werden gleich unser DFS auf DNS umstellen.
Hat in der Ausführung super geklappt. Geräte die vorher keinen Zugriff hatten, können jetzt. Bleibt zu hoffen dass keine Probleme auftreten werden.
Danke Marc
Super Anleitung, in 2012 musste noch ein Schritt mehr als in 2008 durchgeführt werden, diesen habe ich nur hier gefunden. Thx
Hallo, kann man nach der Umstellung weiterhin die Kurzform eingeben oder muss der User dann immer den FQDN eintragen?
Hallo Christian,
ja, das sollte funktionieren. Windows hängt ja in der Regel sowieso das DNS Suffix an Hostnamen an, die nicht voll qualifiziert sind.
Gruß,
Marc
Hat das eigentlich jemand auch ausprobiert der solche Folder Targets mit DFS-R repliziert hat? Bleibt das intakt oder macht es ein resync .. geht gar nicht mehr?
Gruss Daniel
Ausprobiert habe ich das selbst noch nicht, da der Einsatz von DFS-R immer mit Vorsicht zu genießen ist. Wenn du die Replikation “von Hand” eingerichtet hast (also in der DFS-N Konfiguration ist keine Verbindung zur DFS-R Konfiguration zu sehen), dann wird da nichts passieren – du kannst ja auch Ordner replizieren, die nicht per DFS-N freigegeben sind. Wenn du den Assistenten die Replikation automatisch hast hinzufügen lassen (“Sie haben mehrere Target angegeben, soll eine Replikation konfiguriert werden?”), dann wäre ich etwas vorsichtiger. Da könnte es tatsächlich sein, dass die Konfiguration mit dem Entfernen eines Folder Targets geändert wird.
Vielleicht stellst du das mal in deiner Testumgebung nach – brauchst ja nicht viel dafür – und berichtest hier, was du herausgefunden hast? Also falls es nicht schon jemand mal gemacht hat …
Servus,
DFS-N und DFS-R sind standalone Rollen, da geht nichts kaputt wenn man auf der einen Seite etwas ändert. Auch wenn man eine Replikation manuell einrichtet, kann sie später noch via Powershell zu einem Namespace verlinkt werden. Das dient aber nur der leichteren Navigation in der Management Konsole, nichts weiter.
Hab’s getestet und es wirklich keine Zusammenhang. Sprich man kann die von dir beschriebenen Schritte ausführen und es gibt weder ein Unterbruch noch ein ReSync. Übrigens verwende ich DFSR viel und wenn mans richtig macht funktioniert das auch.
Noch was in die Runde: Ich bin auf diesen Artikel gestossen weil bei unserem Test-Setup und zwei Kunden es nicht möglich ist über Windows VPN-Verbindungen auf DFS-Shares zuzugreifen (normale Shares direkt auf einen Server funktionieren). Dacht das wäre die Lösung, lieder hat es auch nicht geholfen. Evt. hat jemand noch Ideen.
Schöner Beitrag, auch in 2020 mit Server 2019 noch Topaktuell.
Bin über den Artikel gestolpert weil VPN User keine Verbindung zum DFS Share herstellen konnten.
Ergebnis steht aus.
Hat mir auch im 2021 super geholfen, habe dies Gestern umgesetzt. Eines ist mir aber noch unklar. Bei der Microsoft und anderen Anleitungen wurde noch dies gemacht:
_______________________________________________________________________________________________________
Enable the DFSN FQDN root referral behavior. To do it, use one of the following methods:
Set-DfsnServerConfiguration -ComputerName ServerName -UseFqdn $true
oder
Dfsutil.exe server registry dfsdnsconfig set ServerName
_______________________________________________________________________________________________________
Dies ist in dieser Anleitung nicht erwähnt. Wird dies nicht wirklich benötigt?
Vielen Dank für deine Anleitung
Gruss
Jörg
Hallo Jörg,
vielen Dank für die Info. Natürlich ist das die Grundvoraussetzung, dass DFS überhaupt FQDN Referals nutzen kann. Ich habe mich in diesem Artikel auf die Umstellung fokussiert, aber du hast Recht. Das gehört zu den “Best Practise” bei der Einrichtung von DFS.