• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Howto DHCP in LDAP integrieren

Status
Für weitere Antworten geschlossen.

stka

Guru
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.
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)
Auf der Seite:
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:
include /etc/openldap/schema/dhcp.schema
index dhcpHWAddress eq
index dhcpClassData eq
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.
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:
./dhcpd-conf-to-ldap.pl < /etc/dhcpd.conf > /root/dhcpd.ldif
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:
Code:
ldapadd -x -h localhost -D "cn=Manager,dc=lokal,dc=de" -W -f /root/dhcpd.ldif
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:

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";
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.
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:
Sep 24 14:01:53 fs1 dhcpd: Error: Cannot find LDAP entry matching (&(objectClass=dhcpServer)(|(cn=fs1)(cn=fs1.lokal.de)))
Hier nun mal eine Beispielkonfiguration:
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
Jetzt die Globalen Parameter:
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
Nun die Einträge für den zu vergebenen Bereich:
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"
Jetzt noch ein Beispiel für eine Reservierung:
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
 
Status
Für weitere Antworten geschlossen.
Oben