Hallo an alle,
nach dem die Integration von DNS in LDAP hier schon ausführlich beschrieben wurde, will ich nun mal ein Anleitung für die Integration das DHCP-Servers in LDAP geben.
Warum sollte man das tun? Für den kleine DHCP-Server zu Hause ist das vielleicht nicht notwendig, da sich dort nicht viel ändert, aber in größeren Bereichen mach das ganze schon Sinn. Aber vielleicht will der eine oder andere das ganze ja auch mal zu Hause testen.
Ab Suse 9.3 ist der DHCP-Server schon für den Einsatz mit LDAP compiliert.
http://kalamazoolinux.org/projects/awilliam/ldap.html
Gibt es aber auch für andere Versionen die entsprechenden RPM-Pakete. Hier findet ihr auch die benötigte Schemendatei.
Nach dem ihr nun die Schemendatei nach /etc/openldap/schema kopiert habt, müsst ihr in der slabp.conf die folgenden Einträge Ergänzen:
Anschließend müsst ihr mit "slapdindex" die Indexdateinen erstellen und den LDAP-Server neu starten.
Jetzt will natürlich keiner seine dhcpd.conf per Hand in den LDAP übertragen, muss auch keiner ;-) im Verzeichnis /usr/share/doc/packages/dhcp-server/ gibt es das Perl-Skript "dhcp-conf-to-ldap.pl" , das die Konfiguration ausließt und als LDIF-Datei Speicher. Dazu das Skript so aufrufen:
Im nächsten Schritt muss nun ein Benutzer im LDAP erzeugt werden mit dem sich der dhcpd am LDAP anmelden kann. Am einfachsten ist es mit dem phpldapadmin. Für den Benutzer reicht ein "sipmpleSecurityObject" Das Objekt hat nur ein Namen und ein Passwort. Der Vorteil ist, mit dem Benutzer kann sich dann niemand anmelden.
Jetzt ist der LDAP so weit. Nun müsst ihr nurnoch die Datei /etc/dhcpd.conf bearbeiten. Die wird jetzt sehr kurz, da hier nur noch die Verweise auf den LDAP benötigt werden. Hier mal ein Beispiel:
In der Log-Datei werden die Meldungen beim Starten des DHCP-Servers abgelegt.
Das war schon alles. Wenn ihr jetzt euren DHCP Server startet wird er sich die Informationen aus dem LDAP ziehen.
ACHTUNG wenn ihr mit erweiterten ACL'S im LDAP arbeitet, ist es wichtig die Rechte für die DHCP-Objekte zu setzen. Es gibt, wenn ihr die Konfiguration mittels dem Perl-Skript übernommen habt, einmal einen Speziellen "cn=DHCP Config" Eintrag unter dem sich alle Konfigurationen und Reservierungen befinden UND einen Eintrag für den DHCP-Server selber. Auf beiden muss der dhcp-user das read-Recht haben.
Die folgende Fehlermeldung deutet auf fehlende Rechte hin:
Als erstes der LDIF Eintrag für den DHCP-Server. Dieser Eintrag wir beim Start des DHCP-Servers als erstes gesucht. Der Eintrag verweist auf das eigentliche Konfigurationsobjekt:
Jetzt die Globalen Parameter:
Nun die Einträge für den zu vergebenen Bereich:
Jetzt noch ein Beispiel für eine Reservierung:
So nun viel Spaß damit. Wer das ganze mal ausprobiert hat kann ja mal kurz schreiben ob es nach der Anleitung geklappt hat.
Gruß
Stefan
nach dem die Integration von DNS in LDAP hier schon ausführlich beschrieben wurde, will ich nun mal ein Anleitung für die Integration das DHCP-Servers in LDAP geben.
Warum sollte man das tun? Für den kleine DHCP-Server zu Hause ist das vielleicht nicht notwendig, da sich dort nicht viel ändert, aber in größeren Bereichen mach das ganze schon Sinn. Aber vielleicht will der eine oder andere das ganze ja auch mal zu Hause testen.
Ab Suse 9.3 ist der DHCP-Server schon für den Einsatz mit LDAP compiliert.
Auf der Seite:fs1:~ # ldd /usr/sbin/dhcpd
linux-gate.so.1 => (0xffffe000)
libldap-2.2.so.7 => /usr/lib/libldap-2.2.so.7 (0x40024000)
liblber-2.2.so.7 => /usr/lib/liblber-2.2.so.7 (0x40056000)
libc.so.6 => /lib/tls/libc.so.6 (0x40063000)
libresolv.so.2 => /lib/libresolv.so.2 (0x4017c000)
libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x4018f000)
libssl.so.0.9.7 => /usr/lib/libssl.so.0.9.7 (0x401a4000)
libcrypto.so.0.9.7 => /usr/lib/libcrypto.so.0.9.7 (0x401d5000)
/lib/ld-linux.so.2 (0x40000000)
libdl.so.2 => /lib/libdl.so.2 (0x402c8000)
http://kalamazoolinux.org/projects/awilliam/ldap.html
Gibt es aber auch für andere Versionen die entsprechenden RPM-Pakete. Hier findet ihr auch die benötigte Schemendatei.
Nach dem ihr nun die Schemendatei nach /etc/openldap/schema kopiert habt, müsst ihr in der slabp.conf die folgenden Einträge Ergänzen:
Die erste Zeile kommt in den Oberen Teil der slapd.conf die beiden anderen Zeilen müssen in den Unteren Teil der slapd.conf, den Datenbankteil.include /etc/openldap/schema/dhcp.schema
index dhcpHWAddress eq
index dhcpClassData eq
Anschließend müsst ihr mit "slapdindex" die Indexdateinen erstellen und den LDAP-Server neu starten.
Jetzt will natürlich keiner seine dhcpd.conf per Hand in den LDAP übertragen, muss auch keiner ;-) im Verzeichnis /usr/share/doc/packages/dhcp-server/ gibt es das Perl-Skript "dhcp-conf-to-ldap.pl" , das die Konfiguration ausließt und als LDIF-Datei Speicher. Dazu das Skript so aufrufen:
Jetzt sind alle benötigten Infos aus eurer dhcpd.conf in der LDIF-Datei. Jetzt könnt ihr die LDIF- Datei in den LDAP-Baum übertragen, das geht mit dem Kommando:./dhcpd-conf-to-ldap.pl < /etc/dhcpd.conf > /root/dhcpd.ldif
Code:
ldapadd -x -h localhost -D "cn=Manager,dc=lokal,dc=de" -W -f /root/dhcpd.ldif
Jetzt ist der LDAP so weit. Nun müsst ihr nurnoch die Datei /etc/dhcpd.conf bearbeiten. Die wird jetzt sehr kurz, da hier nur noch die Verweise auf den LDAP benötigt werden. Hier mal ein Beispiel:
Alle Einträge sind selbsterklärend, bis auf den Eintrag "ldap-method" dort gibt es den Wert "static" die Konfiguration wird einmal beim starten des LDAP-Servers gelesen oder "dynamic" dann wir bei jedem DHCP-Request der LDAP durchsucht.ldap-server "fs1.lokal.de";
ldap-port 389;
ldap-username "uid=dhcp-user,ou=users,dc=lokal,dc=de";
ldap-password "fs1-dhcp";
ldap-base-dn "dc=lokal,dc=de";
ldap-method dynamic;
ldap-debug-file "/var/log/dhcp-ldap.log";
In der Log-Datei werden die Meldungen beim Starten des DHCP-Servers abgelegt.
Das war schon alles. Wenn ihr jetzt euren DHCP Server startet wird er sich die Informationen aus dem LDAP ziehen.
ACHTUNG wenn ihr mit erweiterten ACL'S im LDAP arbeitet, ist es wichtig die Rechte für die DHCP-Objekte zu setzen. Es gibt, wenn ihr die Konfiguration mittels dem Perl-Skript übernommen habt, einmal einen Speziellen "cn=DHCP Config" Eintrag unter dem sich alle Konfigurationen und Reservierungen befinden UND einen Eintrag für den DHCP-Server selber. Auf beiden muss der dhcp-user das read-Recht haben.
Die folgende Fehlermeldung deutet auf fehlende Rechte hin:
Hier nun mal eine Beispielkonfiguration:Sep 24 14:01:53 fs1 dhcpd: Error: Cannot find LDAP entry matching (&(objectClass=dhcpServer)(|(cn=fs1)(cn=fs1.lokal.de)))
Als erstes der LDIF Eintrag für den DHCP-Server. Dieser Eintrag wir beim Start des DHCP-Servers als erstes gesucht. Der Eintrag verweist auf das eigentliche Konfigurationsobjekt:
Code:
dn: cn=fs1, dc=lokal,dc=de
cn: fs1
objectClass: top
objectClass: dhcpServer
dhcpServiceDN: cn=DHCP Config, dc=lokal,dc=de
Code:
dn: cn=DHCP Config, dc=kania-lokal,dc=de
cn: DHCP Config
objectClass: top
objectClass: dhcpService
dhcpPrimaryDN: cn=fs1, dc=lokal,dc=de
dhcpStatements: ddns-update-style none
dhcpStatements: get-lease-hostnames true
dhcpStatements: use-host-decl-names true
Code:
dn: cn=192.168.123.0, cn=DHCP Config, dc=lokal,dc=de
cn: 192.168.123.0
objectClass: top
objectClass: dhcpSubnet
objectClass: dhcpOptions
dhcpNetMask: 24
dhcpRange: 192.168.123.55 192.168.123.60
dhcpStatements: default-lease-time 25920
dhcpStatements: max-lease-time 51840
dhcpOption: netbios-name-servers 192.168.123.100
dhcpOption: netbios-node-type 8
dhcpOption: subnet-mask 255.255.255.0
dhcpOption: routers 192.168.123.102
dhcpOption: domain-name-servers 192.168.123.100,192.168.123.103
dhcpOption: domain-name "lokal.de"
Code:
dn: cn=stka, cn=DHCP Config, dc=lokal,dc=de
cn: stka
objectClass: top
objectClass: dhcpHost
dhcpHWAddress: ethernet 00:0a:e4:22:af:de
dhcpStatements: fixed-address 192.168.123.3
So nun viel Spaß damit. Wer das ganze mal ausprobiert hat kann ja mal kurz schreiben ob es nach der Anleitung geklappt hat.
Gruß
Stefan