Das eigene Netz dynamisch konfigurieren

Aus LinuxUser 03/2002

Das eigene Netz dynamisch konfigurieren

Eine IP-Adresse, bitte!

Um Computern in einem Netzwerk die Kommunikation zu ermöglichen, muss normalerweise jeder beteiligte Rechner von Hand konfiguriert werden. Diese Arbeit lässt sich vermeiden, wenn einer davon IP-Adressen und weitere Einstellungen dynamisch per DHCP verteilt.

Jeder Rechner in einem Netzwerk muss über eine eindeutige IP-Adresse erreichbar sein. Bei der Organisation der verfügbaren Adressen führen verschiedene Wege zum Ziel: Sie wählen bei der Konfiguration eines Rechners einfach zufällig eine aus und hoffen, sie nicht bereits vergeben zu haben (schlecht). Sie führen Strichlisten oder erstellen Aufkleber mit den relevanten Daten, die Sie an Ihre Mitbewohner verteilen (gut).

Eine besonders hübsche Variante benutzt Wäscheklammern, auf die die verfügbaren IP-Adressen geschrieben werden. Bevor Sie Ihren Rechner konfigurieren, holen Sie sich Ihre IP-Adresse auf einer Wäscheklammer ab und klemmen sie demonstrativ an Ihr Netzwerkkabel. Wenn Sie sie nicht mehr benötigen, legen Sie sie zurück in den zentralen Pool. Dieses Verfahren wurde auf Hacker-Kongressen eingesetzt und – an einem 1. April – zum Internet-Standard RFC 2322 [1] vorgeschlagen.

Wie funktioniert’s?

Das Wäscheklammer-Szenario veranschaulicht sehr gut das Protokoll DHCP (“Dynamic Host Configuration Protocol”): Ein Rechner, der physikalisch im Netz hängt, aber noch nicht konfiguriert ist, fragt laut nach einer zulässigen Konfiguration. Ein für diese Auskunft zuständiger Computer, der DHCP-Server, gibt dem Frager eine eindeutige IP-Adresse aus dem vorhandenen Pool und weitere Konfigurationsdaten. Der Neuling kann sich nun selbst korrekt ins Netz einklinken, ohne dass sein Benutzer manuell Konfigurationsdaten eintippen muss. Wenn IP-Adressen knapp sind, können sie analog zu den Wäschklammern erneut an einen anderen Rechner vergeben werden, wenn der alte Besitzer kein Interesse mehr hat.

Hierzu muss auf einem Rechner im Netzwerk ein DHCP-Server installiert und konfiguriert sein sowie auf jeder anderen Maschine ein DHCP-Client. Glücklicherweise gehören DHCP-Clients bei allen Linux-Distributionen zur Standardausrüstung, und auch andere Betriebssysteme bringen entsprechende Software bereits von Hause aus mit. Ein DHCP-Server auf einem Linux-Rechner bedient somit auch Windows- oder MacOS-Rechner.

DHCP zu Hause?

Für ein kleines Netz zu Hause mag sich das vielleicht übertrieben anhören. Die Alternative besteht in der manuellen Konfiguration jedes einzelnen Rechners. Vorneweg: Sie brauchen kein DHCP, um ein Netzwerk zu betreiben. Vielleicht wollen Sie es aber, denn auch ein kleines Netz zu Hause bleibt nicht unbedingt so statisch, wie es zunächst aussieht. Installiert eine Mitbewohnerin ihren Rechner neu oder probiert ein weiteres Betriebssystem aus, muss die Netzwerkkonfiguration neu angegeben werden. Ein Notebook, das mal beim Arbeitgeber, mal zu Hause vernetzt ist, darf bei jedem Netzwechsel entsprechend umkonfiguriert werden. Spätestens, wenn Gäste anfangen, ihre Rechner mitzubringen, möchten Sie die vergebenen und freien IP-Adressen nicht mehr nur im Kopf verwalten.

Planspiele

Um einen DHCP-Server sinnvoll einzusetzen, sollte er auf einem Rechner installiert werden, der im Dauerbetrieb ist.

Wir gehen im Weiteren davon aus, dass alle Rechner bereits physikalisch vernetzt sind und sich im gleichen Subnetzbefinden. In der Regel werden Sie nicht über echte IP-Adressen für Ihr Netz zu Hause verfügen, sondern ein privates Netzmit IP-Masqerading nutzen. Unsere Beispiele verwenden daher die Adressen 192.168.2.1 bis 192.168.2.254, ein privates Netz.

DHCP verteilt normalerweise dynamische IP-Adressen. Wie beschrieben, ist es möglich, dass Adressen wiederverwendet werden. Solange ausreichend IP-Nummern frei sind, weist der DHCP-Server einem Rechner die Adresse zu, die er bereits letztes Mal hatte.

Wie für so viele Zwecke gibt es auch für DHCP unter Linux verschiedene Implementierungen. Wir beziehen uns im Folgenden auf die des “Internet Software Consortium” (ISC) [2], die u. a. von SuSE und Debian mitgeliefert wird.

Server-Bau

Der DHCP-Server braucht selbst eine statische IP-Adresse, die von Hand konfiguriert werden muss. Bei SuSE geht das auch über den Menüpunkt Administration des Systems / Netzwerk konfigurieren / Netzwerk Grundkonfiguration in yast oder wie in Abbildung 1 gezeigt über yast2. Vermutlich ist der Rechner, auf dem Sie den DHCP-Server aufsetzen, auch für Ihren Internet-Zugang verantwortlich. Deshalb geben wir diesem Gateway der Einfachheit halber die Adresse 192.168.2.1.

Abbildung 1: Statische Netzwerkkonfiguration mit yast2

Abbildung 1: Statische Netzwerkkonfiguration mit yast2

Installieren Sie nun den Ihrer Distribution beiliegenden DHCP-Server (auch “DHCP-Daemon” genannt). Bei SuSE Professional befindet sich das Paket in der Serie net und heißt dhcp; in der Personal-Edition ist es jedoch nicht enthalten. Auch andere Distributionen (etwa Debian) geben dem entsprechenden Paket diesen Basisnamen. Den Quellcode zum Selbstkompilieren finden Sie zum Beispiel unter [3].

Listing 1

dhcp.conf

default-lease-time 600;
max-lease-time 7200;
option domain-name-servers 194.25.2.129;
subnet 192.168.2.0 netmask 255.255.255.0 {
  range 192.168.2.100 192.168.2.250;
  option routers 192.168.2.1;
}

Einmal installiert, konfigurieren Sie Ihren DHCP-Server, indem Sie die Datei /etc/dhcp.conf editieren. Sie sollte die Zeilen aus Listing 1 beinhalten, wobei Sie die numerischen Angaben Ihren Gegebenheiten anpassen: Die lease time gibt den Zeitraum (in Sekunden) an, nachdem ein Rechner seine IP-Adresse beim Server verlängern muss. Ansonsten darf letzterer sie erneut vergeben. Der Client darf einen Wunsch äußern, der berücksichtigt wird, sofern er die max-lease-time nicht übersteigt. Falls kein Wunsch vorliegt, wird default-lease-time als Ausleihdauer festgelegt.

Interessanter sind die anderen Einträge: Der DHCP-Server kann seinen Klienten optional mitteilen, welcher DNS-Serverzur Verfügung steht. Das domain-name-servers-Beispiel im Listing gilt für T-Online-Kunden, bitte ändern Sie diesen Eintrag entsprechend!

range gibt an, welche IP-Adressen dynamisch vergeben werden sollen. Im Beispiel fangen wir erst bei 100 an, denn es empfiehlt sich, ein paar Adressen freizulassen, um sie bei Bedarf von Hand verteilen zu können. Insbesondere darf der DHCP-Server seine eigene Adresse nicht dynamisch noch einmal vergeben!

Der Eintrag routers ist optional. Hier können Sie den Klienten mitteilen, welches Gateway sie verwenden sollen, d. h., welcher Rechner im eigenen Subnetz dafür zuständig ist, aus diesem hinausgehenden Verkehr ins Internet oder in ein anderes lokales Subnetz weiterzuleiten.

Abbildung 2: Herausfinden der Hardwareadresse

Abbildung 2: Herausfinden der Hardwareadresse

Sie können auch bestimmen, dass der DHCP-Server statische Adressen an bestimmte Rechner vergibt. Hierzu müssen Sie die Hardware-Adresse (auch: MAC-(“Media Access Control”-)Adresse”) Ihrer Netzwerkkarte kennen, eine weltweit eindeutige Hexadezimalzahl. Diese Information gibt Ihnen der Befehl ifconfig (Abbildung 2). Wenn Sie also aus nostalgischen Gründen auf eine bestimmte IP-Adresse für einen bestimmten Rechner bestehen, legen Sie dies folgendermaßen in der dhcp.conf fest:

host foo {
  hardware ethernet 00:90:27:A4:D4:15;
  fixed-address 192.168.2.42;
}

Damit die neue Konfiguration wirksam wird, müssen Sie den DHCP-Server als Benutzer root (neu-)starten. Bei den meisten Distributionen geht das mit

/etc/init.d/dhcp restart

(Un-)Folgsame Klienten

Mit ein wenig Glück finden Ihre Rechner nach dem Server-Start ohne weiteres Zutun ins Netz. Falls nicht, haben Sie ihnen zu einem früheren Zeitpunkt eine statische Adresse verpasst, oder es ist keine DHCP-Client-Software installiert. SuSE-Benutzer können wiederum yast verwenden, um sicherzustellen, dass keine statische Adresse vergeben wird. Wählen Sie unter Administration des Systems / Netzwerk konfigurieren / Netzwerk Grundkonfiguration das automatische Beziehen einer IP-Adresse per DHCP aus (Abb. 3). Bei yast2 finden Sie den entsprechenden Dialog unter Netzwerk/Basis / Konfiguration der Netzwerkkarte.

Abbildung 3: Netzwerkkonfiguration mit SuSEs yast

Abbildung 3: Netzwerkkonfiguration mit SuSEs yast

Wenn Sie nicht sicher sind, ob die DHCP-Client-Software bereits installiert ist, suchen Sie mithilfe des Paketmanagers nach einem Paket namens dhcpcd, dhcp-client oder dhclient; bei RPM-basierten Systemen etwa mit

rpm -qa | grep dhc

Auch andere Betriebssysteme erlauben eine Netzwerkkonfiguration per DHCP; MacOS und diverse Windows-Varianten benötigen nicht einmal zusätzliche Software. Prüfen Sie ggf. auch hier, ob vielleicht früher einmal eine statische IP-Adresse vergeben wurde, und wählen Sie stattdessen den automatischen Bezug der IP-Nummer.

Troubleshooting

Falls gar nichts zu funktionieren scheint, sollten Sie erst einmal sicherstellen, dass Sie sich auf Ihre Netz-Hardware verlassen können. Geben Sie einem weiteren Rechner eine statische IP-Adresse. Dazu müssen Sie die mühsam erstellte permanente Konfiguration nicht einmal anfassen, wenn Sie als root folgendes Kommando eingeben:

ifconfig eth0 192.168.2.2 up

Damit sagen Sie der ersten Netzwerkkarte (eth0), dass sie jetzt mit der IP-Adresse 192.168.2.2 verbunden ist. Ob eine Verbindung zwischen zwei Rechnern (zum Beispiel dem Testrechner und dem Gateway) besteht, probieren Sie mit dem Kommando ping aus:

ping 192.168.2.1

Prüfen Sie nun auf dem Gateway-Rechner, ob der DHCP-Server läuft:

ps aux | grep dhcp

Wird kein entsprechender Prozess ausgegeben, sollten Sie den Server neu starten und ggf. die Konfiguration auf Tippfehler überprüfen. Sie können auch explizit eine DHCP-Anfrage starten, ohne den Client-Rechner neuzustarten. Tippen Sie auf diesem als root folgenden Befehl ein (Je nach verwendeter Distribution heißt das Skript geringfügig anders):

/etc/init.d/dhclient restart

Gibt es eine Fehlermeldung?

Wenn Sie keine Hardware-Probleme haben, ein DHCP-Server läuft und die Anfragen eines Rechners dennoch scheinbar nicht beantwortet werden, handelt es sich wohl um einen schwierigeren Fall. Wurde vielleicht eine IP-Adresse doppelt vergeben: einmal statisch, einmal dynamisch? Ist ohne Ihr Wissen ein weiterer DHCP-Server im Netz aktiv? Eventuell vorhandene Windows-Rechner gehören zu den Verdächtigen: Hier muss “Internet Connection Sharing” ausgeschaltet sein, sonst verteilen auch sie Adressen.

Weiteres Wissenswertes

Weitere Informationen finden Sie übrigens im DHCP-Mini-HOWTO [4] des Linux Documentation Projects. Sollten Sie im Zuge Ihrer Netzwerkbasteleien über das Wort “BOOTP” stolpern: Dabei handelt es sich um ein älteres Protokoll zur dynamischen Netzwerkkonfiguration. DHCP ist rückwärtskompatibel zu BOOTP, d. h., auch ein Client, der nur BOOTP spricht, wird von einem DHCP-Server versorgt. Bei letzterem kann es sich übrigens auch um den ab Seite 35 vorgestellten fli4l-Router handeln, der mit einer Diskette einen festplattenlosen 486er in einen DSL-Server verwandelt.

Glossar

Subnetz

Unter einem Subnetz versteht man Rechner, die direkt miteinander verbunden sind, also an einem gemeinsamen Hub oder einem BNC-Kabel hängen.

privates Netz

“Echte” IP-Adressen dürfen Sie nur benutzen, wenn Ihr Provider sie Ihnen zugeteilt hat. Für ein internes Netz können Sie beliebige private Adressen benutzen. Anfragen von und zu diesen Adressen werden nur im lokalen Netz weitergeleitet, nicht im Internet. Reserviert für private Netze sind die Adressen 10.0.0.0 bis 10.255.255.255, 172.16.0.0 bis 172.31.255.255 sowie 192.168.0.0 bis 192.168.255.255.

DNS-Server

Domain Name Server. DNS-Server erlauben die Benutzung von Rechnernamen statt numerischer IP-Adressen, so dass Sie z. B. www.linux-user.de benutzen können, anstatt sich 213.69.168.121 merken zu müssen.

Hexadezimalzahl

Anders als das alltägliche, auf Zehnerpotenzen beruhende Dezimalsystem stellt man Zahlen im Hexadezimalsystem in Bezug auf die Basis 16 dar. Für die Darstellung der Ziffern 10 bis 15 benutzt man die Buchstaben A bis F. Der Dezimalzahl 30 entspricht so die “Hex-Zahl” 1E: 1 x 16^1 + 14 x 16^0.

grep

Dieses Kommando sucht in den ihm übergebenen Daten nach einer Zeichenkette (hier: dhc) und gibt die entsprechende Zeile(n) aus. Im Beispiel kommen die Eingabedaten aus der Pipe |, die die Ausgabe des Kommandos rpm -qa (die Auflistung aller installierten RPM-Pakete) an grep weiterleitet.

LinuxUser 03/2002 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben