Heutiger Fall: Ein UCS-System mit Kopano und AD-Anbindung, synchronsiert keine Änderungen mehr aus dem Active-Directory.

Log-Datei auf dem UCS tail -f /var/log/univention/connector.log zeigt keine Fehler und schreibt nur fortlaufend:

05.05.2021 09:07:31.978 LDAP (INFO ): Search AD with filter: (uSNCreated>=195380954)
05.05.2021 09:07:31.979 LDAP (INFO ): Search AD with filter: (uSNChanged>=195380954)
05.05.2021 09:07:36.982 LDAP (INFO ): Search AD with filter: (uSNCreated>=195380954)
05.05.2021 09:07:36.983 LDAP (INFO ): Search AD with filter: (uSNChanged>=195380954)

Obige Logs sieht man nur, wenn Debug-Flags aktiv sind mit

ucr set connector/debug/level=4

Zum groben Ablauf sei gesagt, dass UCS intern einen Zähler hat, der um eins hochgezählt wird, wenn es im AD eine Änderung gibt. So weiß UCS jederzeit, ob es „nachsynchronisieren“ muss, oder alle Einträge aktuell sind.

In unserem Fall hat durch einen Wechsel von Server 2008R2 auf Server 2012, Microsoft die Nummern durchgewürfelt.

Ergebnis war, dass der UCS der Meinung war, er sei bei obiger Nummer/Änderung ‚195380954‘, das Microsoft-AD jedoch weit dahinter lag. So konnte man im AD noch so viele Änderungen machen, für den UCS, waren diese nicht neu.

Wie findet man raus, auf welchem Stand das AD ist? Man wählt einen Benutzer im AD, ändert dort irgendwas und befrägt das AD vom UCS aus (exemplarisch Benutzer Administrator)

root@kopano01:/var/lib/univention-ldap# univention-adsearch CN=Administrator uSNChanged | grep uSNChanged
uSNChanged: 12829381

Und so sehen wir, das AD ist bei Änderung ‚12829381‘ – der UCS wie oben gezeigt, schon bei ‚195380954‘.

Da man jetzt nicht einfach die IDs im UCS zurückdrehen kann, da all diese auch LDAP-Commits sind, muss lediglich ein interner Zähler geändert werden, der angibt, auf welcher ID der letzte AD-Sync steht.

Dieser aktuelle Wert kann abgefragt werden mit:

root@kopano01:~# sqlite3 /etc/univention/connector/internal.sqlite „select * from AD;“
lastUSN|12829381

Dieser Wert kann jetzt mit folgendem Skript von UCS geändert werden:

https://help.univention.com/t/problem-ad-connector-stops-syncing-if-windows-ad-was-replaced/12525

Achtung: In obigem Skript ist noch ein Tippfehler. Die Variable ‚$hcusc‘ muss natürlich ‚hcusn‘ sein.

Ändert man jetzt im AD etwas für einen Benutzer, erscheint die Änderung im connector.log:

05.05.2021 10:06:49.227 LDAP (PROCESS): sync to ucs: [ user] [ modify] uid=administrator_sb,ou=benutzer,ou….

Categories: Blog