[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Frage zu DHCP / LDAP - dynamischer Bereich stimmt nicht



Hallo,

ich antworte mir mal selbst, hoffe aber auf Statements von den Experten,
weil ich einfach nur Laie bin und hatte bisher noch nie ein Schema auseinander
genommen und daraus eine Lösung gebastelt.

Hans-Dietrich Kirmse schrieb:
Hans-Dietrich Kirmse schrieb:


Und diese 2
PC-Ecken wären dann jeweils ein eigener "Pool" => 5 "Rechnergruppen"

bei "normalen" DHCP (also ohne LDAP) gibt es doch die group-Anweisung.
gibt es vielleicht sowas für den LDAP? Dann wäre das Problem gelöst.

In der Schema-Datei zu DHCP sind folgende Objectclassen angegeben,
die m.E. hier in Frage kommen:

objectclass ( 2.16.840.1.113719.1.203.6.5
    NAME 'dhcpGroup'
    DESC 'Group object that lists host DNs and parameters. This is a container object.'
    SUP top
    MUST cn
    MAY ( dhcpHostDN $ dhcpOptionsDN $ dhcpStatements $ dhcpComments $ dhcpOption )
    X-NDS_CONTAINMENT ('dhcpSubnet' 'dhcpService' ) )


objectclass ( 2.16.840.1.113719.1.203.6.7
    NAME 'dhcpClass'
    DESC 'Represents information about a collection of related clients.'
    SUP top
    MUST cn
    MAY (dhcpSubClassesDN $ dhcpOptionsDN $ dhcpStatements $ dhcpComments $ dhcpOption)
    X-NDS_CONTAINMENT ('dhcpService' 'dhcpSubnet' ) )


Die 'dhcpClass' käme schon in Frage, gefällt mir aber nicht wirklich. Insbesondere
geht die über Subclassen und da ist ein relevantes Merkmal gefagt, was sich hier
schlecht angeben läßt. Bleibt also nur dhcpGroup.

Ich war bisher davon ausgegangen, das die Zuordnung zum Raum über das vorletzte Oktett
der IPs machen würde, also z.B. so 172.16.2.25
                                          ^  ^
                                          |  |
                                          | Rechner mit der Nummer 25
                                          |
                                   Raum mit der Nummer 2

Diese dhcpGroup funktioniert aber wie eine "normale" Gruppe, nur dass dort sonst member
verwendet wird und hier dhcpHostDN. Das bedeutet, ich trage die Hosts in diesen Entry
(Raum) ein - fertig. Damit kann ich irgendwelche Überlegungen wegen der IP-Vergabe
eigentlich vergessen, Hauptsache sie gehören zum Teilnetz.

Um eine Lösung zu konstruieren und zu testen, habe ich folgende Dateien erstellt:

~~~~~~~~~~~~~~~~~~~~~~~ dhcp-test.ldif ~~~~~~~~~~~~~~~~~~~~~~~~~~

# zuerst mal das Teilnetz:
dn: cn=172.16.0.0,cn=DHCP Config,dc=kirmse,dc=info
cn: 172.16.0.0
objectClass: top
objectClass: dhcpSubnet
objectClass: dhcpOptions
dhcpNetMask: 16

# dieses Teilnetz bekommt einen Pool für Laptops u.a.m.
dn: cn=meinpool,cn=172.16.0.0,cn=DHCP Config,dc=kirmse,dc=info
objectClass: top
objectClass: dhcpPool
cn: meinpool
dhcpRange: 172.16.0.40 172.16.0.100

# dann der 1. Raum (als dhcpGroups implementiert)
dn: cn=raum1,cn=172.16.0.0,cn=DHCP Config,dc=kirmse,dc=info
cn: raum1
objectClass: top
objectClass: dhcpGroup
objectClass: dhcpOptions

# dann der 2. Raum
dn: cn=raum2,cn=172.16.0.0,cn=DHCP Config,dc=kirmse,dc=info
cn: raum2
objectClass: top
objectClass: dhcpGroup
objectClass: dhcpOptions

# der 1. Rechner (wurde real getestet - mein Vista-Rechner ;) )
dn: cn=privat,cn=172.16.0.0,cn=DHCP Config,dc=kirmse,dc=info
cn: privat
objectClass: top
objectClass: dhcpHost
dhcpHWAddress: ethernet 00:1B:FC:B5:38:72
dhcpStatements: fixed-address 172.16.1.42

# der 2. Rechner - nur ein Dummy
dn: cn=spass,cn=172.16.0.0,cn=DHCP Config,dc=kirmse,dc=info
cn: spass
objectClass: top
objectClass: dhcpHost
dhcpHWAddress: ethernet 00:1B:FC:B5:38:73
dhcpStatements: fixed-address 172.16.1.43

# der 3. Rechner - auch nur ein Dummy
dn: cn=luxus,cn=172.16.0.0,cn=DHCP Config,dc=kirmse,dc=info
cn: luxus
objectClass: top
objectClass: dhcpHost
dhcpHWAddress: ethernet 00:1B:FC:B5:38:74
dhcpStatements: fixed-address 172.16.1.44

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

rein in den LDAP z.B. mit
  ldapadd -x -D "cn=admin,dc=kirmse,dc=info" -W -f dhcp-test.ldif

Das Aufnehmen der 3 Rechner in den ersten Raum würde hier mit
diesem File geschehen können:


~~~~~~~~~~~~~~~~~~~ aufnehmen.ldif ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

dn: cn=raum1,cn=172.16.0.0,cn=DHCP Config,dc=kirmse,dc=info
changetype: modify
add: dhcpHostDN
dhcpHostDN: cn=privat,cn=172.16.0.0,cn=DHCP Config,dc=kirmse,dc=info
-
add: dhcpHostDN
dhcpHostDN: cn=spass,cn=172.16.0.0,cn=DHCP Config,dc=kirmse,dc=info
-
add: dhcpHostDN
dhcpHostDN: cn=luxus,cn=172.16.0.0,cn=DHCP Config,dc=kirmse,dc=info

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

dieses LDIF-File wird nun reingebracht in den LDAP mit
  ldapmodifiy -x -D "cn=admin,dc=kirmse,dc=info" -W -f aufnehmen.ldif

Zumindestens hat das mein Test-System geschluckt. Ein Auflisten der
Rechner des 1. Raums würde dann so erfolgen können:

  ldapsearch -x -LLL "(cn=raum1)" dhcpHostDN

und liefert:

  dn: cn=raum1,cn=172.16.0.0,cn=DHCP Config,dc=kirmse,dc=info
  dhcpHostDN: cn=privat,cn=172.16.0.0,cn=DHCP Config,dc=kirmse,dc=info
  dhcpHostDN: cn=spass,cn=172.16.0.0,cn=DHCP Config,dc=kirmse,dc=info
  dhcpHostDN: cn=luxus,cn=172.16.0.0,cn=DHCP Config,dc=kirmse,dc=info

(Normalerweise arbeite ich nicht auf der Shell, sondern mach das mit Net::LDAP.)

Damit ist für mich das Problem geklärt, denn damit habe ich meine Gruppierung.
Ob es die optimale Lösung ist weiss ich nicht. Auf jeden Fall erfüllt sie meine
Anforderungen. Danke fürs Mitdenken. Ohne euren Hinweis auf mein falsches
Verständnis für "Pool" hätte ich das Problem nicht mal erkannt, geschweige
denn hätte es eine Lösung geben können.

Viele Grüße
Hans-Dietrich





Reply to: