WSUS Reporting auf dem Windows Server 2012R2

Für Windows Server 2012R2 gilt “Oldie but Goldie” und ich muss gestehen, dass ich davon noch einige in Betrieb habe. Die meisten davon als SBE (Windows Server mit der Small Business Essentials Rolle) und damit auch als WSUS tätig.

Hat man nun den WSUS am Laufen, will man bestimmt auch den einen oder anderen Report generieren. Dazu sind eine Reihe Schritte notwendig, die ich im Folgenden erläutern werde.

Ohne konfiguriertes Reporting erscheint die folgende Fehlermeldung (Klick mit der rechten Maustaste auf einen Computer / Status Report), die man durchaus als irreführend bezeichnen kann.

image

Versucht man den Link zu öffnen, erhält man ein freundliches “We’re sorry …”

image

Es geht aber letztendlich doch Smile

Voraussetzungen

Der WSUS muss laufen, dass ist klar und sinnvoller Weise mit der WID (Windows Internal Database) da inzwischen die SUSDB gerne mal die 10GB Grenze knackt und damit der SQL Server Express nicht mehr damit umgehen kann.

  • Installierter und funktionsfähiger WSUS mit WSUS Management MMC
  • SQL Server System CLR Type
  • Microsoft Report Viewer Runtime 2008

Darüber hinaus brauchen wir das .Net Framework 3.5, das entweder über den Servermanager oder PowerShell installiert werden kann.

image

# Anzeige ob das .Net Framework installiert ist oder nicht
Get-WindowsFeature -Name NET-Framework-Core
# Installation des .Net Framework
Install-WindowsFeature Net-Framework-Core -source \\network\share\sxs

Zusätzlich ist die SQL Server System CLR Type notwendig, die es unter dem folgenden Link zum Download gibt

http://go.microsoft.com/fwlink/?LinkID=239644&clcid=0x407

oder hier ausgewählt werden kann:

https://www.microsoft.com/en-us/download/details.aspx?id=56041

Wichtig ist, dass man die richtige SQLSysClrTypes.msi erwischt. Jene die bei mir funktioniert hat war die unten, mit einer Größe von ca. 2,4MB.

image

image

Nachdem Download wird die Runtime mit einem Doppelklick installiert. Jetzt fehlt nur noch die Microsoft Report Viewer Runtime 2008. Hier der Link, direkt bei Microsoft:

https://www.microsoft.com/en-us/download/confirmation.aspx?id=3203

Auch hier, einfach mit einem Doppelklick installieren und fertig ist das Reporting.

image

Damit haben wir ein funktionierendes Reporting des WSUS auf dem Windows Server 2012R2.

image

Enjoy it, b!

Windows Server Essentials Computer Backup Service funktioniert nicht (mehr)

In der Release Documentation for Windows Server Essentials vom 10.03.2021 kündigt Microsoft Pläne an TLS 1.0 und 1.1 zu deaktivieren und TLS 1.2 für den Windows Server Essentials als zukünftigen Standard für eine Absicherung der Kommunikation vorzusehen.

image

Ein Überlesen dieser Information und damit das Versäumnis TLS 1.2 zu aktivieren hatte ja schon im März zu dem Blog über den nicht mehr funktionierenden Zugriff mittels <domain>.remotewebaccess.com geführt.

Nun bin ich auf einem SBE über einen nicht mehr funktionierenden Windows Server Essentials Backup Service gestolpert und dessen Abhängigkeit zu TLS 1.1.

Durch den Startup Type = Automatic sollte der Dienst mit einem Neustart des Servers gestartet werden. Was zwar passierte, aber nach ein paar Minuten war der Dienst nicht mehr aktiv.

image

Ich fasse hier mal die Symptome zusammen:

    • Der Windows Server Essentials Backup Service startet und stoppet im Anschluss wieder
    • Im Eventlog unter Application and Services Logs / Microsoft / Windows / ServerEssentials / Admin haben wir diese Fehlermeldung:Event 270, ServerEssentials
      API name GetTlsServerCredentials


image

Der Fehler sieht danach aus, dass der Service sich nicht Authentifizieren kann.

Weder Microsoft selbst, noch die Suchmaschine(n) meiner Wahl lieferten einen wirklich guten Hinweis auf die API GetTlsServerCredentials. Damit dachte ich mir, ich versuche mal IISCrypto von NARTAC Software um mir die aktuelle Konfiguration anzeigen zu lassen.

image

Auf diesem Server war lediglich Schannel TLS 1.2 (Server / Client Protocols) aktiviert. Ein Vergleich mit einem anderen SBE zeigte aber, dass dieser zusätzlich TLS 1.2, 1.1 und 1.0 aktiviert hatte und auf diesem Server lief der Windows Server Essentials Computer Backup Service.

image

Nach der Aktivierung von TLS 1.1 (und TLS 1.0, siehe Update unten), sowohl Server als auch Clientseitig (Server Protocols / Client Protocols) und einem damit notwendigen Neustart lief auch der Windows Server Essentials Computer Backup Service auf diesem SBE wieder.

