Bug 27395 - Windows7 Client mit DNS gegen Zentrale joined gegen Samba4 DC Slave
Windows7 Client mit DNS gegen Zentrale joined gegen Samba4 DC Slave
Status: CLOSED FIXED
Product: UCS@school
Classification: Unclassified
Component: Samba 4 - Slave PDC
UCS@school 3.0
Other Linux
: P5 normal (vote)
: UCS@school 3.0-errata
Assigned To: Stefan Gohmann
Felix Botner
:
: 27398 (view as bug list)
Depends on:
Blocks: 42675 48733
  Show dependency treegraph
 
Reported: 2012-05-31 14:13 CEST by Arvid Requate
Modified: 2019-05-15 13:43 CEST (History)
2 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:


Attachments
s4_connector_srv_records.patch (5.80 KB, patch)
2012-06-20 07:54 CEST, Stefan Gohmann
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Arvid Requate univentionstaff 2012-05-31 14:13:15 CEST
Im UCS@School 3.0 Samba4 Szenario mit Samba4 in der Zentrale sollte für die GPO-Bearbeitung ein Windows7 Client gegen den DC in der Zentrale gejoined werden. Dafür wurde dem Client eine IP aus dem zentralen Netz gegeben und als DNS Server der zentrale konfiguriert. Der Client war nach dem erfolgreichen Join in die Schule/Site eines Samba4 DC Slave der Domäne gejoined.

Ursache scheint zu sein, dass der DC Locator des Clients den SRV-Record _ldap._tcp.dc._msdcs auswertet, in dem er mit gleicher Priorität alle DCs vorfindet, aus denen er vermutlich zufällig einen auswählt.

Als Workaround habe ich die Prioritäten aller DC Slaves am SRV record erhöht, sodass von Client der UCS Master mit default Priorität 0 ausgewählt wurde.
Comment 1 Stefan Gohmann univentionstaff 2012-06-20 07:54:57 CEST
Created attachment 4451 [details]
s4_connector_srv_records.patch

Eine erste Version als Patch.
Comment 2 Stefan Gohmann univentionstaff 2012-06-20 16:31:54 CEST
Ich hatte jetzt auch den Fall, dass nach der Migration der Zentrale sich ein Benutzer aus Schule2 an Schule1 anmelden konnte.

Problematisch an dem Überschreiben könnte sein, dass in der Zentrale dann nur noch ein DC eingetragen wird, es aber mehrere DCs geben kann.

Vorschlag ist:

Die Schul DCs registrieren die SRV Records für ldap und kerberos nicht mehr. Dafür sollte in ucs-school-slave eine UCR Variable gesetzt werden und die Einträge sollten aus dem LDAP entfernt werden. In den Samba Paketen sollte diese Variable ausgewertet werden. In 3.0-2 sollten dann zusätzlich univention-heimdal und univention-ldap die Variable auswerten.

Die Schul DCs überschreiben dann per Connector die SRV Records für ldap und kerberos.
Comment 3 Stefan Gohmann univentionstaff 2012-06-21 09:20:01 CEST
Lokal sind die Punkte jetzt umgesetzt. Problematisch ist jetzt, wenn die SRV Records für LDAP, beispielsweise _ldap._tcp.dc._msdcs ,nicht global registriert werden, dann kann der Connector die Einträge für das lokale S4 DNS auch nicht überschreiben.

Nachdem samba_dnsupdate auf dem Slave ausgeführt wird, sind diese Einträge vorhanden.
Comment 4 Stefan Gohmann univentionstaff 2012-06-24 12:23:33 CEST
Patches sind eingespielt, nach dem Update des Masters kann man sich aber immer noch mit Schülern aus schule2 am DC der schule1 anmelden.

In den folgenden SRV Records wird der Master mit aufgeführt:

