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.