image

Es existiert also eine Abhängigkeit zu TLS für den Windows Server Essentials Computer Backup Service. Eine Dokumentation dazu konnte ich nirgendwo finden und diese gewonnene Erkenntnis ist auf einen “educated guess” zurück zu führen, hat aber das Problem gelöst. Alle anderen Services auf dem SBE laufen übrigens mit der TLS 1.2 Einstellung problemlos, nur für den Windows Server Essentials Computer Backup Service ist noch TLS 1.1/1.0 notwendig.

Update 25.06.2021:
Nachvollziehen konnte ich dieses Verhalten sowohl mit Windows Server 2016 als auch mit Windows Server 2012R2, allerdings mit einen Unterschied. Während auf einem Windows Server 2016 der Windows Server Essentials Computer Backup Service mit TLS 1.1 wieder funktioniert hat, benötigte es unter Windows Server 2012R2 TLS 1.0.

Interessant ist, dass mit TLS 1.1 unter Windows Server 2012R2 der Service deutlich länger lief, bevor er mit dem Fehler oben (Event ID 270) sich beendet hat.

Update 29.06.2021:
Mit TLS 1.1 und 1.2 läuft auf dem Windows Server 2016 der Windows Server Essentials Computer Backup Service, aber die Clients verweigern das Backup. Welches nach Aktivierung von TLS 1.0 ebenfalls wieder funktioniert hat.

Zusammenfassend kann ich heute folgendes sagen:

  • Windows Server 2016 und 2012R2 = TLS 1.0, 1.1 und 1.2

Wenn ich nochmals zu neueren Erkenntnisses komme, gibt es dazu wieder ein Update.

Enjoy it, b!

SYSVOL-Migration von FRS auf DFSR

Microsoft empfiehlt schon seit langer Zeit die Replikation des SYSVOL von FRS (File Replication Service) auf DFSR (Distributed File Service Replication) umzustellen. Um genau zu sein, kam diese Empfehlung mit Windows Server 2003R2 🙂 .  Das ist auch sinnvoll, da DFSR stabiler arbeitet und FRS mit dem Windows Server 1709 nicht mehr unterstützt wird.

Ich habe dann eine Reihe meiner Small Business Domains durchgeschaut und noch eine gefunden in dieser FRS zur Replikation verwendet wird. Das ist immer dann der Fall, wenn von sehr alten Versionen (hier ein Windows Server 2000 basiertes Active Directory) immer wieder auf neue Versionen migriert wurde. Die Historie in dieser Domain ist:

  • Windows Server 2000
  • Windows Server 2003
  • Windows Server 2008
  • Windows Server 2012R2

In Domains mit nur einem Domain Controller (DC), wie das bei dem Small Business Server oder Small Business Essentiales üblich ist, kommt es in der Regel zu fast keinen Problemen mit der Replikation. Denn es gibt nur einen DC, das bedeutet aber nicht das hier keine Replikation stattfindet, sondern dass der Server in der Regel sich selbst immer erreichen kann.

FRS oder DFSR?

Wie stellt man überhaupt fest, ob innerhalb des Active Directory (AD) mit FRS oder DFSR repliziert wird? Das kann über mehrere Möglichkeiten herausgefunden werden.

Im Ereignis-Protokoll auf einem (in einer SBS/SBE Domain auf dem einem) DC sind aktuelle Einträge vorhanden.

image

Im DFS Management wird KEINE Gruppe angzeigt, wie im folgenden Bild zu sehen ist. Darunter das Domain System Volume wenn auf DFSR umgestellt wurde.

FRS (File Replication Service)

image

DFSR (Distributed File System Replication)

image

Voraussetzungen

Damit eine Migration ohne Probleme läuft, sollten ein paar Bedingungen im Vorfeld erfüllt sein.

FRS muss fehlerfrei arbeiten, dass kann man gleich prüfen wenn man einen Blick in das Ereignisprotokoll des FRS wirft

Bei mehreren DC, erstelle ich eine Datei im NETLOGON-Verzeichnis und schaue ob diese auf den anderen DCs zeitnah auftaucht.

C:\Temp> echo "Test" > \Windows\SYSVOL\domain\scripts\test.txt

Zusätzlich muss die Domain im Domain-Mode mindestens auf Windows Server 2008 laufen.

image

Das kann mit PowerShell und Get-ADDomain geprüft werden.

# Den Befehl als Administraor in einer PowerShell-Sitzung ausführen
(Get-ADDomain).DomainMode
Windows2012R2Domain

Nun können wir die Migration starten.

Migration von FRS auf DFSR

Bevor die Migration gestartet wird mache ich, wenn nur ein einziger DC vorhanden und dieser virtualisiert ist, einen SnapShot. Darüber hinaus ist ein aktuelles Backup obligatorisch.

image

Bei einem Snapshot (oder Checkpoint) ist es wichtig, dass falls dieser in Anspruch genommen wird, alle Daten die seit dem Checkpoint erstellt wurden verloren gehen. Darum ist eine Migration des SYSVOL etwas fürs Wochenende.

Die Migration selbst erfolgt mit dem Tool dfsrmig.exe das in einer, als Administrator gestarteten CMD- oder PowerShell-Sitzung auf dem DC ausgeführt wird, der die PDC-Emulator Rolle besitzt. Bei nur einem Server / DC ist die Rollenverteilung klar, ansonsten kann diese wie folgt mit PowerShell geprüft werden.

# Den Befehl als Administrator in einer PowerShell-Sitzung ausführen
(Get-ADDomain).PDCEmulator
mt-sbs-1.DOMAIN.local

Wird nur Get-ADDomain verwendet, findet man den PDC-Emulator hier.

image

Die Migration selbst verläuft in vier Stufen mit dem folgenden Status von 0 … 3, die Informatik beginnt halt gerne bei 0 Smile

Status Start 0

Mit dfsrmig /setGlobalState 0 werden die Domain Controller auf Start gesetzt und die Migration kann beginnen.

# Den Befehl als Administrator in einer PowerShell-Sitzung ausführen
dfsrmig /setGlobalState 0

Die Meldung Invalid state change requested, rührt daher das auf diesem DC der Befehl schon im Vorfeld abgesetzt wurde und dieser sich schon im Status Start befindet.

image

Kontrollieren, ob alle DC sich final im Status Start befinden kann und sollte man mit dfsrmig /GetMigrationState.

# Den Befehl als Administrator in einer PowerShell-Sitzung ausführen
dfsrmig /GetMigrationState

image

Bei mehreren DCs kann das schon seine Zeit dauern, letzte Woche habe ich bei zwei Servern ca. 10min gewartet bis dieser Status erreicht war. Hier ist ein wenig Geduld angebracht.

Status Prepared (Vorbereitet) 1

Mit dfsrmig /setGlobalState 1 wird nun im nächsten Schritt der DC in den Status Prepared versetzt und mit dfsrmig /GetMigrationState kann der Status wiederholt abgefragt werden.

# Den Befehl als Administrator in einer PowerShell-Sitzung ausführen
dfsrmig /setGlobalState 1

Wie im folgenden Bild zu sehen ist, benötigt auch ein einzelner DC seine Zeit. Dazu einfach einen Kaffee holen und mit dfsrmig /GetMigrationState den Status abfragen.

image

Status Redirected (Umgeleitet) 2

Mit dfsrmig /setGlobalState 2 wird nun die Phase 2 eingeleitet und alle DC in den Status Redirected gesetzt, was ebenfalls seine Zeit dauern kann.

# Den Befehl als Administrator in einer PowerShell-Sitzung ausführen
dfsrmig /setGlobalState 2

Natürlich liefert dfsrmig /GetMigrationState den aktuellen Zustand.

image

Damit ist die Phase 2 beendet und wir können uns der Phase 3 zuwenden und die Migration damit abschließen.

Status Eliminated (Entfernt) 3

Mit dfsrmig /setGlobalState 3 wird nun die Phase 3 und damit der Abschluss der Migration eingeleitet und alle DCs in den Status Eliminated gesetzt.

# Den Befehl als Administrator in einer PowerShell-Sitzung ausführen
dfsrmig /setGlobalState 3

Wie schon vorher liefert dfsrmig /GetMigrationState den Zustand und Status der Migration, im folgenden Bild waren wir nach gut 2min fertig.

image

So nun sind wir fertig, alle vier Schritte / Phasen sind durch.

Wie kontrollieren wir nun, ob alles sauber läuft?

Vertrauen ist gut, Kontrolle ist besser

Im DFS Management wird nun das Domain System Volume angezeigt und man kann es auch als Replikationsgruppe hinzufügen.

image

Dort sehen wir auch den migrierten SYSVOL-Ordner.

image

Zusätzlich verabschiedet sich der FRS mit einem “letzten” Eintrag im Ereignisprotokoll.

image

Im DFS Replication Ereignisprotokoll finden wir ebenfalls einen Eintrag, dass nun mit DFSR repliziert wird.

image

Bei mehr als einem Domain Controller, erstelle ich immer eine Datei im NETLOGON-Verzeichnis und schaue ob diese repliziert wird. Das Verzeichnis heißt ja nun auch nicht mehr SYSVOL, sondern SYSVOL_DFSR.

image

Wird nun ein weiterer DC hinzugefügt, dann verwendet dieser wie vor das Verzeichnis SYSVOL.

image

Die beiden ersten Server wurden „migriert” und der letzte in der Liste (blau umrandet) wurde nach der Migration hinzugefügt.

Enjoy it, b!

GPO Error "Resource $(string id="Win7Only)‘

Die Fehlermeldung lautet wie folgt und erscheint bei der Anzeige der Settings / Einstellungen einer GPO.

Error "Resource $(string id="Win7Only)' referenced in attribute displayName could not be found" when opening gpedit.msc in Windows

Im GPO-Management wird der Fehler wie folgt angezeigt.

image

Microsoft selbst, kennt den Fehler auch und liefert in diesem KB-Artikel die Lösung, bzw. einen Workaround wie man den Fehler beheben kann.

https://support.microsoft.com/en-us/help/4292332/error-when-you-open-gpedit-msc-in-windows

Der Fehler ist bei mir aufgetreten, nachdem ich eine auf Windows Server 2012 R2 laufende Domain für Windows Hello vorbereiten wollte, dazu gehört auch das Aktualisieren der ADMX-Dateien.

Da ich schon die aktuellen ADMX-Dateien eingespielt hatte, hier geht es zu den Windows 10 ADMX-Dateien für Version 2004, blieb mir nur die Möglichkeit die ADML-Datei zu editieren. Das kann man entweder mit Notepad oder mit Notepad++ machen.

Dazu habe ich die folgenden Schritte durchgeführt.

Erstellen eines Backups für die SearchOCR.adml Datei im folgenden Ordner:

C:\Windows\SYSVOL\domain\Policies\PolicyDefinitions\en-US

Das geht am einfachsten in einer Eingabeaufforderung oder in PowerShell mit xcopy, wobei beide Sitzungen mit erweiterten Adminrechten gestartet werden müssen.

C:\Windows\SYSVOL\domain\Policies\PolicyDefinitions\en-US
# Wechsel in der Verzeichnis mit den PolicyDefinitions der jeweiligen Sprache
C:\Windows\SYSVOL\domain\Policies\PolicyDefinitions\en-US
# Sichern der alten Datei mit dem Namen searchocr.adml durch xcopy
xcopy searchocr.adml \temp

Dann wird mit dem Editor eine Leerzeile in Zeile 26 eingefügt, und in diese leere Zeile der folgende String kopiert.

# Einfügen des folgenden Strings in Zeile 26"
Microsoft Windows 7 or later

Im Editor sieht das dann wie folgt aus.

image

Danach ist die Fehlermeldung verschwunden und die GPO-Einstellungen werden korrekt angezeigt.

Enjoy it, b!

Windows Backup und das erste Mal

Willkommen zu einem neuen Beitrag über Windows Backup. Was passiert den genau beim Backup und was kann, besonders wenn dieses erstmals ausgeführt wird, schief gehen.

Ein wenig Backup Anatomie

Windows Backup arbeitet nach einem Prinzip das als “Inkremental forever” beschrieben werden kann.Nach dem ersten erfolgreichen Backup werden immer nur die Veränderungen zwischen den einzelnen Backups gesichert. Das hat prinzipiell den Vorteil, dass wenn einmal alle Dateien gesichert wurden (auch wenn es viele sind) nur noch wenige Veränderungen ins Backup aufgenommen werden und damit die weiteren Sicherungen schnell fertig sind.

Herausforderungen

Wird Windows Backup das erste Mal ausgeführt, steht abhängig von der Konfiguration, möglicher Weise eine Vollsicherung des Servers an und das kann dauern und von den Einstellungen des Backup-Tasks sabotiert werden. Die Zeit, welche für ein Backup benötigt wird hängt im Wesentlichen von den Faktoren Performance, Größe und Anzahl der zu sichernden Dateien ab.

Einstellungen für Windows Backup

Damit Windows Backup ungestört seine initiale Sicherung des Servers fertigstellen kann, gibt es zwei Möglichkeiten.

  1. Einstellungen des Backup Tasks
  2. Menge der zu sichernden Dateien

Einstellungen des Backup Tasks

Wie schon in diesem Beitrag beschrieben, bergen die Einstellungen des Backup Tasks einige Unsicherheiten welche ein erstes und erfolgreiches Backup schwierig machen können. Die einfachste Möglichkeit hier ist, dem Backup die notwendige Zeit (auch wenn es mehrere Tage sind) für die Vollsicherung ein zu räumen. Dabei sind die folgenden Einstellungen sinnvoll.

  • Stop the task if it runs longer than … = deaktivieren
  • If the task is already running, then the following rule applies = Do not start a new instance

image

Damit geben wir dem Backup die Möglichkeit, so lange zu laufen bis die erste Sicherung erfolgt ist und vermeiden zusätzliche Windows Backup Failed Meldungen im Backup selbst.

Nach erfolgreicher erster Sicherung, kann die Einstellung wieder aktiviert werden.

  • Stop the task if it runs longer than [3 days] = aktiv

Menge der zu sichernden Dateien

Als weiterer und nicht nur alternativer Ansatzpunkt kann eine Reduktion der zu sichernden Menge an Daten während des ersten Backups sein. Dazu werden einfach nicht alle Laufwerke ausgewählt sondern nur das Systemlaufwerk und zum Beispiel ein Datenvolume, hier F:

image

Ist die Sicherung damit erfolgreich zu ihrem Abschluss gekommen, kann für den nächsten Zyklus das Laufwerk D: hinzugefügt werden, bis alle Laufwerke in der Sicherung enthalten sind.

Eine weiter Option, an Stelle von ganzen Laufwerken mit der Inklusion von einzelnen Verzeichnissen zu arbeiten ist nur dann sinnvoll, wenn KEINE Deduplizierung auf den Volume stattfindet.

image

Diese kleine Warnung wird gerne überlesen und es kommt damit zu sehr langen Laufzeiten des Backups und einer Reihe von anderen Problemen.

Enjoy it, b!

Event 4121, Data Deduplication

Auf einem Windows Server 2012R2 ließ sich die Konfiguration für die Deduplizierung der Volumes nicht mehr starten, ebenfalls zeigte der Servermanager keine Informationen über deren Zustand an. Im Eventlog (Application and Services/Microsoft/Windows//Deduplication/Operational) waren viele Einträge mit dem Event 4121 zu sehen.

image

Alle Einträge mit dem Event 4121 deuteten auf eine korruptes XML-Datei im Laufwerk D: hin:

D:\System Volume Information\Dedup\Settings\dedupConfig.02.xml

Zumindest ich habe im Web keinen wirklich guten Vorschlag zur Lösung des Problems gefunden. Maßnahmen wir die Deinstallation der Deduplizierung, brachten ebenso wenig Erfolg wie ein Chkdsk auf dem Volume.

Das Problem habe ich nach einigem Überlegen wie folgt gelöst.

Analyse der dedupConfig.02.xml

Dazu habe ich die XML-Datei nach C:\Temp kopiert, da aber auf die Datei nur der SYSTEM Account Zugriff hat musste ich dazu eine cmd.exe mit PSEXEC starten.

c:\Temp>"\Program Files (x86)\Windows Sysinternals Tools\PsExec.exe" -s cmd.exe

Damit konnte ich die XML-Datei sehen und auch kopieren.

dir "D:\System Volume Information\Dedup\Settings\dedupConfig.02.xml" /ah

xcopy /h  "D:\System Volume Information\Dedup\Settings\dedupConfig.02.xml" C:\Temp

Im Verzeichnis C:\Temp habe ich erst einmal alle Attribute entfernt und versucht die Datei mit NotePad++ zu öffnen,

attrib -s -h -a dedupConfig.02.xml

Die Datei ließ sich mit keinem Editor öffnen, bzw. in einer sinnvollen Form lesen. Die Idee, wie das Ganze nun in den Griff zu bekommen sei, war von einem anderen Server (und hier ebenfalls von Laufwerk D die XML zu kopieren.

Dazu war der Ablauf wie folgt.

  1. Kopieren der neuen dedupConfig.02.xml nach C:\Temp (auf dem Quellsystem ist dazu ebenfalls eine cmd.exe unter dem SYSTEM Account notwendig, also wieder PSEXEC verwenden
  2. Setzen des Data Deduplication Service auf deaktiviert (im Service-Manager)
  3. Kopieren der Datei nach D:\System …
  4. Setzen des Data Deduplication Service auf manuell und starten des Deduplication Settings Wizards im Servermanager – Fertig!

image

Danach war wieder eine Konfiguration der Einstellungen möglich und es wurde sofort wieder der korrekte Status der Deduplizierung angezeigt.

Enjoy it, b!

Windows Server 2012 R2 “Signing out”

Immer mal wieder habe ich bei einem Windows Server 2012 R2 das Problem, dass dieser Ewigkeiten mit einer Abmeldung beschäftigt ist und dieser Prozess zu hängen scheint.

image

Ein ähnliches Problem wird in diesem Blog beschrieben und auch dafür eine Lösung geboten, ich habe mir aber wie folgt beholfen.

  1. Öffnen einer Session mittels PsExec auf den betroffenen Server
  2. Abfrage der Sessions mit query session
  3. Logoff der Session über die ID

Die im Blog empfohlenen Fixes waren oder sind ja auf dem Windows Server noch nicht installiert.

# Aufbau einer Session mit PsExec
psexec \\server cmd.exe

# Abfrage der aktiven Sessions (hier die ID heraussuchen)
query session

# Abmelden der Session, logoff ID
logoff 3

Das sieht dann wie folgt aus.

image

Enjoy it, b!

Windows Task Scheduler 2147942667

Der Windows Task Scheduler versteht bei der Konfiguration seiner Aktionen (Action) keinen Spaß, dass Quotieren eines Pfades mit Anführungszeichen führt beim Versuch der Ausführung zu einem Fehler 2147942667. Das der Task Scheduler mit Anführungszeichen so seine Probleme hat, ist eigentlich ein altes Problem.

Hier das Problem im Detail, das in meinem Fall auf einem Windows Server 2012R2 aufgetreten ist.

"C:\Program Files\Scripts"

image

Hier dazu den Lösung, also das Weglassen der Anführungszeichen.

C:\Program Files\Scripts

image

Damit läuft dann auch der Task ohne Probleme.

Enjoy it, b!

Installation von KB3000850 auf Windows Server 2012 R2 schlägt fehl …

Alle die meinen Blog verfolgen, wissen – der WSUS und ich haben ein schwieriges Verhältnis … zumindest wollte mir dieser partout nicht der Update Windows8.1-KB3014442-x64.msu zur Installation anbieten, welches neben Windows8.1-KB3016437-x64.msu und dem Windows8.1-KB3003057-x64 die Voraussetzung für Windows8.1-KB3000850-x64 darstellt.

Die Vorgehensweise ist eigentlich immer die gleiche, zu erst auf der Microsoft Webseite nach dem Update suchen, welches fehl schlägt. Dann werden hier manchmal weitere Updates im gleichen Download mit angeboten. Hier einfach alle Updates runter laden und probieren welche sich installieren lassen. Bei mir waren alle drauf, mit Ausnahme von KB3014442-x64.msu und der scheint die Grundlage für Windows8.1-KB3000850-x64.msu zu sein.

image

Danach hat es problemlos funktioniert Smile

 

Enjoy it, b!

Azure VPN-Verbindung (S2S) über den Azure Resource Manager und Windows Server 2012 R2

Fangen wir mal an

Auch für kleine Firmen kann die Nutzung von Diensten aus der Cloud sinnvoll sein, lässt sich damit doch der eine oder andere Test oder die Beschaffung zusätzlicher Server-Hardware umgehen.

Neben einer Vielzahl von Diensten (Azure-Backup), welche einfach über die Ports 80 oder 443 genutzt werden, kann es dennoch notwendig sein, eine VPN Verbindung nach Azure zu bauen (also das lokale Netzwerk mit Azure zu koppeln, was man auch Site-2-Site-VPN/S2S-VPN nennt). Um es gleich vorne weg zu sagen, in Azure kocht man auch nur mit Wasser … oder anders rum, mit Virtuellen Maschinen (VM), was bedeutet das ein VPN-Gateway in Azure nichts anderes ist, als ein Windows Server (Stand heute 2012R2). Zwar gibt es bei Microsoft Azure eine Liste von Routern und Beschreibungen wie diese für eine VPN-Verbindung mit Azure konfiguriert werden müssen, für kleine Firmen tut es aber auch ein Windows Server und genau diese Konfiguration soll hier beschrieben werden.

Um z.B. eine FRITZ!Box mit Azure zu verbinden gibt es eine Reihe von Anleitungen, dass Problem mit den FRITZ!Boxen ist aktuell, dass diese keinen IKEv2 support liefern und deshalb die Verbindung nach Azure über den ARM (Azure Resource Manager) nicht ganz so einfach zu konfigureren ist.

Microsoft hat in Azure zwei Möglichkeiten um Ressourcen zu verwalten:

  • ASM = Azure Service Manager (alt und nicht mehr auf Höhe der Zeit, der ASM wird nur noch aus Gründen der Kompatibilität bereit gestellt)
  • ARM = Azure Resource Manager (aktuell und die empfohlene Lösung)

Ich habe z.B. festgestellt, dass sich Azure GPU VMs (N-series) nur über den ARM bereitstellen lassen und auch nur auf ARM Ressourcen zurückgreifen können. Ich hatte die Situation, dass ich es nicht hinbekommen habe auf eine VPN Verbindung zwischen meiner FRITZ!Box und meinem lokalen Netzwerk (ASM basierend) mit einer N-Series VM zu zugreifen. Vielleicht saß das Problem auch vor dem Rechner, zumindest war eine einfache Lösung nicht möglich (ein VNet-Peering oder VNet-Routing wollte ich nicht konfigurieren).

Voraussetzungen

Damit nun eine VPN-Verbindung zwischen Azure und einem lokalen Netzwerk mit einem Windows Server konfiguriert werden kann, müssen wir uns, über ein paar Dinge klar werden:

  1. IPv4-Adressbereiche in Azure
  2. Lokale IP-Adressbereich(e) und die externe IP des Routers
  3. Auf welchem Server installieren wir RRAS (Remote Routing and Access)?

Gleich mal zu Punkt 3 … auf einem Windows Server mit geladener Essentials Role würde ich von einer Konfiguration von RRAS absehen … Da ich inzwischen die Standard Edition von Windows Server verwende und die seit geraumer Zeit den Betrieb von 2 VMs möglich macht, gehe ich von der folgenden Konfiguration aus:

  • Host mit Hyper-V
  • VM 1, Windows Server mit installierter Essentials Role
  • VM 2, Windows Server mit RRAS und weiteren Diensten

Die folgenden Screenshots wurden auf einem Windows Server 2012 R2 (Englisch) gemacht und auch die Menübeschreibungen des Server beziehen sich auf die Englische Version …

Punkt 2 beschreibt alle lokalen Adressbereiche welche verwendet werden, und darüber hinaus brauchen wir die externe IP des Routers. Diese ist bei mir statisch, oder sagen wir mal so gut wie statisch. Bisher hat bei UnityMedia (meinem Provider) die IP höchstes 1x im Jahr gewechselt.

Meine lokalen Adressbereiche sehen wie folgt aus:

  • 192.168.2.0/24, Gateway ist immer die .1 und der DNS läuft unter 192.168.2.17
  • 192.168.12.0/24, Gateway ist immer die .1

Die externe IP ist 38.210.102.188, bzw. ein verwendeter DynDns-Name wie z.B. azuretest.remotewebaccess.com

Damit kommen wir zum letzten Punkt, was soll eigentlich in Azure gebaut werden? Meine Absicht ist es ein Subnetz für VMs zu erstellen und dieses über ein VPN Gateway mit dem Netzwerk zuhause zu koppeln. Im ARM müssen dazu 2 Netzwerke definiert werden. Ein Netzwerk, oder genauer gesagt Subnetz für die VMs und ein weiteres für das Gateway.

Diese Netze nennen wir wie folgt und verwenden die folgenden Adressbereiche:

  • SBSland-Azure-CR-Network-000, 10.1.0.0/16
  • Subnetz 1: VM-Network-250, 10.1.250.0/24
  • Subnetz 2: GatewaySubnet, 10.1.249.0/28

Darüber hinaus müssen wir im ARM eine Gruppe für diese Ressourcen anlegen:

  • SBSland-Azure-Core-RG-1

Zum Abschluss, also bevor wir die Sache angehen können brauchen wir noch einen PreShared-Key welcher im Gegensatz zu früher (im ASM) selbst erstellt werden muss. Ich mache das immer mit KeePass.

  • f75bb948e79e072503af6cf93b154321cdf88e1c00964da4569e9123456789a8

Da wir zwischen dem lokalen Netzwerk und Azure routen, dürfen sich KEINE der Adressebereiche überlappen.

Konfiguration in Azure Remote Manager (ARM)

Nach der Anmeldung in Azure, muss möglicher Weise in das neue Portal gewechselt werden … was dann so aussieht.

image

Nun erfolgt im ersten Schritt das Erstellen der Ressourcengruppe

  1. Dazu wählen wir Ressourcengruppe / Hinzufügen und geben hier den Ressourcengruppenname (SBSland-Azure-Core-RG-1) ein

    image

    An dieser Stelle wird auch ausgewählt in welcher Azure Region wir den Service laufen lassen, Westeurope = Amsterdam (stand heute)

  2. Ein Klick auf Erstellen erzeugt die Gruppe

    image

  3. Nun legen wir die Netzwerke an. + / Netzwerk / Virtual Network

    image

    Welche wie folgt benannt werden, SBSland-Azure-CR-Network-000 und darüber hinaus geben wir noch den von uns gewählten IP-Adressbereich für das VM-Subnetz 10.1.0.0/16 und das erste Subnetz VM-Network-250, 10.1.250.0/24 an.

    image

    Dazu nicht vergessen, die vorhin erstelle Ressourcengruppe aus zu wählen und natürlich mit Erstellen das virtuelle Netzwerk erzeugen zu lassen. Damit ist das erste Subnetz für die VMs angelegt

  4. Als nächstes muss das Gatewaysubnetz konfiguriert werden, dazu einfach + Gatewaysubnetz (blau markiert) auswählen und den IP-Adressbereich 10.1.249.0/28 einfügen.

    image

    Nach Auswahl der + Gatewaysubnetz Option erscheint der Dialog zur Anöage

    image

    Der Name GatewaySubnet ist vorgegeben, daher kann nur der IP-Adressbereich in CIDR Form eingegeben werden

    image

    In den nächsten Schritten wird nun das Azure Gateway und das Lokale Gateway angelegt. Beginnen wir mit dem Azure Gateway …

  5. Um das Azure Gateway an zu legen, muss + / Netzwerk / Virtuelles Netzwerkgateway ausgewählt werden

    image

    Das Gateway nennen wir SBSland-Azure-AZ-Gateway, darüber hinaus wird das angelegte Netzwerk (SBSland-Azure-CR-Network-000) ausgewählt und eine öffentliche IP erstellt

    image

    Kleiner Hinweis an dieser Stelle … hinter SKU steckt die Größe, bzw. die Leistungsfähigkeit des Gateways und damit im Prinzip nur eine größere oder kleiner VM Winking smile 

    Als Gatewaytyp lassen wir VPN, eine Expressroute haben wir ja nicht und als VPN-Typ verwenden wir Routenbasiert.

    Routenbasiert, unterstützt dynmische routen und mehrere VPN-Verbindungen basierend auf IKEv2
    Richtlinienbasiert, unterstützt statische Routen, eine single VPN-Verbindung und IKEv1

    Für die FRITZ!Boxler unter uns, wäre das eine Möglichkeit ein Richtlinienbasiertes VPN zu bauen, da hier IKEv1 verwendet wird… was ich mir aber bisher noch nicht angeschaut habe.

    Die Erstellung dauert übrigens seine Zeit, be patient … Kaffeepause …

  6. Nach dem das Azure Gateway erstellt wurde, brauchen wir das “lokale” Gegenstück, ein lokales Netzwerk Gateway, welches im Wesentlichen die externe IP des Routers repräsentiert, hier also die 38.210.102.188

    + / Netzwerk / Lokales Netzwerkgateway öffnet den Dialog zur Konfiguration

    image

    Das Netzwerk nennen wir SBSland-Azure-LN-Gateway, als öffentliche IP geben wir die externe IP des Routers ein und konfigurieren zusätzlich die IP-Subnetze welche wir lokal verwenden. In kleinen Umgebungen ist es nur eines, bei mir sind es zwei 192.168.2.0/24 und 192.168.12.0/24

    image

    Nachdem nun fast alle Ressourcen in Azure angelegt sind, fehlt noch die VPN-Verbindung und damit sind wir im ARM auch schon fertig.
    Noch ein Hinweis zu den lokalen Subnetzen, diese können natürlich im Anschluss noch erweitert werden, falls die lokale Infrasturktur zu wachsen beginnt

  7. Zum Einrichten der VPN-Verbindung wählen wir das erstellte Lokale Netzwerkgateway (SBSland-Azure-LN-Gateway) aus und klicken dort auf Verbindungen

    image

    Nach der Auswahl von Verbindungen erfolgt das Hinzufügen einer VPN-Verbindung durch + Hinzufügen rechts oben. Die Verbindung nennen wir SBSland-Azure-Local-VPN und fügen als Gateway für virtuelle Netzwerke das erstellte SBSland-Azure-AZ-Gateway hinzu und den selbst erstellten PSK-Key

    image

So, in Azure (ARM) sind wir nun erst einmal fertig, nun muss noch der Windows Server mit RRAS konfiguriert werden.

Konfiguration des Windows Servers (RRAS)

Die Installation von Routing und Remote Access erfolgt am einfachsten über PowerShell.

Install-WindowsFeature Routing -IncludeManagementTools

 

  1. Unter Routing and Remote Access / Network Interfaces fügen wir nun ein New Demand-dial Interface.. hinzu, damit das funktioniert muss der Server von Local area network (LAN) routing only auf LAN and demand-dial routing umgestellt werden.

    image

    Nun kann das neue Interface erstellt werden …

    image

    Das Demand-Dial Interface nennen wir SBSland-Local-Azure-VPN und wählen im Anschluss Connect using virutal private networking (VPN) aus

    image

  2. darauf hin als VPN Type , IKEv2 auswählen

    image

  3. In der Zusammenfassung des von uns konfigurierten Azure Gateways (SBSland-Azure-AZ-Gateway) finden wir die öffentliche Azure-IP-Adresse …

    image

    … die als Destination Address eingetragen wird

    image

    … und die Sicherheitseinstellungen belassen wir so, wie sie sind …

    image

    … und fügen eine statische Route (Static Route) in unser Azure Netzwerk (VM-Network-250) hinzu

    image

    Wenn mehr als ein Netzwerk in Azure vorhanden ist (das GatewaySubnet zählt nicht), dann hier entsprechend diese Netze ebenfalls hinzufügen.

  4. Den Dialog mit den Credentials zur Einwahl können wir dahingehend ignorieren, dass wir nur einen Benutzer eintragen (SBSland) was dem Wizard ausreicht …

    image

    … mit Finish schließen wir den Dialog und bestätigen die Konfiguration

  5. Damit die VPN-Verbindung funktioniert, muss nun die Verwendung von IKEv2 konfiguriert werden. Das erfolgt in den Eigenschaften des Interfaces unter der Option Security

    image

    Hier wird der gleiche PSK-Key eingetragen, wie schon oben bei der Konfiguration der Verbindung in Azure.

  6. Nun ist die Verbindung erstellt und wir können mit der rechten Maustaste eine Verbindung (Connect) initiieren.
  7. Das manuelle initiieren der Verbindung ist OK, aber nicht das was wir haben wollen, da immer nach einem Server-Neustart die Verbindung manuell getriggert werden muss. Daher ändern wir die Einstellungen der Verbindung wie folgt:
    Routing an Remote Access / <Servername> / Network Interfaces / SBSland-Local-Azure-VPN, rechte Maustaste und Properties / Options auswählen, hier den Haken bei Persistent Connection setzen

    image

    Damit baut der Server nach einem Neustart die Verbindng von selbst auf

Zurück in Azure

In Azure wählen wir nun das Gateway für virtuelle Netzwerke (SBSland-Azure-AZ-Gateway), mit dem Punkt Verbinden aus.

image

So, nun sind wir eigentlich fertig hier noch ein Bild mit den Objekten welche wir konfiguriert haben.

image

The End

Wenn wir aber nicht auf allen VMs im lokalen Netz eine Route nach Azure definieren wollen, ist es sinnvoll dem Router eine entsprechende Route hinzu zu fügen, um eine automatische Weiterleitung aller Paket in das Netzwerk 10.1.250.0/24 zu gewährleisten.

image

Damit sind wir nun wirklich fertig.

Enjoy it, b!