DNS-Probleme in älteren Samba/AD Domänen

samba-ad-dc
dns
ucs-4
samba-dnsupdate
german
samba-ad
samba4

#1

DNS-Probleme in Samba/AD Domänen

falls DNS-Einträge nicht aufgelöst werden können oder Adressen von Windows-Client-Systemen im DNS nicht aktuell zu sein scheinen, kann dies unterschiedliche Ursachen haben. Um den Ursprung des Problems einzugrenzen, ist es sinnvoll, im ersten Schritt die Datei ‘/var/log/daemon.log’ zu prüfen. Beim Neustart des DNS-Server-Prozesses bind9 gibt dieser dort Meldungen darüber aus, welche Zonen-Daten in Samba/AD gefunden wurden und welche er verwendet. Microsoft hat im Laufe der AD-Versionen zwei unterschiedliche Speicherorte für DNS-Zonen im Active Directory verwendet. In UCS-Domänen mit Samba/AD Domänencontrollern, die vor UCS 3.1 installiert wurden, wird der alte Speicherort (umgangssprachlichpre-W2k3 genannt) verwendet. In UCS-Domänen die mit UCS 3.1 oder später installiert worden sind, werden hingegen andere Speicherorte in Samba/AD verwendet. Bei Domänen, die von UCS 3.1 aktualisiert wurden, und wo dann im Laufe der Zeit neue UCS-Server installiert wurden, kann es zu Problemen kommen, falls der S4-Connector einen anderen Speicherort berücksichtigt als der bind9 DNS-Server. In speziellen Fällen kann es sogar sein, dass DNS-Records aus der _msdcs Sub-Zone nicht mehr vom DNS-Server aufgelöst werden können, obwohl sie in der Zone vorhanden sind.

Wenn man DNS-Probleme hat und beim Neustart von bind9 sich folgende Zeilen im ‘/var/log/daemon.log’ findet, dann ist es sinnvoll in die Analyse unten einzusteigen:

Jan 18 20:00:48 ucs-srv1 named[7097]: samba_dlz: pre-W2k3 zone found
Jan 18 20:00:48 ucs-srv1 named[7097]: samba_dlz: Ignoring dnsZone _msdcs.domain.intranet

Falls sich solche Zeilen nicht finden, dann ist dieser Artikel nicht relevant.

Analyse

Nun sollte man im DNS-Backend, also im Samba/AD, die DNS-Zonen und ~Einträge prüfen

univention-s4search --cross-ncs objectClass=dnsZone dn

Hier kann es nun vorkommen, dass beispielsweise die Reverse-Zone unter CN=MicrosoftDNS,CN=System,DC=domaene,DC=intranet liegt - es können aber auch einfach nur verschiedene Einträge (z.B. Service-Records) sein. Diese müssen nun in den korrekten Abschnitt im DNS verschoben werden.

Lösung

Zunächst erzeugt man aus OpenLDAP heraus ein Backup

univention-ldapsearch -LLLo ldif-wrap=no -b cn=dns,$( ucr get ldap/base ) >ucs_dns_full.ldif

Dann löscht man die fehlerhaften Einträge aus Samba/AD

ldbedit -H /var/lib/samba/private/sam.ldb --cross-ncs

Dadurch werden zwar auch die Einträge, über die Replikation, im OpenLDAP entfernt, dafür haben wir aber oben das Backup angelegt welches wir jetzt wieder importieren

ldapadd -h localhost -p 7389 -D "cn=admin,$( ucr get ldap/base )" -y /etc/ldap.secret -f ucs_dns_full.ldif

Jetzt werden die Einträge auch wieder in Samba/AD repliziert, diesmal aber an die richtige Stelle.
Der Neustart des bind9 sollte jetzt die beiden oben erwähnten Zeilen nicht mehr schreiben.