Original in fr Eric SEIGNE
fr to en: John Perr
en to de: Harald Radke
Eric schreibt freie Software. Das Programmieren von webbasierten Datenbankanwendungen unter Verwendung von PostGreSQL ,MySQL und PHP3 ist sein täglich Brot.
In diesem Artikel wird erläutert, wie man relativ einfach in einem Netzwerk den DHCP Service einrichtet
In diesem Artikel wird
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> |
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.
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.
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 |
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.
Weiteres zu verschiedenen oben angerissenen Aspekten findet man hier:
Äderungen können regelmäßig auftreten, die jeweils aktuelle Version (in französisch) ist zu finden unter http://www.rycks.com/erics/linux/