Automatisches Konfigurieren des DHCP Dienstes

ArticleCategory:

System Administration

AuthorImage:

[Photo de l'auteur]

TranslationInfo:

Original in fr Eric SEIGNE

fr to en: John Perr

en to de: Harald Radke

AboutTheAuthor:

Eric schreibt freie Software. Das Programmieren von webbasierten Datenbankanwendungen unter Verwendung von PostGreSQL ,MySQL und PHP3 ist sein täglich Brot.



Abstract:

In diesem Artikel wird erläutert, wie man relativ einfach in einem Netzwerk den DHCP Service einrichtet


ArticleIllustration:

[Illustration]

ArticleBody:

Einleitung

In diesem Artikel wird

In diesem Fall wird der Server von Paul Vixie/ISC DHCPd verwandt.

Aufsetzen eines einfachen DHCP

Zuerst wird eine ganz einfache Konfigurationsdatei erzeugt, durch welche der DHCP Server alle Rechner eines Netzwerkes akzeptiert.
Als Beispielnetzwerk dient das LAN der Slash Party #2, für welche ich versucht habe, einen passenden Linuxserver zu konfigurieren.

<file dhcpd.conf>
default-lease-time 86400;
max-lease-time 604800;
get-lease-hostnames true;
option subnet-mask 255.255.255.0;
option domain-name "slach2-100.party";
option domain-name-servers 192.168.12.1;
option interface-mtu 1500;

subnet 192.168.12.0 netmask 255.255.255.0 
        # default gateway
        option routers 192.168.12.1;
        option broadcast-address 192.168.12.255;
        range 192.168.12.50 192.168.12.200;

</file>

Nachdem der DHCP Server läuft (der Befehl zum Starten mag sich von Distribution zu Distribution unterscheiden, z.B. dhcp), können die anderen Rechner im Netz hochgefahren werden. Dabei sollten sie vorher entsprechend konfiguriert worden sein, automatisch eine DNS Adresse zu erfragen.
Sobald nun solch ein Client eine Adressanfrage an den DHCP Server stellt, werden Einträge, ähnlich den unteren der Datei dhcpd.leases hinzugefügt:

<bloc attributed to a dhcp client>
lease 192.168.12.58 
        starts 2 1999/08/24 06:28:48;
        ends 3 1999/08/25 06:28:48;
        hardware ethernet 00:10:5a:2e:56:a7;
        uid 01:00:10:5a:2e:56:a7;
        client-hostname "KLUSTER";

</bloc>

Schliesslich, nachdem der Server allen Rechnern eine IP Adresse zugeteilt hat, sieht die Datei dhcpd.leases zum Beispiel wie folgt aus:

<file dhcpd.leases>
lease 192.168.12.58 
        starts 2 1999/08/24 06:28:48;
        ends 3 1999/08/25 06:28:48;
        hardware ethernet 00:10:5a:2e:56:a7;
        uid 01:00:10:5a:2e:56:a7;
        client-hostname "KLUSTER";

lease 192.168.12.53 
        starts 2 1999/08/24 05:42:22;
        ends 3 1999/08/25 05:42:22;
        hardware ethernet 00:80:ad:97:e1:76;
        uid 01:00:80:ad:97:e1:76;
        client-hostname "ceddz";

lease 192.168.12.54 
        starts 2 1999/08/24 03:07:26;
        ends 3 1999/08/25 03:07:26;
        hardware ethernet 00:80:ad:97:e1:7d;
        uid 01:00:80:ad:97:e1:7d;
        client-hostname "SDS";

lease 192.168.12.67 
        starts 2 1999/08/24 02:52:19;
        ends 3 1999/08/25 02:52:19;
        hardware ethernet 00:50:04:45:e1:65;
        uid 01:00:50:04:45:e1:65;
        client-hostname "HOMER";

lease 192.168.12.64 
        starts 2 1999/08/24 01:26:05;
        ends 3 1999/08/25 01:26:05;
        hardware ethernet 00:80:ad:97:e2:1c;
        uid 01:00:80:ad:97:e2:1c;
        client-hostname "chAwArmA";

lease 192.168.12.59 
        starts 2 1999/08/24 01:14:06;
        ends 3 1999/08/25 01:14:06;
        hardware ethernet 00:00:21:2c:30:e7;
        uid 01:00:00:21:2c:30:e7;
        client-hostname "WOOKIE";

</file>

Sichern der DHCP Konfiguration

Als nächstes ist es notwendig, aus dem "offenen" DHCP Service einen statischen und sichereren zu machen. Dazu wird die nun korrekt generierte Datei dhcp.lease entsprechend geändert.

Worin besteht nun der Unterschied zwischen einem statischen und einem offenen DHCP ?
Soweit es mich betrifft, vergibt ein offener DHCP an jeden Rechner im Netzwerk eine IP Adresse und weitere Netzwerk Parameter. Dies stellt ein großes Sicherheitsproblem dar, jeder Unbefugte kann bei physikalischem Zugang zum Netzwerk sich in dieses einklinken und wichtige Parameter erfahren :(
Um dem entgegenzuwirken, kann ein statischer DHCP verwendet werden. Jede IP Adresse wird nur an Rechner mit einer passenden MAC Adresse vergeben (eine MAC Adresse ist die Hardwareadresse der Netzwerkkarte). Auf diese Weise ist es einfacher, einen Eindringling zu registrieren.

<file dhcpd.conf>
default-lease-time 86400;
max-lease-time 604800;
get-lease-hostnames true;
option subnet-mask 255.255.255.0;
option domain-name "slach2-100.party";
option domain-name-servers 192.168.12.1;
option lpr-servers 192.168.12.1;
option interface-mtu 1500;

subnet 192.168.12.0 netmask 255.255.255.0 
        # default gateway
        option routers 192.168.12.1;
        option broadcast-address 192.168.12.255;
    # Those not in the dhcp
    # will get ip between .10 et .50
        range 192.168.12.10 192.168.12.50;


host 
        hardware ethernet 00:10:5a:2e:56:a7;
        fixed-address "kluster.slach2-100.party";

host 
        hardware ethernet 00:80:ad:97:e1:76;
        fixed-address "ceddz.slach2-100.party";
host 
        hardware ethernet 00:80:ad:97:e1:7d;
        fixed-address "sds.slach2-100.party";

host 
        hardware ethernet 00:40:95:49:0b:a5;
        fixed-address "saigneur.slach2-100.party";

host 
        hardware ethernet 00:50:04:45:e1:65;
        fixed-address "homer.slach2-100.party";

</file>

ACHTUNG: Steht kein DNS Service zur Verfügung, müssen im file.dhcp IP Adressen anstelle der Rechnernamen stehen!

<extracted from dhcpd.conf whithout dns>
host 
        hardware ethernet 00:40:95:49:0b:a5;
        fixed-address "192.168.12.57";

host 
        hardware ethernet 00:50:04:45:e1:65;
        fixed-address "192.168.12.67";

</extract>

Ich habe ein kleines Perl Skript geschrieben, welches die Datei dhcpd.leases in eine Konfigurationsdatei für den statischen DHCP Dienst konvertiert.

Automatische Konstruktion des DNS

Warum jetzt Schluss machen, wenn nun gleichzeitig der DNS Service konfiguriert werden kann?

Obiges Perl Skript, aufgerufen mit der Option -dns, erstellt die Dateien named.$domain.ajouter und named.$domain.rev.ajouter. Diese sollten, bevor sie als DNS Konfigurationsdateien verwendet, überprüft werden.

Desweitern ist es notwendig, in die Datei named.conf die Prameter der eigenen Domain einzutragen, z.B.:

<add to file named.conf>
zone "slach2-100.party" 
        type master;
        file "named.slach2-100";
;

zone "12.168.192.in-addr.arpa" 
        type master;
        file "named.slach2-100.rev";
;
</add>

Glückwunsch, man hat nun einen funktionierenden DHCP und DNS Service.

Die Netzwerkumgebung

Für den gleichen Preis, noch besser, kostenlos :), erhält man die Konfiguration der "Netzwerkumgebung" von Windowsrechnern. Hier nun die Beschreibung, inklusive eines kleinen Schaubildes:

Auf der Slash #2 (einer Demoparty), habe ich zwei Netzwerke eingerichtet, eines mit 10 MBit/s und eines mit 100 MBit/s (damals für die Priviligierten...). Das Problem, das sich stellte war, dass beide Netzwerke das jeweils andere nicht "sahen", trotz Einrichtung der Windows Netzwerkumgebung.

Die Lösung heisst WINS. WINS ermöglicht die Einrichtung eines Servers im Netz, welcher Zuordnungen von IPs und Namen verschiedener Netzwerkdomains verwaltet. Er administriert quasi die Netzwerke R1 und R2.

Hierfür ist es notwendig, einen WINS Server aufzusetzen und die Clients so zu konfigurieren, dass sie diesen verwenden. Der Server dient als IP Gateway zwischen den beiden Netzen.

WINS wird sehr gut von Samba unterstützt :)

