Archiv der Kategorie: IT

Hyper-V VHD(X) auf ReFS-Volume unter Server 2012 R2

Versucht man auf eine VHD(X), welche auf einem ReFS-Volume liegt (auf einem solchen aber nicht erstellt wurde), mit Hyper-V schreibend zuzugreifen, so bekommt man folgende Fehlermeldung:

Im Ereignisprotokoll wird Event-ID 12140 des Hyper-V SynthStor protokolliert, die besagt, dass auf ReFS das Integritätsbit für virtuelle Festplatten nicht gesetzt sein darf.

Die Meldung erscheint, da ReFS endlich Mechanismen gegen Bit Rot (Silent Data Corruption oder Bitfäule) mitbringt, sodass nun auch große RAID-Volumes sicherer genutzt werden können. Alternative Dateisysteme wären hier ZFS bzw. BtrFS unter Linux. Zum Hintergrund zu Bit Rot sei der Wikipedia-Artikel empfohlen, der die ganze Thematik und die Herkunft des Bit Rots erläutert.

Leider kann Hyper-V mit so gekennzeichneten Dateien nichts anfangen, sodass kein Zugriff auf die Datei möglich ist.

Das Integritätsbit einer Datei kann jedoch folgendermaßen deaktiviert werden:

Get-Item ‚Pfad-zur-Datei\Datei.Endung‘ | Set-FileIntegrity -Enable $False

Nicht synchronisierende SYSVOL oder NETLOGON Shares des DFS-R mit Server 2012 R2

In meinem Homelab bemerkte ich nach Inbetriebnahme des Bare Metal Domaincontrollers, dass die Synchronisation der SYSVOL bzw. NETLOGON Shares über DFS-R wohl noch nie funktioniert hat.

Da natürlich nichts im Ereignisprotokoll geloggt wurde, recherchierte ich bestimmt vier Stunden, bis ich diesen Blogpost von iSiek fand, der eine au­to­ri­ta­tive Wiederherstellung der über DFS-R synchronisierten SYSVOL bzw. NETLOGON Freigaben beschreibt. Eine Wiederherstellung über Burflags, wie noch bei Server 2003, ist ab Server 2008 dank DFS-R nicht mehr möglich.

Hier noch einmal kurz die Vorgehensweise. Ich empfehle jedoch sehr sehr genau den Blogpost von iSiek zu lesen, da es auch bei mir erst nach dem dritten mal funktionierte.

1. Auf dem PDC-Emulator, der mit „net dom query fsmo“ ermittelt werden kann, wird zunächst der DFS-R-Dienst angehalten.

2. Auf dem PDC-Emulator werden per ADSI-Edit die Einträge des PDC-Emulators „msDFSR-Enabled = FALSE“ und „msDFSR-Options = 1“ gesetzt.

3. Auf allen anderen DCs wird jetzt per ADSI-Edit nur der Eintrag „msDFSR-Enabled = FALSE“ des jeweiligen DCs geändert und erst anschließend der DFS-R-Dienst beendet.

4. Auf dem PDC-Emulator kann nun der DFS-R-Dienst erneut gestartet werden. Event-ID 4114 der DFS-Replikation sollte protokolliert werden, die aussagt, dass die Synchronisation von C:\Windows\Sysvol\domain durch das zuvor gesetzte msDFSR-Enabled = FALSE deaktiviert wurde.

5. Durch ein erneutes Umstellen von „msDFSR-Enabled = TRUE“ auf dem PDC wird nun das Verzeichnnis wieder durch DFS-R synchronisiert.

6. Diese Änderung muss nun als erstes auf dem PDC und anschließend auf allen anderen DCs mit dem Befehl „repadmin /syncall /AdP“ ins AD synchronisiert werden.

7. Durch Eingabe von „dfsrdiag PollAD“ auf dem PDC zwingt man nun das DFS-R die zuvor im AD replizierten Änderungen zu akzeptieren. Unter Umständen müssen die DFS Management Tools noch als Feature der Dateidienste hinzugefügt werden. In der Ereignisanzeige vom DFS-R sollte Event-ID 4602 protokolliert werden, die besagt, dass die au­to­ri­ta­tive SYSVOL Wiederherstellung initiiert wurde.

8. Bevor nun weitere Arbeiten auf den übrigens DCs gemacht werden, sollte dort zunächst das SYSVOL gesichert und anschließend geleert werden, um eventuelle Konflikte mit unterschiedlichen Dateiversionen zu vermeiden. Anschließend kann DFS-R auf den übrigen DCs wieder gestartet werden. Event-ID 4114 sollte erneut protokolliert werden, die wie zuvor nun meldet, dass die Replikation von C:\Windows\Sysvol\domain deaktiviert wurde.

9. Auf allen übrigen DCs kann nun bei gestartetem DFS-R-Dienst per ADSI-Edit „msDFSR-Enabled = TRUE“ erneut gesetzt werden. Durch „dfsrdiag PollAD“ wird nun erneut DFS-R gezwungen, die unter Punkt 6 ins AD replizierten Änderungen zu akzeptieren.

Nach kurzer Zeit sollte nun in allen SYSVOL Freigaben nun wieder der gleiche Inhalt vorhanden sein. Mir hat es jedenfalls geholfen.

Als nächstes berichte ich darüber, wie ich auf dem Bare Metal Domaincontroller das SYSVOL und NETLOGON Verzeichnis manuell freigab, da dieses nicht automatisch bei Hochstufen als DC funktionierte. Ja, ich hatte ein sehr arbeitsreiches Wochenende.

Server 2012 R2 TerminalServices-Licensing Event-ID 4105

Grundgütiger! Ich blogge! Und es ist kein GIF!

Sofern auf einem Server 2012 R2 Remote-Desktop-Server folgende Dinge zutreffen:

– Die TerminalServices-Licensing Event-ID 4105 wird protokolliert.
– Es wird keine RD-CAL für den Benutzer ausgestellt.
– Andere Benutzer bekommen hingegen eine RD-CAL zugewiesen.
– Der Remote-Desktop-Lizenz-Server ist bereits Mitglied der AD-Gruppe Terminalserver-Lizenzserver.

Sollten die erweiterten Sicherheitseigenschaften (vorher einblenden über „Ansicht“ -> „Erweiterte Features“) des AD-Benutzers kontrolliert werden, der keine RD-CAL bekommt.
Dort muss die AD-Gruppe Terminalserver-Lizenzserver mit dem Recht „“Terminalserver-Lizenzserver“ lesen“ und „“Terminalserver-Lizenzserver“ schreiben“ vorhanden sein.

Zur Rückversicherung des ganzen kann ein bestehender Benutzer, bei dem CALs ausgestellt werden, kontrolliert werden. Dort sollten die entsprechenden Rechte vorhanden sein.

X220 1.40 BIOS ohne Whiteliste

Vorhin ging mir die wirklich unglaublich grauenvolle Performance der Realtek RTL8188CE WLAN-Karte dermaßen auf den Sack, dass ich mich entschied diese gegen eine Intel Centrino Advanced-N 6200, die ich noch aus dem T410 hatte (bei dem ich fälschlicherweise dachte, sie sei defekt).

Also 8 Schrauben gelöst, Tastatur und Handballenablage ausgebaut und WLAN-Karte getauscht. Leider ohne sofortigen Erfolg, da die Intel 6200 leider nicht auf der Whitelist des X220er 1.40 BIOS steht. Hätte ich zwar nicht gedacht, da die aus einem größeren Vorgängermodell stammt, aber nun gut.

Alte WLAN-Karte eingebaut, gegoogelt und diesen Post bei insanelymac.com gefunden. No risk, no fun und BIOS geflasht, Intel Karte eingebaut und voilà war die Whitelist weg und das X220 bootete ohne Probleme.

Geflasht habe ich vom offziellen BIOS 1.40 unter Windows 10 x64 in der RTM auf das gemoddete BIOS 1.40 ohne Whitelist ohne Probleme. Lediglich der SmartScreen-Filter meckerte. Aber das tut der ja immer. Falls jemand sich nicht bei insanelymac.com anmelden möchte, einfach eine Mail schreiben, ich lasse euch das BIOS dann zukommen.

Zu lange Dateinamen und Pfade unter Windows

Vor einigen Tagen rief mich mein Cousin an und sagte, er habe eine Festplatte formatiert und Windows neu installiert, obwohl noch die MySQL-Datenbanken auf eben dieser lagen. Tolle Wurst.

Also mit GetDataBack ein Image der Festplatte geschossen und los ging die Arbeit.
Mehrere MySQL-Ordner innerhalb seiner XAMPP-Installationen waren schnell gefunden und mein Cousin sollte eigentlich wieder glücksein sein. Dazu aber später mehr…

Jetzt stand ich allerdings vor dem Problem, dass aufgrund irgendeines NTFS-Windows-Murks nun Dateipfade mit deeeeeuuuutlich mehr als 255 Zeichen hatte 🙁 Beim Schreiben war es GetDataBack noch vollkommen egal, wie lang die Dateipfade sind, Windows weigert sich jedoch partout diese dann zu löschen.

Nach kurzer Recherche fand ich bei der c’t die Lösung.

Mit

subst "freier Laufwerksbuchstabe" "zu langer Ordnerpfad"

lässt sich ein zu langes Verzeichnis als virtuelles Laufwerk mounten, sodass dann darüber der richtige Zugriff auf die Verzeichnisse wieder möglich ist.

Mit

subst "Laufwerksbuchstabe" /d

kann das virtuelle Laufwerk anschließend wieder gelöscht werden.

Was ein Abfuck, ey…

Belkin F5D7230-4 v1 von dd-wrt zur originalen Firmware

Hallo Fans,

Kurz nach Weihnachten ergab sich für mich das Problem bei einer Bekannten, dass im Erdgeschoss des Hauses nur sehr sehr mäßiger WLAN-Empfang im Erdgeschoss herrschte. Zum Glück gab es aber eine strukturierte Verkabelung vom 1. OG, wo der bestehende Accesspoint steht, ins EG. Auch war noch ein alter Belkin F5D7230-4 v1 vorhanden.
(Seriously Belkin. Niemand, wirklich niemand vergibt solche Produktnamen. Wäre ich von euren Produkten überzeugt und ich würde gefragt: „Hey Kipp, kennst du einen guten WLAN-Router?“ müsste ich sagen: „Ja. Von Belkin. Aber deren Produktnamen sind so scheiße, dass ich mir beim besten Willen die kryptischen Bezeichnung nicht merken kann. Also kauf lieber was von einem anderen Hersteller.“)

Die IP des Belkins bekam ich mit Look@LAN raus: 192.168.2.253. Also flugs dem Thinkpad ne feste IP gegeben und rauf auf den Router und *ZACKBOOMBANG*: dd-wrt mit unbekanntem Benutzernamen und Passwort.

Gut… blöd… aber dann muss ich das Ding halt resetten. Beim Belkin mit dd-wrt scheint es jedoch so zu sein, dass der Resetknopf auf der Gehäuserückseite ein wirklicher Resetknopf ist. Es tat sich nämlich, bis auf das das Gerät aus ging und anschließend wieder neu bootete, nichts. Auch ein 30/30/30 Reset, wie er eigentlich gehen müsste, ging nicht.

Zum Glück rettete ich vor 3 Jahren mal einen Linksys WRT54GL nach einem nicht erfolgreichen Flash-Vorgang mit dem Unterjubeln der originalen Firmware mit TFTP während des Bootvorgangs. Sollte hier also eigentlich auch irgendwie gehen.

Also TFTP-Client nachinstallieren und nach fünf Versuchen mit ständigem Ausschalten des Belkins, um den richtigen Zeitpunkt für
tftp -i 192.168.2.253 PUT c:\dd-wrt.v24-13064_VINT_mini.bin
abzupassen, funktionierte es plötzlich und der Belkin startete nicht mehr mit der 04/06/07 sondern nun mit der 13064.

Ping auf 192.168.2.253 war auch nicht mehr erfolgreich, sodass der dd-wrt Reset via TFTP eigentlich geklappt haben müsste, bis ich sah, dass die alten SSIDs des Belkins immer noch durch die Gegend funkten. Der Router war jetzt unter der 192.168.2.1 erreichbar (wahrscheinlich aufgrund der zwei Jahre aktuelleren dd-wrt Version), andere Einstellungen hatten sich aber nicht geändert.

Als letzte Möglichkeit blieb nur noch zu hoffen, dass der Belkin es vertragen würde, wenn ich ihm per TFTP die originale Firmware beim Bootvorgang unterjubele.

Und er vertrug es. Hurra \o/

Geholfen hat mir folgender Post im dd-wrt Wiki:
http://www.dd-wrt.com/wiki/index.php/Belkin_F5D7230-4_v2xxx_and_Lower

Ein Dankeschön geht noch an den Belkin-Support bei Twitter, der sich, ohne angesprochen worden zu sein, bei mir meldete.
Sie konnten mir zwar nicht helfen, da dd-wrt auf dem Ding lief, aber… hey… immerhin haben sie nachgefragt, ob sie es könnten. Gibt’s auch nicht mehr alle Tage sowas.

Abends sah ich dann ‚Die Zeit des Doctors‘, die letzte Folge mit Matt Smith als Doctor Who. Sie war großartig. Und traurig. Vor allem traurig. Der 13. Doctor war bisher der beste.

Content hinter Button-Klick verstecken

Für den Post GIF des Jahres / NSFW suchte ich eine Methode, mit der ich dem WordPress sagen kann, dass es Content erst nach einem Klick auf einen Button anzeigt.

