Router-Konfiguration unter LINUX


Kernel-Konfiguration Hardware-Konfiguration Einrichtung des Routers Testen der Konfiguration Zurück


1. Konfiguration des LINUX - Kernels


Bei einer Neuinstallation von LINUX ist darauf zu achten, daß bei der Erstellung des Kernels folgende Funktionen eingebunden werden:

Sollte LINUX bereits auf dem System installiert sein, ist zu überprüfen ob der vorhandene Kernel die oben genannten Funktionen unterstützt.

Ist bei der Installation einer der LINUX Standard-Kernel verwendet worden, so bietet dieser im Normalfall kein IP - forwarding und muß für den Einsatz des PCs als Router neu kompiliert werden.


1.1 Neukompilierung des LINUX - Kernels


Zur Neukompilierung des Kernels loggen Sie als root ein und starten Sie das Konfigurationsprogramm wie folgt:

Input

LINUX stellt Ihnen nun eine Reihe von Fragen, mit denen Sie Ihr System optimal an Ihre Bedürfnisse anpassen können.

Hier sollen jedoch nur die Punkte näher beschrieben werden, die die Konfiguration des Netzwerks betreffen.

Sollten Sie bei der Beantwortung der nicht behandelten Fragen Probleme haben, wählen Sie bitte die Voreinstellungen, die Ihnen LINUX anbietet oder schlagen Sie in Ihrem LINUX-Handbuch unter dem betreffenden Punkt nach.

Punkte, die die Konfiguration der Netzwerkeinstellungen betreffen sind


1.1.1 General setup


In diesem Abschnitt ist nur die Frage relevant, ob überhaupt ein Netzwerk konfiguriert werden soll. Beantworten Sie also die Frage

mit Y für englisch YES.


1.1.2 Networking options


In diesem Abschnitt können Sie zusätzliche Funktionen für das Netzwerk auswählen. Zur Auswahl stehen folgende Möglichkeiten:

Zur Einrichtung des Computers als Router müssen die Fragen

und

unbedingt mit Y für ja beantwortet werden.


1.1.3 Network device support


In diesem Abschnitt wird der Treiber für Ihre Hardware ausgewählt. Beantworten Sie hier auf jeden Fall die Frage

mit Y für ja um die Unterstützung von Netzwerkkarten zu aktivieren.

Die folgenden Fragen befassen sich mit zusätzlichen Protokollen, wollen Sie z.B. eine Serielle Verbindung via SLIP nutzen, beantworten Sie die Frage

mit Y für ja. Benötigen Sie diese Funktionen nicht, so beantworten Sie die Frage mit n für nein. Ebenso verfahren Sie mit den folgen Punkten, PPP support, PLIP support und so fort.

Wichtig sind die darauf folgenden Fragen, die die Auswahl der Treiber Ihrer Netzwerkkarten betreffen. Hier sollten Sie sich genau informieren, welcher Treiber Ihre Hardware unterstützt, da LINUX bei einer falschen Auswahl beim Systemstart keine Netzwerkkarte erkennt.

Beantworten Sie, wenn Sie z.B. die im Rechenzentrum erhältlichen SCM ULTRA Karten verwenden die Frage

mit Y für ja.

Sollten Sie sich nicht sicher sein, mit welchem Treiber Ihre Netzwerkkarten am besten zusammenarbeiten, z. B. weil Sie Karten älteren Typs verwenden, für die keine Handbücher mehr existieren, sollten Sie alle Treiber installieren, die zu Ihren Karten passen könnten um spätere Probleme auszuschließen. LINUX wählt dann automatisch beim Booten den optimalen Treiber für Ihre Hardware.

Nach Beantwortung aller Fragen sollte der Abschnitt in etwa wie folgt aussehen:


1.1.4 Filesystems


Hier sind zwei Zeilen relevant:

Wenn Sie einen NFS client starten wollen sollten Sie die Frage

mit Y für ja beantworten.

Ebenfalls mit ja beantworten sollten Sie die Frage nach

da viele Netzwerkprogramme darauf zurückgreifen.


1.2 Kompilierung starten


Nach Beantwortung aller Fragen ist die Konfiguration des neuen Kernels beendet und die Kompilierung kann beginnen.

Starten Sie die Kompilierung mit folgenden Befehlen:

Input

LINUX beginnt nun mit der Erstellung des neuen Kernels, abhängig von Rechnerleistung und Umfang der eingebundene Funktionen kann das schon etwas Zeit in Anspruch nehmen ( bei einem i486 DX4/100 ca. 30-45 Min).

Nach erfolgreicher Kompilierung wird der LINUX - Bootmanager LILO mit dem Befehl

Input

an den neuen Kernel angepaßt.

Nach einem Neustart des Systems steht der neue Kernel zur Verfügung. Falls mit dem neuen Kernel Probleme auftreten sollten, legt LINUX automatisch eine Sicherheitskopie des alten Kernels an, auf den im Notfall zurückgegriffen werden kann.


2. Konfiguration der Hardware


Zum Einsatz des Computers als Router sind zwei Netzwerkkarten erforderlich. Bauen Sie diese in Ihren PC ein, folgen Sie dabei den Anweisungen in der Bedienungsanleitung Ihrer Netzwerkkarten.

Beachten Sie dabei die Einstellungen von I/O - Basisadresse und IRQ, falls diese hardwaremäßig auf Ihren Karten eingestellt werden müssen, vermeiden Sie Konflikte mit bereits vorhandener Hardware.

Werden Ihre Karten softwaremäßig konfiguriert, starten Sie Ihren PC im DOS-Modus oder, falls sie kein DOS auf Ihrem Computer installiert haben, starten Sie Ihren PC mithilfe einer DOS-Startdiskette und starten Sie das für Ihre Netzwerkkarten vorgesehene Konfigurationsprogramm ( am Beispiel der SMC - Karten ezstart.exe ).

Konfigurieren Sie Ihre Netzwerkkarten, folgen Sie dabei den Anweisungen des zugehörigen Handbuchs.

Notieren Sie sich jeweils die Einstellungen Ihrer Karten, bei der späteren Konfiguration des Routers sollten Sie wissen, welche der beiden Karten mit dem lokalen- und welche mit dem äußeren Netz verbunden ist. Bauen Sie notfalls zunächst nur eine Karte ein, merken Sie sich die Einstellungen und den Steckplatz und konfigurieren Sie erst dann die zweite Karte.


2.1 Einrichtung der Netzwerkkarten unter LINUX


Nach erfolgreicher Konfiguration Ihrer Karten sollten Sie versuchen LINUX zu starten. Achten Sie hierbei auf die Bildschirmausgabe. Insbesondere auf Ausgaben der Art

Gibt LINUX obige Zeile während des Bootens aus, so ist eine Ethernetkarte erfolgreich vom System erkannt worden.

Überprüfen Sie die korrekte Erkennung der Hardware mit dem Befehl

Input

Als Ausgabe sollten Sie in etwa folgendes erhalten

Wundern Sie sich nicht, falls Ihren Karten noch keine IP-Adressen zugewiesen sind, wichtig ist hier vorerst allein die Tatsache, daß nach Eingabe von ifconfig die Karte eth0 erfolgreich erkannt wurde, die weitere Konfiguration wird im folgenden Kapitel behandelt.

Sie werden sich fragen, was mit der zweiten Ethernetkarte geschehen ist:

LINUX sucht während des Bootvorgangs standardmäßig nur nach einer Netzwerkkarte im System. Jede weitere Karte muß manuell beim Kernel angemeldet werden.


2.2 LINUX erkennt nur eine oder gar keine Netzwerkkarte


Erkennt LINUX nur eine oder gar keine der beiden Netzwerkkarten gibt es einige Möglichkeiten diese manuell in das System einzubinden:


2.2.1 Setzen der Parameter der Ethernetkarten zu Beginn des Bootvorgangs


Wenn Sie den Standard LINUX - Bootmanager LILO verwenden, können sie vor dem Start des eigentlichen Systems die Werte der nicht automatisch erkannten Hardware manuell an das System übergeben.

Hierzu sollten Sie bei LILO das 'Bootdelay' aktiviert haben, d.h. LILO läßt vor dem Start des LINUX - Kernels die von Ihnen gewählte Zeitspanne verstreichen, in der Sie die Möglichkeit haben, den Bootvorgang zu unterbrechen.

Drücken Sie hierzu, sobald LILO auf dem Bildschirm erschienen ist die linke SHIFT-Taste, Sie gelangen in ein Menü, das Ihnen erlaubt unterschiedliche Systeme zu booten.

Sollten Sie neben LINUX noch weitere Betriebssysteme installiert haben, wählen Sie hier bitte die Bootoption, die Ihr LINUX - System startet. (In unserem Beispiel die Option Linux ). Mit der TAB-Taste erhalten Sie eine Liste der Systeme, die Sie booten können:

Geben Sie den Namen der Option ein, die den LINUX - Kernel startet, dahinter haben Sie die Möglichkeit die Werte der nicht erkannten Hardware, in unserem Beispiel die Werte der Ethernetkarten, manuell an den Kernel zu übergeben.

Das muß in folgender Form geschehen:

Für eine Ethernetkarte ergibt sich daraus:

Wenn Sie Ihre erste Ethernetkarte eth0 mit den Werten = IRQ 5 und I/O Basisadresse = 280 konfiguriert haben, so ergibt sich daraus folgende Zeile:

Entsprechend können auch mehrere Geräte hintereinander angemeldet werden: Sollte LINUX Ihre beiden Netzwerkkarten nicht erkannt haben, können Sie folgende Eingabe im LILO - Bootmenü versuchen:

Input

wobei Sie den hier angegebenen IRQ und die Basisadresse bitte durch die von Ihnen eingestellten Werte Ihrer Ethernetkarten ersetzen.

Beim folgenden Bootvorgang sollte LINUX jetzt beide Netzwerkkarten erkennen und in das System einbinden.

Überprüfen Sie den Erfolg wie oben durch Eingabe des Befehls

Input

Jetzt sollten Sie die Konfigurationsdaten beider Ethernetkarten erhalten: Eine weitere Möglichkeit Ethernetkarten in das System miteinzubinden (insbesondere bei softwaremäßig konfigurierten Karten) besteht darin, LINUX nur mitzuteilen, nach wievielen

Netzwerkkarten gesucht werden soll.

Hierzu geben Sie im Bootmenü folgende Zeile ein

Input

Das veranlaßt LINUX dazu, nach zwei Ethernetkarten im System zu suchen und wenn möglich deren Konfiguration automatisch zu bestimmen.


2.2.2 Editieren des LILO - Bootmanagers


Da es auf die Dauer nicht sinnvoll ist bei jedem Booten die Hardwarekonfiguration per Hand eizutippen, besteht die Möglichkeit den LILO - Bootmanager zu editieren und damit die Konfigurationsdaten automatisch bei jedem Bootvorgang an das System zu übergeben.

Das kann auf zwei Arten geschehen:

Falls Sie sich für die erste Methode entscheiden, starten Sie YaST und wählen Sie dort den Punkt

In dem darauf erscheinenden Fenster bewegen Sie sich mithilfe der TAB-Taste in die Zeile hinter dem Punkt 'append' und tragen Sie dort die gleichen Werte wie oben (im Bootmenü) ein, z.B.

Input

Verlassen Sie YaST und starten Sie LINUX mit dem reboot - Befehl neu.

LINUX sollte dann in der Lage sein, die angegebene Hardware automatisch zu erkennen.

Möchten Sie die Änderungen lieber von Hand ausführen, müssen Sie die Datei lilo.conf mit einem Text-Editor (z.B. vi) bearbeiten:

Input

Fügen Sie in der Datei die folgende Zeile ein:

Input

Die Anführungszeichen sind dabei zwingend vorgeschrieben.

Nach Einfügen der Append - Zeile sollte die lilo.conf etwa so aussehen :

Speichern Sie die editierte Datei ab und installieren Sie das geänderte LILO neu durch Eingabe von

Input

lilo meldet dann nacheinander die installierten Systeme: Bei einem Neustart des Systems werden die Änderungen in der lilo.conf wirksam.


2.2.3 Editierung der Kernel - Netzwerkkarten -Tabelle /drivers/net/Space.c


Die dritte Möglichkeit der Einbindung der Netzwerkkarten besteht in der Änderung der Einträge in der Kernel -Netzwerkkarten - Tabelle Space.c .

Dabei sollte beachtet werden, daß die in den vorangehenden Kapiteln beschriebenen Methoden einer Veräderung der Kernel-Quellen vorzuziehen sind, da sich hieraus, z.B. bei Updates, Probleme ergeben können.

Für spezielle Konfigurationen, z.B. wenn Sie mehr als 4 Netzwerkkarten einsetzen müssen oder Sie aus diversen Gründen den Gerätenamen ethx nicht verwenden können, kann jedoch eine Konfiguration Ihrer Hardware auf diesem Wege nützlich sein.

Editieren Sie die Datei

an den von Ihnen benötigten Punkten.


3. Einrichtung des Routers


Wenn beide Netzwerkkarten erfolgreich erkannt werden und der LINUX-Kernel IP-forwarding unterstützt, kann die Konfiguration der Netzwerkeinstellungen vorgenommen werden:

Die meisten Installationsprogramme (wie zum Beispiel YaST für die S.u.S.E.-Distribution) besitzen dazu Dienstprogamme, die eine benutzerführende Oberfläche bieten und eine Netzwerkinstallation erleichtern sollen. Hier wird jedoch im Normalfall nur die Konfiguration einer Netzwerkkarte vorgenommen, eine zweite Karte wird oft nicht unterstützt und muß von Hand eingerichtet werden.

In den folgenden Konfigurationsbeispielen besitzt unser Rechner (wie in den meisten Fällen) zwei Ethernetkarten, eth0 und eth1. Die erste Karte (eth0) hängt am lokalen Netz, die zweite (eth1) am Übergeordneten Netz, sie soll die Daten des lokalen Netzes auf das äußere Netz weiterleiten.


3.1 Die Kofigurationsdateien



3.1.1 Die Konfigurationsdatei /etc/rc.d/rc.inet1


Fast alle Einstellungen zur Einrichtung eines TCP/IP - Netzwerks werden in der Datei

vorgenommen. Dieses Shell-Skript startet während des Bootens die wichtigsten Funktionen des Netzwerk-Interfaces: Hier werden

mit dem Befehl /sbin/ifconfig für das jeweilige Interface gesetzt.

Betrachten wir eine Beispielkonfiguration (zur besseren Erläuterung sind die Zeilen nummeriert):

1 #! /bin/sh

2 #

3 # rc.inet1

4 # Version:

5 #

6

7 HOSTNAME='cat /etc/HOSTNAME'

8

9 # Attach the loopback device.

10 /sbin/ifconfig lo 127.0.0.0

11 /sbin/route add -net 127.0.0.0

12

13 # IF YOU HAVE AN ETHERNET CONNECTION, use these lines below to configure the

14 # eth0 interface. If you're only using loopback or SLIP, don't include the

15 # rest of the lines in this file

16

17 # Edit for your setup.

18 IPADDR="134.147.2.1" # REPLACE with YOUR IP address

19 NETMASK="255.255.255.224" # REPALCE with YOUR netmask !

20 NETWORK="134.147.2.0" # REPLACE with YOUR network address !

21 BROADCAST="134.147.2.31" # REPLACE with YOUR broadcast address, if you have one. If not, leave blank and edit below.

