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

BIND és az LDAP sdb

A BIND 9 a 9.1 változat óta tartalmazza a forrásfa contrib/sdb/ldap alkönyvtárában Stig Venaas kiegészítését. Az ugyanott található leírás (INSTALL.ldap) bemutatja, hogyan módosíthatjuk a forrást és fordíthatjuk újra a BIND 9 forrásból. Ez a kiegészítés a sdb azaz a simple database backend API-ra épül, aminek segítségével nem csak LDAP de más tetszőleges adatbázisból dolgozó backend illeszthető a BIND9-hez.
Debian SID rendszerhez készítettem csomagot, amint az alábbi repository-ból lehet elérni

deb http://www.gluon.hu/debian/unstable ./

Csomagadatbázis frissítése után, telepítsük a bind9-ldap nevű csomagot.

Ez a kiegészítés saját, DNSZone nevű LDAP sémát használ. Ezt kell betöltenünk az LDAP-szerverbe. OpenLDAP esetén ezt úgy érhetjük el, hogy a séma állományt dnszone.schema néven az /etc/ldap/schema könyvtárba másoljuk és az /etc/ldap/slapd.conf állományt kiegészítjük az alábbi sorral:

include     /etc/ldap/schema/dnszone.schema

majd újraindítjuk az LDAP-szervert.

A zóna definícióját továbbra is egy állományba kell rögzítenünk. A példa kedvéért az example.test zónát fogjuk kezelni ezzel a módszerrel. Ehhez hozzunk létre az alábbi bejegyzést a BIND fő konfigurációs állományában (named.conf):

zone "example.test" {
     type master;
     database "ldap ldap://localhost/dc=example,dc=test,o=DNS,dc=ldaptest,dc=hu \
                           ????!bindname=o=DNS%2cdc=ldaptest%2cdc=hu,!x-bindpw=secret 17800";
};

Mint látható a hagyományos file sor helyett most egy database sor határozza meg a zóna adatok elérhetőségét (a fenti példában csak didaktikai okokból lett két sorba írva valójában egybe kell). Ez három részből áll. Az első ldap az adatbázis backend típusát határozza meg. A második egy URL és meghatározza az LDAP fának a zónához tartozó részét ill. a kapcsolódáshoz szükséges bind nevet és jelszót. Természetesen LDAPS protokol használatára is van lehetőség. Ez alatt a fa alatt fogja keresni a zóna adatokat a DNS. A harmadik pedig az alap értelmezett TTL.

Az LDAP adatbázisba az alábbi bejegyzéseket hozzuk létre:

dn: relativeDomainName=@,dc=example,dc=test,o=DNS,dc=ldaptest,dc=hu
objectClass: top
objectClass: dNSZone
zoneName: example.test
relativeDomainName: @
dNSClass: IN
sOARecord: localhost. root.localhost. 1 604800 86400 2419200 86400
dNSTTL: 17900
nSRecord: localhost.

dn: relativeDomainName=n1,dc=example,dc=test,o=DNS,dc=ldaptest,dc=hu
objectClass: top
objectClass: dNSZone
zoneName: example.test
relativeDomainName: n1
dNSClass: IN
aRecord: 1.1.1.1

ami megfelel az alábbi hagyományos zóna definíciónak:

@       IN      SOA     localhost. root.localhost. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                          86400 )       ; Negative Cache TTL
;
@                         IN      NS      localhost.
n1                         IN      A        1.1.1.1

Természetesen a A rekord mellett lehetőség van leggyakrabban használt rekordtípusok (CNAME, AAAA, NS, MX, PTR stb. ) használatára is. Ezek segítségével könnyen megoldható például a reverz zónák kezelése is.

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