Ich googlete gefühlte 2 Stunden (realistisch waren es wohl nur 30 Minuten) und fand dabei raus, dass man wohl irgendwas in jQuery zaubern muss. Wenn ich zaubern schreibe, meine ich auch zaubern. Meine Programmierkenntnisse beschränken sich mittlerweile nur noch auf etwas HTML. Selbst vor so Zeug wie CSS usw. hab ich so viel Respekt, dass ich mich erst gar nicht traue, irgendwas zu versuchen.

Also fragte ich meine über aus intelligenten Twitter-Follower, wie man sowas basteln kann.

Als einziger erbamte sich @hszemi und half mir mit folgendem Codestückchen (hehehehehe) weiter:

<!-- Die Methode zur Behandlung des onclick-Events wird unten definiert -->
<button onclick="keks()">NSFW GIF</button>
<!-- Hier die Klasse nsfw vergeben -->
<div class='nsfw'>

HIER STEHT DER ZU VERSTECKENDE CONTENT

</div>

<script type="text/javascript">jQuery('.nsfw').hide();function keks(){jQuery('.nsfw').toggle();}</script>

(eigentlich dürfte das <code>-Element die Zeilen nicht umbrechen. Tut es aber trotzdem. Probierte das, half aber nicht. Mir egal. Kopiert man das oben angezeigte, wird es ohne Umbruch kopiert, sodass trotzdem alles richtig sein sollte. Bei mir funktioniert es jedenfalls.)

Ich kann sogar einigermaßen nachvollziehen, was der Code an welcher Stelle macht \o/ (verzichte aber darauf, das zu erläutern, da ich bestimmt irgendwo totalen Blödsinn erzähle).

Auf jeden Fall gebührt @hszemi ewiger Dank! Werde den Code (hehehehe) in Zukunft noch öfters brauchen!

Baïkal und hMailServer

Dienstagabend saß ich gelangweilt vor’m PC und las, dass die NSA pro Tag so 500.000 Adressbücher von Onlinediensten abschöpfen kann.
Das brachte das Fass zum Überlaufen. Es musste also was eigenes her.

Als Ersatz für Google Kontakte / Kalender empfahl Moritz den auf WebDAV-basierenden Cal/CardDAV-ServerBaïkal.
Die Installation bestand daraus, dass Verzeichnis auf den Webserver zu schubsen. Beim anschließenden Erstaufruf des Verzeichnisses erschien der Installationsassistent, der sehr einfach dabei half, die mySQL-Verbindung einzurichten. Beim Export der Google Kontakte oder beim Import in Thunderbird ging dann aber einiges schief, sodass ich alle ~100 Kontakte überarbeiten musste. Nicht schön, aber um ehrlich zu sein, hätte ich nicht erwartet, dass ich keine Probleme haben würde.
Die CalDAV/CardDAV Synchronisation mit meinem Razr i erfolgt über folgende Apps: CalDAV / CardDAV. Als Thunderbird Addon für CardDAV nutze ich den Connector von SOGo, für CalDAV Lightning.

Als GMail-Alternative blieb eigentlich nur der hMailServer, da ich webservertechnisch ja auf Windows + XAMPP setze.
Also das Setup runtergeladen und ausgeführt. Da ich dank XAMPP bereits ’nen mySQL-Server hatte, konnte ich auf den mit hMailServer mitgelieferte Microsoft SQL-Server Compact Edition verzichten und schubste die Daten lieber in den bestehenden Datenbankserver, zumal der SQL CE von Microsoft eine maximale Datenbankgröße von 4GB hat.
Der Mailserver verschickt zur Zeit die Mails, aufgrund der dynamischen IP des DSL-Anschlusses, über meinen SMTP-Smarthost bei df.eu. Via integriertem POP3-Connector werden die Mails vom DomainFactory-Postfach abgeholt.
Als IMAP Client verwende ich zur Zeit Thunderbird bzw. die in Android integrierte Mail-App. Um auch unterwegs per Browser auf die Mails zugreifen zu können, nutze ich Webmail Light von Afterlogic. Eine Live-Demo des Dienstes gibt es hier.

tl;dr: In zwei Stunden bin ich mit Baïkal, hMailServer und Afterlogic Webmail light unabhängiger von Google geworden. Yay \o/.

Neuer Gateway

Fuck yeah!
Endlich habe ich es hinter mich gebracht, den uralten Linksys WAG200 gegen einen Lancom 1821+ WLAN zu tauschen!

Da das ADSL-Interface des Lancoms defekt ist, betreibe ich den Linksys jetzt nur noch als Modem via PPPoE, jeweils an LAN1 der Geräte.

(… dass ich natürlich die Portweiterleitungen vergaß und somit erst mal nix von außen erreichbar war, erwähne ich besser nicht. Tüdeldü.)

Irgendwann werde ich auch über den LANCOM etwas ausführlicher schreiben. Bis dahin aber: