Entwicklungsumgebung/DHCP: Unterschied zwischen den Versionen

Aus Delixs
Zur Navigation springen Zur Suche springen
(..geht gleich weiter..)
 
(21 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
__NOTOC__
__NOTOC__
{{Uberarbeiten}}
{{EditStatus|1|Kirmse}}  




Zeile 59: Zeile 59:




Nachdem diese neuen Indices eingetragen sind, muss natürlich auch die Datenbank des LDAP neu aufgebaut werden. Mit den folgenden vier Befehlen passiert genau das:
<pre>
  /etc/init.d/slapd stop
  slapindex
  chown -R openldap:openldap /var/lib/ldap
  /etc/init.d/slapd start
</pre>


Abschließend starten Sie noch den LDAP-Server neu:


  /etc/init.d/slapd restart
'''Erklärung:''' Da der Index mittels <code>slapindex</code> als Benutzer "root" neu erzeugt wird, müssen anschließend mit dem chown-Befehl die Eigentumsverhältnisse wieder richtig gestellt werden.




=== Konfiguration des DHCP-Servers ===
=== Konfiguration des DHCP-Servers ===


Nun kann endlich die weitere Konfiguration des DHCP-Servers erfolgen.
Nun kann endlich die weitere Konfiguration des DHCP-Servers und des von ihm verwalteten DNS-Servers erfolgen.
 
 
==== Nacharbeiten am DNS Server ====
 
Zuerst wird ein Key erzeugt, damit später auch die DNS-Anfragen für dynamisch erzeugte Hosts über DHCP und somit aus dem LDAP beantwortet werden können. Die dafür notwendige DNS-Einrichtung (Domain Name System) muss bereits erfolgt sein (siehe [[Entwicklungsumgebung/DNS]]).
 
Um zu verhindern, dass nicht autorisierte Benutzer von Ihrem System aus den delixs-DNS-Server kontrollieren, wird das Zugriffsrecht durch einen gemeinsam verwendeten Schlüssel ausdrücklich auf bestimmte Hosts beschränkt.
 
Diesen Schlüssel (Key) erstellen Sie jetzt mit dem Befehl:
 
  rndc-confgen -a
 
Sie finden nun den neu erzeugten Key in der Datei "'''[[Entwicklungsumgebung/Dateiliste/rndc.key|/etc/bind/rndc.key]]'''". Die Datei sollte etwa so aussehen:
 
  key "rndc-key" {
        algorithm      hmac-md5;
        secret          "MNQ60MTqexpanaxpuDvCaGsgA==";
  };
 
 
Bevor Sie weiter an der Konfiguration arbeiten, kontrollieren Sie unbedingt, ob der nscd abgeschaltet ist.
 
  /etc/init.d/nscd status
 
Als Ausgabe muss "not running" erfolgen. Wenn dies nicht der Fall ist, schalten Sie den "nscd" jetzt aus:
 
  /etc/init.d/nscd stop
 
 
'''Hinweis:''' Falls Sie ein Komma, eine Klammer oder einen anderen noch so kleinen Fehler beim Schreiben der Konfiguration machen, wird der Server später nicht mehr starten. Gehen Sie also sehr gründlich vor.
 
Die Datei "'''[[Entwicklungsumgebung/Dateiliste/named.conf|/etc/bind/named.conf]]'''" enthält die globalen Einstellungen des DNS Servers. Dort wird der erzeugte Key bekannt gemacht, so dass der DNS Server künftig weiß, dass es sich um einen genehmigten Key handelt. Fügen Sie in die Datei folgenden Abschnitt ein:
 
  controls {
        inet 127.0.0.1 allow {localhost; } keys { "rndc-key"; };
  };
 
 
 
Auch die lokale Konfiguration kann jetzt erweitert werden. Die Datei "'''[[Entwicklungsumgebung/Dateiliste/named.conf.local|/etc/bind/named.conf.local]]'''" enthält die Definition der eigenen Zone-Dateien. Öffnen Sie diese Datei im Editor und fügen folgende Zeilen ein:
 
<pre>
//
// Do any local configuration here
//
 
// Consider adding the 1918 zones here, if they are not used in your
// organization
 
include "/etc/bind/rndc.key";
 
zone "delixs-schule.de" {
        type master;
        file "/etc/bind/db.delixs-schule.de";
        allow-update { key "rndc-key"; };
        notify yes;
};
 
zone "100.10.in-addr.arpa." {
        type master;
        file "/etc/bind/db.10.100";
        allow-update { key "rndc-key"; };
        notify yes;
};
 
//include "/etc/bind/zones.rfc1918";
</pre>
 
Für das name server control utility (kurz: rndc) erstellen Sie jetzt die Konfigurationsdatei und passen auch gleich die notwendigen Rechte an:
 
  touch /etc/rndc.conf
  chmod 640 /etc/rndc.conf
  chown root:bind /etc/rndc.conf
 
In diese Datei kommt nun folgender Inhalt:


Zuerst wird ein Key erzeugt, damit später auch die DNS-Anfragen für dynamisch erzeugte Hosts über DHCP und somit aus dem LDAP beantwortet werden können. Die dafür notwendige dDNS-Einrichtung (dynamisches DNS) wird im folgenden Kapitel (siehe [[Entwicklungsumgebung/DNS]]) beschrieben.
  include "/etc/bind/rndc.key";
  options {
    default-server 127.0.0.1;
    default-key "rndc-key";
  };


Den Key erstellen Sie jetzt mit dem Befehl:


  /usr/sbin/dnssec-keygen -a HMAC-MD5 -n HOST -b 512  $DOMAIN
Abschließend werden nun noch die Daten mittels "rndc" (name server control utility)
neu eingelesen:


  rndc reload


..geht gleich weiter..
Damit sind alle Nacharbeiten am DNS Server abgeschlossen.


==== DHCP Server vorbereiten ====


Als nächstes öffnen Sie die Datei <code>/etc/dhcp3/dhcpd.conf</code> und ändern diese in den folgenden Abschnitten:
Als nächstes öffnen Sie die Datei <code>/etc/dhcp3/dhcpd.conf</code> und ändern diese in den folgenden Abschnitten:


<pre>
<pre>
  # globale Einstellungen
  server-identifier 10.100.0.1;
  # das Booten vom Netz und den Empfang einer IP Adresse erlauben
  allow bootp;
  allow booting;
   # The ddns-updates-style parameter
   # The ddns-updates-style parameter
   # Der DHCPd soll ddns machen
   # Der DHCPd soll ddns machen
   ddns-update-style  interim;
  ddns-updates                on;
   ddns-update-style           interim;
   ddns-domainname            "delixs-schule.de.";
  ddns-rev-domainname        "in-addr.arpa.";
 


   # Die Clients sollen kein ddns selber machen
   # Die Clients sollen kein ddns selber machen
   deny client-updates;
   ignore                      client-updates;
 
  # This is the key so that DHCP can authenticate it's self to BIND9
  include                    "/etc/bind/rndc.key";


   # option definitions common..
   # option definitions common..
Zeile 100: Zeile 203:
   authoritative;
   authoritative;


   option broadcast-address  10.100.0.255;
  # Use this to send dhcp messages...
  log-facility local7;
 
  # Options
   option broadcast-address  10.100.255.255;
   option domain-name    "delixs-schule.de";
   option domain-name    "delixs-schule.de";
   option domain-name-servers  10.100.0.1;
   option domain-name-servers  10.100.0.1;
Zeile 108: Zeile 215:
   option netbios-scope    "";
   option netbios-scope    "";
   option routers      10.100.0.1;
   option routers      10.100.0.1;
   option subnet-mask    255.255.255.0;
   option subnet-mask    255.255.0.0;
   option time-servers  10.100.0.1;
   option time-servers  10.100.0.1;
   option interface-mtu    1492;
   option interface-mtu    1492;
   option ip-forwarding    off;
   option ip-forwarding    off;
    
   option ntp-servers    10.100.0.1;
  # PXE
 
  allow booting;
  allow bootp;
 
   # WPAD - Web Proxy Autodiscovery Protocol
   # WPAD - Web Proxy Autodiscovery Protocol
   option wpad    code 252 = text;
   option wpad    code 252 = text;
   option wpad    "http://wpad.delixs-schule.de/wpad.pac ";
   option wpad    "http://wpad.delixs-schule.de/wpad.pac";
 
  # This is the communication zone
  zone delixs-schule.de. {
    primary 127.0.0.1;
    key rndc-key;
  }
 
  zone 100.10.in-addr.arpa. {
    primary 127.0.0.1;
    key rndc-key;
  }
 
    
    
   subnet 10.100.0.0 netmask 255.255.255.0 {
   subnet 10.100.0.0 netmask 255.255.0.0 {
     range 10.100.0.40 10.100.0.250;
     range 10.100.0.40 10.100.0.250;
    option broadcast-address    10.100.255.255;
    option routers              10.100.0.1;
    allow                      unknown-clients;
     filename "/pxelinux.0";
     filename "/pxelinux.0";
     next-server 10.100.0.1;
     next-server 10.100.0.1;
    
    
  }
    zone    100.10.in-addr.arpa. {
            primary 10.100.0.1;
            key            "rndc-key";
    }
 
    zone    delixs-schule.de. {
            primary 10.100.0.1;
            key            "rndc-key";
    }
}


</pre>
</pre>
Zeile 138: Zeile 267:
Dieses Programm wird nun ins Homeverzeichnis von "root" kopiert und ausführbar gemacht. Danach erfolgt die Konvertierung der bisherigen "dhcpd.conf" in eine ldif-Datei.
Dieses Programm wird nun ins Homeverzeichnis von "root" kopiert und ausführbar gemacht. Danach erfolgt die Konvertierung der bisherigen "dhcpd.conf" in eine ldif-Datei.


   cp dhcpd-conf-to-ldap.pl /root
  mkdir /root/bin
   chmod +x /root/dhcpd-conf-to-ldap.pl
   cp dhcpd-conf-to-ldap.pl /root/bin
   /root/dhcpd-conf-to-ldap.pl --basedn "dc=delixs-schule,dc=de" < /etc/dhcp3/dhcpd.conf > /root/dhcpd.ldif
   chmod +x /root/bin/dhcpd-conf-to-ldap.pl
   /root/bin/dhcpd-conf-to-ldap.pl --basedn "dc=delixs-schule,dc=de" < /etc/dhcp3/dhcpd.conf > /root/dhcpd.ldif
 
Dieser Befehl wird in einer einzigen Zeile eingetippt und dauert bei der Ausführung eine Weile. Nach einigen Minuten sollte die Datei "/root/dhcpd.ldif" fertig erzeugt vorliegen. Der Inhalt der Datei sollte so aussehen, oder gegebenenfalls noch nachgearbeitet werden:
 
<pre>
dn: cn=alix,dc=delixs-schule,dc=de
cn: alix
objectClass: top
objectClass: dhcpServer
dhcpServiceDN: cn=DHCP Config,dc=delixs-schule,dc=de
 
dn: cn=DHCP Config,dc=delixs-schule,dc=de
cn: DHCP Config
objectClass: top
objectClass: dhcpService
objectClass: dhcpOptions
dhcpPrimaryDN: cn=alix,dc=delixs-schule,dc=de
dhcpStatements: server-identifier 10.100.0.1
dhcpStatements: allow bootp
dhcpStatements: allow booting
dhcpStatements: ddns-updates on
dhcpStatements: ddns-update-style interim
dhcpStatements: ddns-domainname "delixs-schule.de."
dhcpStatements: ddns-rev-domainname "in-addr.arpa."
dhcpStatements: ignore client-updates
dhcpStatements: include "/etc/bind/rndc.key"
dhcpStatements: default-lease-time 3600
dhcpStatements: max-lease-time 7200
dhcpStatements: get-lease-hostnames on
dhcpStatements: authoritative
dhcpStatements: log-facility local7
dhcpStatements:  zone delixs-schule.de. {  primary 127.0.0.1;  key "rndc-key"; }
dhcpStatements:  zone 100.10.in-addr.arpa. {  primary 127.0.0.1;  key "rndc-key"; }
dhcpOption: domain-name "delixs-schule.de"
dhcpOption: domain-name-servers 10.100.0.1
dhcpOption: broadcast-address 10.100.255.255
dhcpOption: netbios-dd-server 10.100.0.1
dhcpOption: netbios-name-servers 10.100.0.1
dhcpOption: netbios-node-type 8
dhcpOption: netbios-scope ""
dhcpOption: routers 10.100.0.1
dhcpOption: subnet-mask 255.255.0.0
dhcpOption: time-servers 10.100.0.1
dhcpOption: interface-mtu 1492
dhcpOption: ip-forwarding off
dhcpOption: ntp-servers 10.100.0.1
dhcpOption: wpad code 252 = text
dhcpOption: wpad "http://wpad.delixs-schule.de/wpad.pac "
 
dn: cn=10.100.0.0, cn=DHCP Config,dc=delixs-schule,dc=de
cn: 10.100.0.0
objectClass: top
objectClass: dhcpSubnet
objectClass: dhcpOptions
dhcpNetMask: 16
dhcpRange: 10.100.0.40 10.100.0.250
dhcpStatements: allow unknown-clients
dhcpStatements: filename "/pxelinux.0"
dhcpStatements: next-server 10.100.0.1
dhcpStatements:  zone 100.10.in-addr.arpa. {  primary 10.100.0.1;  key "rndc-key"; }
dhcpStatements:  zone delixs-schule.de. {  primary 10.100.0.1;  key "rndc-key"; }
dhcpOption: broadcast-address 10.100.255.255
dhcpOption: routers 10.100.0.1
 
</pre>
 
'''Achtung:''' Fügen Sie unbedingt in der Zeile:
 
<pre>
dhcpOption: wpad "http://wpad.delixs-schule.de/wpad.pac "
</pre>
 
das Leerzeichen vor dem letzten Ausführungsstrich ein. Sie umgehen damit künftig Probleme mit einem einzelnen Browser, der immer Mal das letzte Zeichen einer Zeile verschlucken will.
 
 
==== DHCP Server fertig konfigurieren ====
 
Jetzt folgt das Einspielen des LDIF-File in den LDAP mit folgendem Befehl:
 
  ldapadd -x -D "cn=admin,dc=delixs-schule,dc=de" -W -f /root/dhcpd.ldif
 
Nach der Aktivierung dieses Befehls werden Sie nach dem LDAP-Passwort gefragt und bei exakter Eingabe erfolgen alle Eintragungen.
 
  adding new entry ...
 
Als letzten Schritt müssen Sie dem DHCP-Server noch mitteilen, das seine Daten ab sofort im LDAP verwaltet werden sollen. Zuvor wird der DHCP-Server sicherheitshalber gestoppt:
 
  /etc/init.d/dhcp3-server stop
 
 
Dafür wird eine neue "dhcpd.conf" erstellt, nachdem die bisherige Datei in Sicherheit gebracht wurde.
 
  mv /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.delixs
  touch /etc/dhcp3/dhcpd.conf
 
 
Bearbeiten Sie die neue Datei "'''[[Entwicklungsumgebung/Dateiliste/dhcpd.conf|/etc/dhcp3/dhcpd.conf]]'''" mit einem beliebigen Editor: 
 
  ldap-server "alix.delixs-schule.de";
  ldap-port 389;
  ldap-username "cn=admin,dc=delixs-schule,dc=de";
  ldap-password "schule";
  ldap-base-dn "dc=delixs-schule,dc=de";
  ldap-method dynamic;
  ldap-debug-file "/var/log/dhcp-ldap.log";
 
Nachdem die Datei abgespeichert ist, kann auch der DHCP-Server wieder gestartet werden:
 
  /etc/init.d/dhcp3-server start
 
 
=== Arbeitsbeispiel ===
 
In diesem Arbeitsbeispiel wird einem Rechner eine feste IP vergeben. Führen Sie dieses Beispiel bitte nicht aus, denn es dient nur der Demonstration der Arbeitsweise eines DHCP-Servers mit LDAP-Unterstützung.
 
Erstellen Sie zu Beginn eine Datei:
 
  touch /root/fip.ldif
 
Diese Datei öffnen Sie nun mit einem Editor und geben folggende Zeilen ein:
 
 
<source highlight="1-6" lang="text">
  dn: cn=Aachen,cn=Raum17,cn=10.100.0.0,cn=DHCP Config,dc=delixs-schule,dc=de
  cn: Aachen
  objectClass: top
  objectClass: dhcpHost
  dhcpHWAddress: ethernet 00:40:05:4f:e4:bc
  dhcpStatements: fixed-address 10.100.17.21
</source>
 
 
Die fertige Datei wird nun in den LDAP eingespielt mit dem Befehl:
 
  ldapadd -x -D "cn=admin,dc=delixs-schule,dc=de" -W -f /root/fip.ldif
 
Und als Ergebnis wird ein Client mit der MAC-Adresse: 00:40:05:4f:e4:bc auf den Rechnernamen Aachen mit obiger IP-Adressse 10.100.17.21 im Raum 17 registriert.




Zeile 152: Zeile 418:
----
----
<div align="right">[[Installation:Entwicklungsumgebung|zurück]] | [[Hauptseite]]</div>
<div align="right">[[Installation:Entwicklungsumgebung|zurück]] | [[Hauptseite]]</div>
Hans-Dietrich Kirmse, Uwe Schoffer, Thorsten Strusch  2009
[[Kategorie:DebianSqueeze]]

Aktuelle Version vom 28. März 2011, 19:32 Uhr


Diese Seite ist momentan eine Baustelle im Zustand: 1

Wird bearbeitet von: Kirmse
Hilfe zum Bearbeitungsstatus: Hilfe:Status eines Artikels


DHCP-Server (dynamic host configuration protocol)

Installation des DHCP-Servers

Ein DHCP-Server versorgt die an Ihm angeschlossenen Clientrechner auf Wunsch mit IP-Adressen, Netzwerkeinstellungen und vielen weiteren Informationen.

Zuerst wird das Metapaket installiert:

 aptitude install dhcp3-server

Nun lesen Sie eine wichtige Meldung, die Umstellung auf "authoritative" wird aber erst im folgenden Abschnitt passieren.


DHCP Server
Abbildung: DHCP Server nicht autoritativ


In der weiteren Installation versucht der DHCP-Server einen Start, was aber auf Grund der fehlenden Konfiguration misslingen wird. Am Bildschirm erscheint die Meldung:

 Starting DHCP server: failed!


Den Anfang der Konfiguration macht die Datei "/etc/default/dhcp3-server". Dort tragen wir folgende Zeile ein:

 INTERFACES="eth1"

Ab sofort weiß der DHCP-Server, auf welcher Netzwerkkarte er überhaupt auf Anfragen reagieren soll. Er wird ab sofort nicht auf Anfragen auf der ersten Netzwerkkarte "eth0" (das ist die Internetverbindung, siehe Entwicklungsumgebung/Netzwerkkarte) reagieren.

Das war noch nicht die ganze Konfiguration. Aber auch ohne fertige Konfiguration des DHCP-Servers installieren wir weiter. Der nächste Teil der Installation stellt die LDAP-Unterstützung für DHCP bereit:

 aptitude install dhcp3-server-ldap

Dieser Installationsschritt sollte ohne Nachfragen in wenigen Sekunden fehlerlos durchlaufen.

Jetzt kann die zu Konfiguration notwendige Schema-Datei entpackt und eingebunden werden. Führen Sie dazu folgende drei Befehle aus:


 cd /usr/share/doc/dhcp3-server-ldap
 gunzip dhcp.schema.gz
 cp dhcp.schema /etc/ldap/schema/


Bearbeiten Sie die Datei /etc/ldap/slapd.conf im Abschnitt "Schema and objectClass" und fügen dort am Ende eine weitere Zeile "..dhcp.schema" ein:


 # Schema and objectClass definitions
 include   /etc/ldap/schema/corba.schema
 include   /etc/ldap/schema/core.schema
 include   /etc/ldap/schema/cosine.schema
 include   /etc/ldap/schema/nis.schema
 include   /etc/ldap/schema/inetorgperson.schema
 include   /etc/ldap/schema/openldap.schema
 include   /etc/ldap/schema/dhcp.schema


Nachdem diese neuen Indices eingetragen sind, muss natürlich auch die Datenbank des LDAP neu aufgebaut werden. Mit den folgenden vier Befehlen passiert genau das:

  /etc/init.d/slapd stop
  slapindex
  chown -R openldap:openldap /var/lib/ldap
  /etc/init.d/slapd start


Erklärung: Da der Index mittels slapindex als Benutzer "root" neu erzeugt wird, müssen anschließend mit dem chown-Befehl die Eigentumsverhältnisse wieder richtig gestellt werden.


Konfiguration des DHCP-Servers

Nun kann endlich die weitere Konfiguration des DHCP-Servers und des von ihm verwalteten DNS-Servers erfolgen.


Nacharbeiten am DNS Server

Zuerst wird ein Key erzeugt, damit später auch die DNS-Anfragen für dynamisch erzeugte Hosts über DHCP und somit aus dem LDAP beantwortet werden können. Die dafür notwendige DNS-Einrichtung (Domain Name System) muss bereits erfolgt sein (siehe Entwicklungsumgebung/DNS).

Um zu verhindern, dass nicht autorisierte Benutzer von Ihrem System aus den delixs-DNS-Server kontrollieren, wird das Zugriffsrecht durch einen gemeinsam verwendeten Schlüssel ausdrücklich auf bestimmte Hosts beschränkt.

Diesen Schlüssel (Key) erstellen Sie jetzt mit dem Befehl:

 rndc-confgen -a

Sie finden nun den neu erzeugten Key in der Datei "/etc/bind/rndc.key". Die Datei sollte etwa so aussehen:

 key "rndc-key" {
       algorithm       hmac-md5;
       secret          "MNQ60MTqexpanaxpuDvCaGsgA==";
 };


Bevor Sie weiter an der Konfiguration arbeiten, kontrollieren Sie unbedingt, ob der nscd abgeschaltet ist.

 /etc/init.d/nscd status

Als Ausgabe muss "not running" erfolgen. Wenn dies nicht der Fall ist, schalten Sie den "nscd" jetzt aus:

 /etc/init.d/nscd stop


Hinweis: Falls Sie ein Komma, eine Klammer oder einen anderen noch so kleinen Fehler beim Schreiben der Konfiguration machen, wird der Server später nicht mehr starten. Gehen Sie also sehr gründlich vor.

Die Datei "/etc/bind/named.conf" enthält die globalen Einstellungen des DNS Servers. Dort wird der erzeugte Key bekannt gemacht, so dass der DNS Server künftig weiß, dass es sich um einen genehmigten Key handelt. Fügen Sie in die Datei folgenden Abschnitt ein:

 controls {
       inet 127.0.0.1 allow {localhost; } keys { "rndc-key"; };
 };


Auch die lokale Konfiguration kann jetzt erweitert werden. Die Datei "/etc/bind/named.conf.local" enthält die Definition der eigenen Zone-Dateien. Öffnen Sie diese Datei im Editor und fügen folgende Zeilen ein:

//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization

include "/etc/bind/rndc.key";

zone "delixs-schule.de" {
        type master;
        file "/etc/bind/db.delixs-schule.de";
        allow-update { key "rndc-key"; };
        notify yes;
};

zone "100.10.in-addr.arpa." {
        type master;
        file "/etc/bind/db.10.100";
        allow-update { key "rndc-key"; };
        notify yes;
};

//include "/etc/bind/zones.rfc1918";

Für das name server control utility (kurz: rndc) erstellen Sie jetzt die Konfigurationsdatei und passen auch gleich die notwendigen Rechte an:

 touch /etc/rndc.conf
 chmod 640 /etc/rndc.conf
 chown root:bind /etc/rndc.conf

In diese Datei kommt nun folgender Inhalt:

 include "/etc/bind/rndc.key";
 options {
    default-server 127.0.0.1;
    default-key "rndc-key";
 };


Abschließend werden nun noch die Daten mittels "rndc" (name server control utility) neu eingelesen:

 rndc reload

Damit sind alle Nacharbeiten am DNS Server abgeschlossen.


DHCP Server vorbereiten

Als nächstes öffnen Sie die Datei /etc/dhcp3/dhcpd.conf und ändern diese in den folgenden Abschnitten:

  # globale Einstellungen
  server-identifier 10.100.0.1;

  # das Booten vom Netz und den Empfang einer IP Adresse erlauben
  allow bootp;
  allow booting;

  # The ddns-updates-style parameter
  # Der DHCPd soll ddns machen
  ddns-updates                on;
  ddns-update-style           interim;
  ddns-domainname             "delixs-schule.de.";
  ddns-rev-domainname         "in-addr.arpa.";


  # Die Clients sollen kein ddns selber machen
  ignore                      client-updates;

  # This is the key so that DHCP can authenticate it's self to BIND9
  include                     "/etc/bind/rndc.key";

  # option definitions common..
  option-domain-name "delixs-schule.de";
  option-domain-servers alix.delixs-schule.de;

  default-lease-time 3600;  # 1 Stunde
  max-lease-time 7200;      # 1 Tag
  get-lease-hostnames on;

  # If this DHCP server...
  authoritative;

  # Use this to send dhcp messages...
  log-facility local7;

  # Options
  option broadcast-address  10.100.255.255;
  option domain-name    "delixs-schule.de";
  option domain-name-servers  10.100.0.1;
  option netbios-dd-server  10.100.0.1;
  option netbios-name-servers 10.100.0.1; # SAMBA
  option netbios-node-type  8;  # First use WINS, then broadcast
  option netbios-scope    "";
  option routers      10.100.0.1;
  option subnet-mask    255.255.0.0;
  option time-servers   10.100.0.1;
  option interface-mtu    1492;
  option ip-forwarding    off;
  option ntp-servers    10.100.0.1;

 
  # WPAD - Web Proxy Autodiscovery Protocol
  option wpad     code 252 = text;
  option wpad     "http://wpad.delixs-schule.de/wpad.pac";

  # This is the communication zone
  zone delixs-schule.de. {
    primary 127.0.0.1;
    key rndc-key;
  }

  zone 100.10.in-addr.arpa. {
    primary 127.0.0.1;
    key rndc-key;
  }

  
  subnet 10.100.0.0 netmask 255.255.0.0 {
    range 10.100.0.40 10.100.0.250;
    option broadcast-address    10.100.255.255;
    option routers              10.100.0.1;
    allow                       unknown-clients;
    filename "/pxelinux.0";
    next-server 10.100.0.1;
  
    zone    100.10.in-addr.arpa. {
            primary 10.100.0.1;
            key             "rndc-key";
    }

    zone    delixs-schule.de. {
            primary 10.100.0.1;
            key             "rndc-key";
    }
}

Alle anderen Einstellungen bleiben so, wie sie sind. Jetzt wird diese Grundkonfiguration in den LDAP eingebaut. Dafür wird das Konvertierungsprogramm zuerst benötigt:

 cd /usr/share/doc/dhcp3-server-ldap
 gunzip dhcpd-conf-to-ldap.pl.gz


Dieses Programm wird nun ins Homeverzeichnis von "root" kopiert und ausführbar gemacht. Danach erfolgt die Konvertierung der bisherigen "dhcpd.conf" in eine ldif-Datei.

 mkdir /root/bin
 cp dhcpd-conf-to-ldap.pl /root/bin
 chmod +x /root/bin/dhcpd-conf-to-ldap.pl
 /root/bin/dhcpd-conf-to-ldap.pl --basedn "dc=delixs-schule,dc=de" < /etc/dhcp3/dhcpd.conf > /root/dhcpd.ldif

Dieser Befehl wird in einer einzigen Zeile eingetippt und dauert bei der Ausführung eine Weile. Nach einigen Minuten sollte die Datei "/root/dhcpd.ldif" fertig erzeugt vorliegen. Der Inhalt der Datei sollte so aussehen, oder gegebenenfalls noch nachgearbeitet werden:

dn: cn=alix,dc=delixs-schule,dc=de
cn: alix
objectClass: top
objectClass: dhcpServer
dhcpServiceDN: cn=DHCP Config,dc=delixs-schule,dc=de 

dn: cn=DHCP Config,dc=delixs-schule,dc=de
cn: DHCP Config
objectClass: top
objectClass: dhcpService
objectClass: dhcpOptions
dhcpPrimaryDN: cn=alix,dc=delixs-schule,dc=de
dhcpStatements: server-identifier 10.100.0.1
dhcpStatements: allow bootp
dhcpStatements: allow booting
dhcpStatements: ddns-updates on
dhcpStatements: ddns-update-style interim
dhcpStatements: ddns-domainname "delixs-schule.de."
dhcpStatements: ddns-rev-domainname "in-addr.arpa."
dhcpStatements: ignore client-updates
dhcpStatements: include "/etc/bind/rndc.key"
dhcpStatements: default-lease-time 3600
dhcpStatements: max-lease-time 7200
dhcpStatements: get-lease-hostnames on
dhcpStatements: authoritative
dhcpStatements: log-facility local7
dhcpStatements:   zone delixs-schule.de. {  primary 127.0.0.1;  key "rndc-key"; }
dhcpStatements:   zone 100.10.in-addr.arpa. {  primary 127.0.0.1;  key "rndc-key"; }
dhcpOption: domain-name "delixs-schule.de"
dhcpOption: domain-name-servers 10.100.0.1
dhcpOption: broadcast-address 10.100.255.255
dhcpOption: netbios-dd-server 10.100.0.1
dhcpOption: netbios-name-servers 10.100.0.1
dhcpOption: netbios-node-type 8
dhcpOption: netbios-scope ""
dhcpOption: routers 10.100.0.1
dhcpOption: subnet-mask 255.255.0.0
dhcpOption: time-servers 10.100.0.1
dhcpOption: interface-mtu 1492
dhcpOption: ip-forwarding off
dhcpOption: ntp-servers 10.100.0.1
dhcpOption: wpad code 252 = text
dhcpOption: wpad "http://wpad.delixs-schule.de/wpad.pac " 

dn: cn=10.100.0.0, cn=DHCP Config,dc=delixs-schule,dc=de
cn: 10.100.0.0
objectClass: top
objectClass: dhcpSubnet
objectClass: dhcpOptions
dhcpNetMask: 16
dhcpRange: 10.100.0.40 10.100.0.250
dhcpStatements: allow unknown-clients
dhcpStatements: filename "/pxelinux.0"
dhcpStatements: next-server 10.100.0.1
dhcpStatements:   zone 100.10.in-addr.arpa. {  primary 10.100.0.1;  key "rndc-key"; }
dhcpStatements:   zone delixs-schule.de. {  primary 10.100.0.1;  key "rndc-key"; }
dhcpOption: broadcast-address 10.100.255.255
dhcpOption: routers 10.100.0.1

Achtung: Fügen Sie unbedingt in der Zeile:

 dhcpOption: wpad "http://wpad.delixs-schule.de/wpad.pac " 

das Leerzeichen vor dem letzten Ausführungsstrich ein. Sie umgehen damit künftig Probleme mit einem einzelnen Browser, der immer Mal das letzte Zeichen einer Zeile verschlucken will.


DHCP Server fertig konfigurieren

Jetzt folgt das Einspielen des LDIF-File in den LDAP mit folgendem Befehl:

 ldapadd -x -D "cn=admin,dc=delixs-schule,dc=de" -W -f /root/dhcpd.ldif

Nach der Aktivierung dieses Befehls werden Sie nach dem LDAP-Passwort gefragt und bei exakter Eingabe erfolgen alle Eintragungen.

 adding new entry ...

Als letzten Schritt müssen Sie dem DHCP-Server noch mitteilen, das seine Daten ab sofort im LDAP verwaltet werden sollen. Zuvor wird der DHCP-Server sicherheitshalber gestoppt:

 /etc/init.d/dhcp3-server stop


Dafür wird eine neue "dhcpd.conf" erstellt, nachdem die bisherige Datei in Sicherheit gebracht wurde.

 mv /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.delixs
 touch /etc/dhcp3/dhcpd.conf


Bearbeiten Sie die neue Datei "/etc/dhcp3/dhcpd.conf" mit einem beliebigen Editor:

 ldap-server "alix.delixs-schule.de";
 ldap-port 389;
 ldap-username "cn=admin,dc=delixs-schule,dc=de";
 ldap-password "schule";
 ldap-base-dn "dc=delixs-schule,dc=de";
 ldap-method dynamic;
 ldap-debug-file "/var/log/dhcp-ldap.log";

Nachdem die Datei abgespeichert ist, kann auch der DHCP-Server wieder gestartet werden:

 /etc/init.d/dhcp3-server start


Arbeitsbeispiel

In diesem Arbeitsbeispiel wird einem Rechner eine feste IP vergeben. Führen Sie dieses Beispiel bitte nicht aus, denn es dient nur der Demonstration der Arbeitsweise eines DHCP-Servers mit LDAP-Unterstützung.

Erstellen Sie zu Beginn eine Datei:

 touch /root/fip.ldif

Diese Datei öffnen Sie nun mit einem Editor und geben folggende Zeilen ein:


<source highlight="1-6" lang="text">

 dn: cn=Aachen,cn=Raum17,cn=10.100.0.0,cn=DHCP Config,dc=delixs-schule,dc=de
 cn: Aachen
 objectClass: top
 objectClass: dhcpHost
 dhcpHWAddress: ethernet 00:40:05:4f:e4:bc
 dhcpStatements: fixed-address 10.100.17.21

</source>


Die fertige Datei wird nun in den LDAP eingespielt mit dem Befehl:

 ldapadd -x -D "cn=admin,dc=delixs-schule,dc=de" -W -f /root/fip.ldif

Und als Ergebnis wird ein Client mit der MAC-Adresse: 00:40:05:4f:e4:bc auf den Rechnernamen Aachen mit obiger IP-Adressse 10.100.17.21 im Raum 17 registriert.


Weblinks



zurück | Hauptseite

Hans-Dietrich Kirmse, Uwe Schoffer, Thorsten Strusch 2009