DNS Eintrag via CLI entfernen?

Hallo,

leider habe ich den Titel etwas unscharf wählen müssen, weil mir selbst nicht klar ist, wo es hier noch klemmt.
Es ist schon eine ganze Weile her, aber ich versuche mal, die Situation zu rekonstruieren, die zur aktuellen Situation führte.

Ich wollte vor einer ganzen Weile via GUI die Auflösung von duckduckgo.com lokal erledigen lassen, um eine Umbiegeaktion (safe.duckduckgo.com) zu versuchen. Das hatte nicht wie gewollt funktioniert und ich habe den Eintrag wieder aus dem LDAP entfernt. Ich vermute, ich habe damals nicht die “zugehörigen Objekte” entfernt, jedenfalls meckert mir seitdem die Replication das Log voll.

03.12.2018 10:05:54,491 LDAP        (PROCESS): sync from ucs:   Resync rejected file: /var/lib/univention-connector/s4/1526474205.464085
03.12.2018 10:05:54,495 LDAP        (PROCESS): sync from ucs: [           dns] [    delete] DC=@,DC=duckduckgo.com,CN=MicrosoftDNS,DC=DomainDnsZones,DC=eusib,DC=intranet
03.12.2018 10:05:54,524 LDAP        (WARNING): sync failed, saved as rejected
	/var/lib/univention-connector/s4/1526474205.464085
03.12.2018 10:05:54,524 LDAP        (WARNING): Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.7/univention/s4connector/__init__.py", line 909, in __sync_file_from_ucs
    if ((old_dn and not self.sync_from_ucs(key, mapped_object, pre_mapped_ucs_dn, unicode(old_dn, 'utf8'), old, new)) or (not old_dn and not self.sync_from_ucs(key, mapped_object, pre_mapped_ucs_dn, old_dn, old, new))):
  File "/usr/lib/pymodules/python2.7/univention/s4connector/s4/__init__.py", line 2757, in sync_from_ucs
    self.property[property_type].con_sync_function(self, property_type, object)
  File "/usr/lib/pymodules/python2.7/univention/s4connector/s4/dns.py", line 1665, in ucs2con
    s4_zone_delete(s4connector, object)
  File "/usr/lib/pymodules/python2.7/univention/s4connector/s4/dns.py", line 884, in s4_zone_delete
    res = s4connector.lo_s4.lo.delete_s(zone_dn)
  File "/usr/lib/python2.7/dist-packages/ldap/ldapobject.py", line 333, in delete_s
    return self.delete_ext_s(dn,None,None)
  File "/usr/lib/python2.7/dist-packages/ldap/ldapobject.py", line 326, in delete_ext_s
    resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all=1,timeout=self.timeout)
  File "/usr/lib/python2.7/dist-packages/ldap/ldapobject.py", line 514, in result3
    resp_ctrl_classes=resp_ctrl_classes
  File "/usr/lib/python2.7/dist-packages/ldap/ldapobject.py", line 521, in result4
    ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)
  File "/usr/lib/python2.7/dist-packages/ldap/ldapobject.py", line 106, in _ldap_call
    result = func(*args,**kwargs)
NOT_ALLOWED_ON_NONLEAF: {'info': '00002015: subtree_delete: Unable to delete a non-leaf node (it has 1 children)!', 'desc': 'Operation not allowed on non-leaf'}
UCS rejected

    1:   UCS DN: zoneName=duckduckgo.com,cn=dns,dc=eusib,dc=intranet
          S4 DN: dc=@,dc=duckduckgo.com,cn=microsoftdns,dc=domaindnszones,DC=eusib,DC=intranet
         Filename: /var/lib/univention-connector/s4/1526474205.464085

Ich bin überhaupt nicht fit, in Zusammenhängen zwischen openLDAP und SAMBA.
Hat vielleicht jemand eine Idee, wie ich am besten weiter vorgehen sollte?

Ich hatte überlegt, einen manuellen Löschversuch zu unternehmen, etwa:

ldbdel -H /var/lib/samba/private/sam.ldb DC=duckduckgo.com,CN=MicrosoftDNS,DC=DomainDnsZones,DC=eusib,DC=intranet

Liebe Grüße
Christian

Huhu,

ja, ein manueller Löschversuch auf der Samba-Seite ist das, was in dem Moment nötig ist. Der von Ihnen gezeigte Befehl wird vermutlich nicht exakt funktionieren, weil das Objekt noch Unterobjekte besitzt. Glücklicherweise kann ldbdel aber auch rekursiv löschen, wenn man den Parameter -r bzw. --recursive ergänzt.

Anschließend kann das Reject-File mit /usr/share/univention-s4-connector/remove_ucs_rejected.py zoneName=duckduckgo.com,cn=dns,dc=eusib,dc=intranet entfernt werden.

Das Ganze ist auch als Bug bekannt.

Wow! Das war es. Danke. :slight_smile:

Liebe Grüße…

Mastodon