Schematisch:

-------------------
I                 I
I   Network R1    I
I                 I
I  192.168.0.0    I
I  255.255.255.0  I
-------+-----------
       |
  -----|-----
 eth0: 192.168.0.1

     Linux
     Server

 eth1: 192.168.100.1
  -----|-----
       |
-------+-----------
I                 I
I   Network R2    I
I                 I
I  192.168.100.0  I
I  255.255.255.0  I
-------------------

dhcpd.conf wird geändert, sodass die automatische Konfiguration der Clients über den WINS Server vonstatten geht :). Ohne DHCP wäre es notwendig, für jeden Client den Zugriff auf den WINS Server individuell einzurichten!

ACHTUNG: NICHT VERGESSEN, DIE FOLGENDEN ZEILEN IN DIE DATEI DHCP.CONF EINZUTRAGEN, DAMIT DER WINS SERVER FÜR DIE CLIENTS VERWENDET WIRD!

<file dhcpd.conf>
[...]
option routers 192.168.0.1;
option netbios-name-servers 192.168.0.1;
option netbios-dd-server 192.168.0.1;
option netbios-node-type 8;
[...]
</file>

Ich verwende Samba für den WINS Server mit der folgenden Konfiguration:

<file smb.conf>
; validated with samba 2.0.5
[global]
   workgroup = rycks.com
   server string = Linux Box
   comment = Linux Box
   netbios name = pantoufle
   volume = pantoufle
   guest only = yes

   guest account = nobody
   log file = /var/log/samba-log.%m
   max log size = 50

   share modes = yes
   security = share
   socket options = TCP_NODELAY 
   os level = 33

   ; Configured as network master
   domain master = yes
   local master = yes
   preferred master = yes

   ; Activate wins support
   wins support = yes
   wins proxy = yes

 ; FTP sharing
 [ftp]
   path = /home/ftp/pub
   public = yes
   printable = no
   guest ok = yes