root@slave1743:~# host -al deadlock174.local | grep SRV | grep master
_gc._tcp.deadlock174.local. 900 IN      SRV     0 100 3268 master1741.deadlock174.local.
_kerberos-adm._tcp.deadlock174.local. 900 IN SRV 0 100 88 master1741.deadlock174.local.
_ldap._tcp.gc._msdcs.deadlock174.local. 900 IN SRV 0 100 3268 master1741.deadlock174.local.
_domaincontroller_master._tcp.deadlock174.local. 900 IN SRV 0 0 0 master1741.deadlock174.local.
_gc._tcp.default-first-site-name._sites.deadlock174.local. 900 IN SRV 0 100 3268 master1741.deadlock174.local.
_ldap._tcp.default-first-site-name._sites.deadlock174.local. 900 IN SRV 0 100 389 master1741.deadlock174.local.
_kerberos._tcp.default-first-site-name._sites.deadlock174.local. 900 IN SRV 0 100 88 master1741.deadlock174.local.
_ldap._tcp.default-first-site-name._sites.gc._msdcs.deadlock174.local. 900 IN SRV 0 100 3268 master1741.deadlock174.local.
_ldap._tcp.default-first-site-name._sites.dc._msdcs.deadlock174.local. 900 IN SRV 0 100 389 master1741.deadlock174.local.
_kerberos._tcp.default-first-site-name._sites.dc._msdcs.deadlock174.local. 900 IN SRV 0 100 88 master1741.deadlock174.local.
_ldap.5739c4fb-dfbd-46e6-9f71-fa2c31923492.domains._msdcs.deadlock174.local. 900 IN SRV 0 100 389 master1741.deadlock174.local.
Comment 5 Stefan Gohmann univentionstaff 2012-06-24 12:30:48 CEST
Im Samba 4 Debug auf dem DC Slave ist zu sehen, dass der Windows Client die SRV Records aus der Default Site anfragt:

  ldb_request BASE dn=DC=_ldap._tcp.default-first-site-name._sites.dc._msdcs.deadlock174.local,CN=MicrosoftDNS,CN=System,DC=deadlock174,DC=local filter=(objectClass=dnsZone)

Durch ein Überschreiben der SITE Konfiguration per Connector sollte die Verbindung des Windows Clients zum Master unterbunden werden können.
Comment 6 Stefan Gohmann univentionstaff 2012-06-25 08:27:16 CEST
Auf dem Master werden jetzt die SRV Records aus OpenLDAP ignoriert. Allerdings verwendet samba_dnsupdate per Default Kerberos. Ohne vorkonfiguriertes DNS (SRV Records für Kerberos) können allerdings keine Kerberos Tickets angefordert werden.

Das einfachste dürfte sein samba_dnsupdate um einen local-Modus zu erweitern.
Comment 7 Stefan Gohmann univentionstaff 2012-07-25 07:01:15 CEST
*** Bug 27398 has been marked as a duplicate of this bug. ***
Comment 8 Stefan Gohmann univentionstaff 2012-07-25 15:03:15 CEST
Patch für die Metapakete hinzugefügt. Die Änderungen wurden auch direkt im Verzeichnis ucs-3.0/ucs-school/ucs-school-metapackage durchgeführt.

YAML Datei hinzugefügt.

Noch nicht implementiert ist: Bug #28065

Durch die Änderungen stimmen ansonsten die DNS Daten, auf einem Schul DC haben die SRV Records die passenden Werte und in der Zentrale stimmen die Werte auch, bis auf Bug #28065.
Comment 9 Arvid Requate univentionstaff 2012-07-30 17:40:34 CEST
Es gab noch einen Typo im Wert einer UCR-Variable (Doppelter Underscore __gc._tcp). Da dieser das ucs-school spezifische Paket betrifft lässt er sich schlecht durch Bug 28065 fixen. Daher habe ich das jetzt angepasst und gebe diesen Bug dann für diese spezifische Änderung weiter zur QA an Felix.
Gefixt in:
 * 4.0.37-1-ucsschool-errata/10_ucsschool-bug_27395.patch
 * ucs-3.0/ucs-school/ucs-meta-package
 * ucsschool-errata/2012-07-25-ucs-school-metapackage.yaml


Sonst ist hier alles Verified:
 * Windows Client joinen gegen den DC, der per DNS eingetragen ist.
 * Schüler der Schule1 können sich nur an Windows Clients anmelden,
   die in Schule1 gejoined worden sind.
 * Zugriff auf Samba-Dienste in der Zentrale sind weiter für alle Schüler
   möglich.
 * In Gruppenrichtlinienverwaltung und AD Benutzer und Computer ist
   nur der lokale DC zur Auswahl aufgefürt. Das gilt auch für die Zentrale.
 * YAML-Advisory OK

===============================================================================
VERIFIED im Detail:

> Die Schul DCs registrieren die SRV Records für ldap und kerberos nicht mehr.
> Dafür sollte in ucs-school-slave eine UCR Variable gesetzt werden und die
> Einträge sollten aus dem LDAP entfernt werden. In den Samba Paketen sollte
> diese Variable ausgewertet werden.

1.a) Die Schul-DCs setzen jetzt in der neuen VERSION=3 des ucs-school-slave Joinscripts die beiden UCR Variablen

  dns/register/srv_records/kerberos?false
  dns/register/srv_records/ldap?false

1.b) Falls diese UCR-Variablen dann nicht den Wert true haben wird das lokale System aus den folgenden SRV-Records im UCS-LDAP entfernt:
  _kpasswd._tcp  und _kpasswd._udp
  _kerberos._tcp und _kerberos._udp
  _kerberos._tcp.dc._msdcs
sowie
  _ldap._tcp port 389 und 7389
  _ldap._tcp.pdc._msdcs
  _ldap._tcp.dc._msdcs

1.c) Auch in /usr/share/univention-samba4/scripts/setup-dns-in-ucsldap.sh werden diese beiden UCR-Variablen ausgewertet, um zu entscheiden, ob diese SRV-Records im UDM angelegt werden sollen. Zusätzlich werden dort folgende SRV-Records dann _nicht_ in UDM angelegt:

  _ldap.$Partition_GUID.domains._msdcs
  _ldap._tcp.$Domain_GUID.domains._msdcs

  _ldap._tcp.$sitename._sites
  _ldap._tcp.$sitename._sites.dc._msdcs
  _kerberos._tcp.$sitename._sites
  _kerberos._tcp.$sitename._sites.dc._msdcs
  _gc._tcp.$sitename._sites
  _ldap._tcp.$sitename._sites.gc._msdcs

Die letzten 6 Einträge werden statt dessen

 a) vom S4 Connector bei Synchronisation von Veränderungen nach Samba4 gemäß UCR-Vorgabe umgeschrieben (siehe Punkt 2.a weiter unten)

 b) per samba_dnsupdate ins Samba4 Verzeichis geschrieben (siehe Punkt 2.b weiter unten)


Unverändert werden weiterhin folgende DNS-Einträge angelegt (siehe Bug 28065):

  CNAME  $NTDS_objectGUID._msdcs
  A      gc._msdcs
  SRV    _gc._tcp
  SRV    _gc._tcp.$sitename._sites



> In 3.0-2 sollten dann zusätzlich univention-heimdal und univention-ldap die Variable auswerten.

* Im Moment unklar was damit gemeint war.



> Die Schul DCs überschreiben dann per Connector die SRV Records für ldap und
kerberos.

2.a) Variablen der Familie connector/s4/mapping/dns/srv_record/*/location werden beim Update per postinst sowie per joinscript so gesetzt, dass der S4 Connector instruiert wird, bei der Synchronisation von den entsprechenden SRV-Records nur die per UCR vorgegebenen Werte in das Samba 4 Verzeichnis zu schreiben.

2.b) Zusätzlich wird die UCR variable samba4/join/dnsupdate?true gesetzt und im Joinscript von univention-samba4-dns ausgewertet. Falls sie auf true steht, wird durch Aufruf von samba_dnsupdate --local dafür gesorgt, dass die notwendigen SRV records in das lokale Samba 4 Verzeichnis geschrieben werden.

Note: Die aktuelle Lösung funktioniert nur für Neuinstallationen, da zum einen die existierenden Einträge im Samba 4 Verzeichnis nicht angepasst werden und zum andern der S4 Connector nach Setzen der UCR-Variablen nicht neu gestartet wird. Aktuell ist das OK so, bei Bedarf wird es hierzu einen separaten Bug geben.



> Durch ein Überschreiben der SITE Konfiguration per Connector sollte die
> Verbindung des Windows Clients zum Master unterbunden werden können.

* Für "Default-First-Site-Name" werden folgende SRV-Records analog zu 2.a) per UCR vorgegeben vom S4 Connector bei Synchronisation in das Samba 4 Verzeichnis umgeschrieben:

_ldap._tcp.default-first-site-name._sites
_ldap._tcp.default-first-site-name._sites.dc._msdcs
_kerberos._tcp.default-first-site-name._sites
_kerberos._tcp.default-first-site-name._sites.dc._msdcs
_ldap._tcp.default-first-site-name._sites.gc._msdcs
_gc._tcp.default-first-site-name._sites

Dadurch hängt die Antwort auf die Frage nach dem Zuständigen DC für die "Default-First-Site-Name" davon ab, welchen DC ein Windows-Client (per DNS oder Netbios) fragt. Das funktioniert im Test auch. Schüler aus "schule1" können Sich nur dort und nicht an "schule2" anmelden. Diese Art der "relativen" Default-Site Konfiguration scheint auch gweisse Vorteile gegenüber einer IP-Network basierten Zuordung von Windows-Clients zu Sites zu haben.


> Auf dem Master werden jetzt die SRV Records aus OpenLDAP ignoriert. Allerdings
> verwendet samba_dnsupdate per Default Kerberos. Ohne vorkonfiguriertes DNS
> (SRV Records für Kerberos) können allerdings keine Kerberos Tickets
> angefordert werden.
> Das einfachste dürfte sein samba_dnsupdate um einen local-Modus zu erweitern.

* OK.

> Patch für die Metapakete hinzugefügt. Die Änderungen wurden auch direkt im
Verzeichnis ucs-3.0/ucs-school/ucs-school-metapackage durchgeführt.

* OK 3.0-0-0-ucs/4.0.37-1-ucsschool-errata/10_ucsschool-bug_27395.patch
  stimmt mit ucs-3.0/ucs-school überein.
Comment 10 Felix Botner univentionstaff 2012-07-31 12:39:45 CEST
Das doppelte "_" wurde entfernt:

-> grep -r '__' ucs-school-metapackage/
ucs-school-metapackage/debian/changelog:  * fix typo __gc._tcp (Bug #27395)

-> grep '__' ucs-school-metapackage/3.0-0-0-ucs/4.0.37-1-ucsschool-errata/10_ucsschool-bug_27395.patch

... univention-install ...
Multifile: /etc/samba/smb.conf
Create connector/s4/mapping/dns/srv_record/_ldap._tcp.i386.de/location
Create connector/s4/mapping/dns/srv_record/_ldap._tcp.pdc._msdcs.i386.de/location
Create connector/s4/mapping/dns/srv_record/_ldap._tcp.dc._msdcs.i386.de/location
Create connector/s4/mapping/dns/srv_record/_ldap._tcp.gc._msdcs.i386.de/location
Create connector/s4/mapping/dns/srv_record/_gc._tcp.i386.de/location
Create connector/s4/mapping/dns/srv_record/_kerberos._tcp.i386.de/location
Create connector/s4/mapping/dns/srv_record/_kerberos._udp.i386.de/location
Create connector/s4/mapping/dns/srv_record/_kerberos-adm._tcp.i386.de/location
Create connector/s4/mapping/dns/srv_record/_kerberos._tcp.dc._msdcs.i386.de/location
Create connector/s4/mapping/dns/srv_record/_kpasswd._tcp.i386.de/location
Create connector/s4/mapping/dns/srv_record/_kpasswd._udp.i386.de/location
Create connector/s4/mapping/dns/srv_record/_kerberos._tcp.default-first-site-name._sites.dc._msdcs.i386.de/location
Create connector/s4/mapping/dns/srv_record/_kerberos._tcp.default-first-site-name._sites.i386.de/location
Create connector/s4/mapping/dns/srv_record/_ldap._tcp.default-first-site-name._sites.gc._msdcs.i386.de/location
Create connector/s4/mapping/dns/srv_record/_ldap._tcp.default-first-site-name._sites.dc._msdcs.i386.de/location
Create connector/s4/mapping/dns/srv_record/_ldap._tcp.default-first-site-name._sites.i386.de/location
Create connector/s4/mapping/dns/srv_record/_gc._tcp.default-first-site-name._sites.i386.de/location
Restarting univention-directory-listener daemon
-> ucr search __
Comment 11 Janek Walkenhorst univentionstaff 2012-11-09 15:59:21 CET
http://errata.univention.de/ucsschool-errata6.html