LDAP és DNS együttműködése

PowerDNS LDAP backenddel

Ha azt kérdezik: milyen alternatívák vannak a BIND (Buggy Internet Name Domain) helyett, akkor a számos esetben a PowerDNS-t szokott szóba jönni. Ennek oka, hogy szemben a BIND-al, a Power DNS tervezésekor rögtön a backend alapú megközelítést alkalmazták, azaz a adatbázis számos különböző forrásból származhat (MySQL, PostgreSQL, BIND Zona állományok, LDAP stb.). Most az LDAP backenddel felszerelt PowerDNS konfigurálását és használatát mutatom be röviden.

Debian SID rendszeren a rendszer telepítése az alábbi paranccsal történik:

apt-get install pdns-backend-ldap

A teleptő néhány egyszerű kérdést tesz fel a szerver konfigurációjára. Telepítés után az /etc/powerdns/pdns.conf állományban és a /etc/powerdns/pdns.d könyvtárban találhatóak a konfigurációs állományok. Az LDAP backend konfigurációjához az /etc/powerdns/pdns.d/pds.local állományba írjuk a következőket:

launch=ldap
ldap-host=127.0.0.1:389
ldap-starttls=no
ldap-basedn=o=PDNS,dc=ldaptest,dc=hu
ldap-binddn=o=PDNS,dc=ldaptest,dc=hu
ldap-secret=secret
ldap-method=tree

A PowerDNS az ldap-basedn megadott csomópont alatt fogja keresni a bejegyzéseket, miután a ldap-binddn és a ldap-secret adatok segítségével csatlakozott és azonosította magát a ldap-host-ben megadott LDAP szervernél. A ldap-method értéke lehet simple, tree vagy strict. A simple és strict esetén az associatedDomain attribútumot használja a név beazonosítására, míg a tree esetén a domain nevet leképezi az LDAP fá stuktúrára, azaz n1.example.test esetén az dc=n1,dc=example,dc=test,o=PDNS,dc=ldaptest,dc=hu bejegyést fogja keresni.

A PowserDNS alapértelmezésben a Cosine sémát használja, ami megtalálható az OpenLDAP csomagban /etc/ldap/scheme/cosine.schema néven. Az LDAP adatbázisban a fenti konfiguráció estén az alábbi bejegyzéseket tegyük, ami meg fog felelni az előző fejezetben bemutatott BIND zóná állománynak:

dn: dc=test,o=PDNS,dc=ldaptest,dc=hu
objectClass: top
objectClass: dcObject
objectClass: domainRelatedObject
objectClass: domain
objectClass: dNSDomain
dc: test
associatedDomain: test
nSRecord: localhost
sOARecord: localhost root@localhost 1 604800 86400 2419200 86400

dn: dc=example,dc=test,o=PDNS,dc=ldaptest,dc=hu
objectClass: top
objectClass: dcObject
objectClass: domainRelatedObject
objectClass: domain
objectClass: dNSDomain
dc: example
associatedDomain: example.test
nSRecord: localhost
sOARecord: localhost root@localhost 1 604800 86400 2419200 86400

dn: dc=n1,dc=example,dc=test,o=PDNS,dc=ldaptest,dc=hu
objectClass: top
objectClass: dcObject
objectClass: domainRelatedObject
objectClass: domain
objectClass: dNSDomain
dc: n1
associatedDomain: n1.example.test
aRecord: 1.1.1.1

Fontos, hogy a domain komponensek esetén legalább egy SOA rekord legyen definiálva.

A PowerDNS tartalmaz egy zone2ldap segédprogramot, amivel a BIND felhasználók rögtön PowerDNS kompatibilis LDIF állományokat hozhatnak létre a meglévő zóna állományaikból. Továbbá a csomagban találunk egy dnsdomain2.scheme nevű állományt is. Ennek oka pedig az, hogy a Cosine séma csak a legalapvetőbb DNS rekord típusokat tartalmazza: A, MD, MX, NS, SOA, CNAME. Ez számos esetben kevésnek bizonyulhat (pl.: IPv6 használata esetén). Ekkor vehetjük igénybe az ebben az állományban definált dNSDomain2 objectclass-ot.

LDAPDNS

A tisztesség úgy kívánja, hogy megemlítsük az LDAPDNS projektet is. Ennek jelenleg stabil 2.0x változata egy kicsiny és egyszerű DNS szerver ami több különféle DNS-hez kapcsolódó LDAP sémából tud dolgozni (Cosine, dNSZone, MS DNS Active Directory sémája stb.). Az ldapdns csomag telepítése után az /etc/ldapdns.conf állományban találhatjuk a konfigurációs beállításokat. A példa kedvért a PowerDNS-nél használt adatbázist az alábbi konfigurációs bejegyzésekkel tudjuk használni:

DNS="."
LDAP_HOST="127.0.0.1"
LDAP_AUTH="simple"
LDAP_AUTH_NAME="o=PDNS,dc=ldaptest,dc=hu"
LDAP_SUFFIX="o=PDNS,dc=ldaptest,dc=hu"
SCHEMA=cosine

A csatlakozáshoz szükséges jelszót a /var/lib/ldapdns/password állományban fogja keresni.

Sajnos az LDAPDNS egyszerűsége ellenére teljesítményben meg sem közelíti akár a BIND akár a PowerDNS megoldásokat. Fejlesztése is leállt és a 2003-ban beharangozott, javított 3-as változat sosem került stabil állapotba.

Szalai Ferenc | 2006, június 5 - 15:45 | |