</file>

Jedesmal, wenn die Konfiguration der Server (DHCP, Samba, DNS) geändert worden ist, müssen diese neu gestartet werden. Ebenso sollten die DHCP Clients neu gestartet werden, damit sie die neuen Einstellungen verwenden können. In der Netzwerkumgebung sollte man dann nach Gruppen des jeweils anderen Netzes Ausschau halten.
Unter Berücksichtigung der üblichen Verzögerung, mit welcher Windows neue Rechner in der Netzwerkumgebung findet, sollte man nach Rechnernamen schauen. Zuerst sucht man nach Rechnern im eigenen Netz, danach nach Clients im jeweils anderen Netz suchen.

Sollten Rechner zwar von aussen sichtbar, aber kein Zugriff möglich sein, muss die Gateway so konfiguriert werden, dass er als richtiger Gatewayrechner zwischen beiden Netzwerken agiert.
Zu diesem Zwecke beschäftigt man sich am besten mit ipchains.

Im allgemeinen ist zum Beispiel folgendes notwendig:

#Reset chains
ipchains -F
#Activate masquerading
#to check according to default etc.
ipchains -A forward -i eth0 -j MASQ

Bugs und Einschränkungen

Vorsichtig sollte man sein, falls der Server gleichzeitig in zwei Bereichen eingesetzt wird, da das Programm nur eine DNS Datei liefert... Es wird dann notwendig werden, die Datei per Hand zu editieren.

Ich hoffe, dieser Artikel hilfreich war, bei Fragen und Anmerkungen kann man sich gerne an mich wenden.

Literaturverweise

Weiteres zu verschiedenen oben angerissenen Aspekten findet man hier:

Wo kann die aktuelle Version dieses Artikels finden?

Äderungen können regelmäßig auftreten, die jeweils aktuelle Version (in französisch) ist zu finden unter http://www.rycks.com/erics/linux/