22 GATEAWAY="134.147.236.18" # REPLACE with YOUR gateaway address !

23

24 /sbin/ifconfig eth0 ${IPADDR} broadcast ${BROADCAST} netmask ${NETMASK}

25 # /sbin/ifconfig eth0 ${IPADDR} netmask ${NETMASK}

26

27 /sbin/ifconfig eth1 134.147.236.24 netmask 255.255.255.128

28

29 # Uncommend these to set up your IP routing table.

30 /sbin/rout add -net ${NETWORK} netmask ${NETMASK} broadcast ${BROADCAST}

31 /sbin/rout add default eth1

32

33 # End of rc.inet1

Bei der weiteren Konfiguration unseres Rechners als Router werden wir später auf diese Beispiel-rc.inet1-Datei zurückkommen.


3.1.2 Die Datei /etc/hosts


In der Datei /etc/hosts werden die Host-Namen der einzelnen Rechner im lokalen Netz eingetragen. Nehmen wir ein Beispiel, hier trägt unser Rechner lokal den Namen router und und soll unter dem vollen Domain-Namen router.phys.ruhr-uni-bochum.de bekannt sein. An unser lokales Netz sind zwei weitere Rechner angeschlossen, der Rechner space und der Rechner sun. Außerdem ist das sogenannte loopback-device eingerichtet. Hierbei handelt es sich um einen virtuellen Host, mit dessen Hilfe ein Netzwerk auf einem einzelnen Rechner simuliert werden kann. Dies kann unter Umständen zu Testzwecken von Nutzen sein, zum Beispiel zur Überprüfung der Konfiguration eines Mail-Servers o.ä. . Das loopback-device erhält definitionsgemäß die IP Adresse 127.0.0.1 , die Netzwerk Adresse 127.0.0.0 und die Netzmaske 255.0.0.0 . In unserem Beispiel erhält es den Host-Namen localhost.

Übertragen wir dieses Beispiel, so sollte die Datei /etc/hosts folgendermaßen aussehen:


3.2 Editieren der Konfigurations-Dateien


Zur Einrichtung der Datei /etc/hosts benutzen sie am besten unsere Beispieldatei aus Punkt 3.1.2 . Diese Beispieldatei läßt sich leicht auf Ihr Netzwerk übertragen, ersetzen Sie die Namen aus unserem Beispiel durch die Namen der Rechner in Ihrem Netzwerk. Wenn sie ein loopback-device einrichten wollen, übernehmen sie die oben stehende Adresse.

Etwas komplizierter wird es da schon mit der Datei /etc/rc.d/rc.inet1. Auch hier vergleichen wir am besten die nötigen Eiträge mit der rc.inet1-Beispieldatei aus Punkt 3.1.1. Im folgenden wollen wir versuchen, diese Beispielkonfiguration auf Ihr Netzwerk zu übertragen. Beginnen wir mit Zeile 7:

Den Eintrag

brauchen Sie nicht zu verändern, er veranlaßt LINUX dazu in der (frisch editierten) Datei /etc/hosts den eigenen Host-Namen zu erfragen.

In den Zeilen 10 und 11 wird das oben genannte loopback-device eingerichtet. Dazu werden zwei Befehle eingesetzt, die wir später noch häufiger brauchen und sich am Beispiel der Einrichtung des loopback-devices wunderbar erklären lassen:

Der Befehl /sbin/ifconfig setzt oder überprüft die Konfiguration der Netzwerk-Devices (z.B. die der Ethernetkarten) zur Einbindung in TCP/IP. Durch Aufruf von

werden dem Netzwerk-Device die IP-Adresse, die Netzmaske und der Broadcast zugewiesen. Der Aufruf erfolgt nach dem Schema

Als Beispiel:

Durch Aufruf von ifconfig ohne Parameter wird die aktuelle Konfiguration aller Netzwerk-Devices für TCP/IP ausgegeben.

Das loopback-device erhält durch Aufruf von

die IP Adresse 127.0.0.1 .

Zur Kommunikation zwischen Rechnern innerhalb eines lokalen Netzes genügt die Konfiguration der Netzwerk-Devices mit ifconfig. Soll jedoch auch eine Kommunikation mit Rechnern in anderen Netzen ermöglicht werden, muß irgendjemand LINUX mitteilen, auf welchem Weg es diese Rechner erreichen kann. Informationen über solche Wege (Routen) werden in der Routing-Tabelle eingetragen, und zwar durch den route-Befehl.

Der route-Befehl kann sowohl Einträge der Routing-Tabelle hinzufügen durch das Argument add, als auch Einträge der Tabelle löschen durch das Argument delete.

Die Zieladresse, also die Route über die der Rechner erreicht werden kann, kann in unterschiedlicher Weise übergeben werden: Entweder als IP-Adresse, als Netzwerk-Adresse oder als Rechnername aus der Datei /etc/hosts. Eine weitere Möglichkeit besteht in der Angabe des Schlüsselwortes default, da die meisten Routen schon während des Systemstarts in die Routing-Tabelle aufgenommen werden.

Der route-Befehl wird nach folgendem Schema aufgerufen:

Als Beispiel:

Durch den Befehl

wird die Netzwerk-Adresse unter der unser localhost zu finden ist in die Routing-Tabelle eingetragen.

In den Zeilen 18 bis 22 der Beispiel-rc.inet1-Datei werden die Adressen für die Netzwerkkarte eingetragen, die mit dem lokalen Netz verbunden ist (im Beispiel eth0). Ersetzen Sie diese durch die Adressen Ihres Netzwerkes.

Die Zeile 24 sorgt dafür, daß die Netzwerkkarte eth0 mit den Werten, die Sie in den Zeilen 18 bis 22 eingetragen haben konfiguriert wird. Sollten Sie mit den Einstellungen aus dieser Zeile Probleme haben, kommentieren Sie sie aus und versuchen Sie es mit Zeile 25.

In Zeile 27 wird die Netzwerkkarte konfiguriert, die den Rechner mit dem äußeren Netzwerk verbindet (eth1). Ersetzen Sie hier die Werte durch die für Ihr Netzwerk relevanten Adressen (das war auch schon die letzte Veränderung, die Sie in der Datei rc.inet1 vornehmen mußten).

Jetzt, da beide Netzwerkkarten mit den korrekten Adressen versehen sind, müssen wir die Routen, auf denen Rechner aus beiden Netzen miteinander kommunizieren können, in die Routing-Tabelle eintragen. Das geschieht in den Zeilen 30 und 31.

Speichern Sie die Datei ab und versuchen Sie einen Neustart des Systems.


4. Überprüfen der Konfiguration


Nachdem Ihr System neu gestartet ist, können Sie die Konfiguration mit Hilfe des ping-Befehls testen.

Suchen Sie sich zu diesem Zweck zuerst einen Rechner aus dem lokalen Netzt aus (wir greifen auf unseren Beispiel-Rechner space zurück) und geben Sie ein:

Input

Ersetzen Sie die IP-Adresse durch die Ihres lokalen Testobjekts. Als Antwort sollten Sie etwa folgendes erhalten:

Sollten Sie hier keine Antwort bekommen, ist keine Verbindung zwischen den Rechnern erfolgt. Überprüfen Sie die Konfiguration Ihres Routers und versuchen Sie es dann nocheinmal.

Bei erfolgreicher Verbindung versuchen Sie ein ping auf einen Rechner des äußeren Netzes, zum Beispiel auf den Rechner 134.147.32.40:

Input

Erhalten Sie auch hier eine positive Rückmeldung, so sollten Sie den Rechner wechseln und ein ping von einem Rechner innerhalb des lokalen Netzes auf einen äußeren Rechner schicken. Funktioniert auch das, war Ihre Konfiguration erfolgreich.



Tipsy 26.06.1996