Univention Bugzilla – Bug 29083
Reinstall eines Samba 4 Servers
Last modified: 2013-01-29 13:23:29 CET
Der in Bug #25393 Comment 4 beschriebene Workaround funktioniert nicht für allgemeinere Problem der Neuinstallation eines DCs under gleichem Namen (wo dann die alte keytab nicht zur Verfügung steht). Wir warten hier noch auf einen upstream commit. +++ This bug was initially created as a clone of Bug #25393 +++
Created attachment 4786 [details] kerberos-retry.patch
Wurde bei einem Kunden im Rahmen von 2012112021000764 kommuniziert (UCS 3.0-2)
Zusätzlich zu dem Kerberos Keyversion Problem tritt hier auch Bug 28373 in verschärfter Form auf: Wenn ein Samba4 DC ausfällt ond durch einen neuen ersetzt wird geht der nur lokal auf dem DC gepfegte Zählerstand "rIDNextRID" verlohren. Wenn der Samba4 DC beim Join per --keep-existing das alte DC-Konto weiter verwendet, dann behält er auch seinen "rIDAllocationPool". Aus diesem Pool werden lokal angelegte Samba4-Konten mit RIDs versorgt (z.B. das dns-service Konto). Wenn der Zählerstand "rIDNextRID" verlohren geht, dann versucht der DC beim anlegen neuer Benutzer schon vergebene RIDs zu verwenden, sodass das Anlegen von Benutzern scheitert. Die einfachste Lösung wäre hier, die Option "--keep-existing" nur dann zu verwenden, wenn das System schonmal gejoined war, und eine lokale sam.ldb hat. z.B. samba_join_options=() if [ -n "$samba4_ldap_base" ] && \ ldbsearch -H /var/lib/samba/private/sam.ldb -b "$samba4_ldap_base" \ -s base dn 2>/dev/null | grep -qi ^"dn: $samba4_ldap_base" then samba_join_options+=(--keep-existing) fi
Beim Re-Install eines DCs unter gleichem Namen sollte dieser die dns/alias Objekte folgenden Musters entfernen, falls sie eine Alias für den eigenen FQDN sind: relativeDomainName=[^.]*._msdcs Diese Records enthalten eine GUID, die das SAM/LDB-Datenbestand eines DCs identifiziert und anscheinend bei jedem Join wechselt. Während Samba 4 selbst beim join ohne --keep-existing diese GUID aus dem Samba 4 Verzeichnis löscht, verbleiben diese dann noch im DNS.
Der Lösungs-Ansatz aus Comment 3 ist jetzt umgesetzt: Nur wenn der eigene System-Account lokal schon in der sam.ldb auffindbar ist, wird beim samba join die Option --keep-exisitng verwendet. Außerdem wird vor dem Aufruf von "samba-tool domain join" DNS alias records mit relativeDomainName=[^.]*._msdcs entfernt, die den FQDN des joinenden DCs referenzieren. Das deckt insbesondere Bug 29504 mit ab. Advisory: 2012-12-18-univention-samba4.yaml
OK, soweit funktioniert es. Da wir noch keine neue DVD haben, ist die Reihenfolge so: 1. Neuinstallation Slave mit S4 und der alten DVD 2. Direktes Joinen beim Installieren 3. Einspielen der errata Updates 4. Erneutes Joinen Zwischen 3 und 4 muss jetzt noch einmal /var/lib/samba/private gelöscht werden. ein Hinweis sollte in die YAML Datei aufgenommen werden. Alternativ hätte man auch /var/lib/samba/private beim Join automatisch löschen können, das ist aber für einige Szenarien ungünstig, da der Server eine neue RID bekommt.
Advisory und changelog-3.1-1 sind entsprechend angepasst. In meinen Tests hatte ich das Errata immer vor dem initialen Join des neu installierten Slaves eingespielt, aber das ist unter anderem wegen der Repository-Server-IP ggf. in der Praxis zu kompliziert.
(In reply to comment #7) > Advisory und changelog-3.1-1 sind entsprechend angepasst. > In meinen Tests hatte ich das Errata immer vor dem initialen Join des neu > installierten Slaves eingespielt, aber das ist unter anderem wegen der > Repository-Server-IP ggf. in der Praxis zu kompliziert. Genau, sobald es eine neue DVD gibt funktioniert es. Alternativ bei der Installation nicht joinen, Updates einspielen und dann joinen. → Verified
http://errata.univention.de/3.1-errata27.html