Im Katalog suchen

Linux - Wegweiser zur Installation & Konfiguration, 3. Auflage

Online-Version

Copyright © 2000 by O'Reilly Verlag GmbH & Co.KG

Bitte denken Sie daran: Sie dürfen zwar die Online-Version ausdrucken, aber diesen Druck nicht fotokopieren oder verkaufen. Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

Wünschen Sie mehr Informationen zu der gedruckten Version des Buches Linux - Wegweiser zur Installation & Konfiguration oder wollen Sie es bestellen, dann klicken Sie bitte hier.


vorheriges Kapitel Inhaltsverzeichnis Stichwortverzeichnis nächstes Kapitel

Vernetzung mit TCP/IP

Linux unterstützt eine vollständige Implementierung der Netzwerkprotokolle TCP/IP (Transmission Control Protocol/Internet Protocol). TCP/IP hat sich weltweit zur erfolgreichsten Methode der Vernetzung entwickelt. Mit Linux und einer Ethernet-Karte können Sie Ihren Rechner in ein LAN (Local Area Network) einbinden oder, wenn die notwendigen Netzverbindungen vorhanden sind, in das Internet - das weltumspannende TCP/IP-Netzwerk.

Es ist nicht schwierig, ein kleines lokales Netz von Unix-Rechnern zu verbinden. Sie brauchen lediglich einen Ethernet-Controller in jedem Rechner und die passenden Ethernet-Kabel und andere Hardware. Falls Ihre Firma oder Universität einen Anschluß an das Internet hat, können Sie Ihren Linux-Rechner problemlos in dieses Netzwerk mit einbinden.

Das TCP/IP von Linux hat Höhen und Tiefen erlebt. Schließlich ist die Implementierung eines ganzen Protokoll-Stacks von Grund auf keine Sache, die man aus Spaß an der Freude mal eben am Wochenende erledigt. Andererseits hat der Code für das Linux-TCP/IP ganz enorm von den Horden von Testern und Entwicklern profitiert, die sich mit ihm befaßt haben; im Laufe der Zeit sind auf diese Weise viele Fehler und Konfigurationsprobleme beseitigt worden.

Die aktuelle Implementierung von TCP/IP und verwandten Protokollen für Linux läuft unter dem Namen NET-4. Das hat mit der sogenannten NET-2-Version des BSD-Unix nichts zu tun; in diesem Zusammenhang bezeichnet NET-4 einfach die vierte Implementierung von TCP/IP für Linux. Vor NET-4 gab es (wenig überraschend) NET-3, NET-2 und NET-1, das ungefähr mit der Kernel-Version 0.99.pl10 ausrangiert wurde. NET-4 unterstützt fast alle Fähigkeiten, die Sie von einer TCP/IP-Implementierung für Unix erwarten dürfen, ebenso eine Reihe verschiedener Hardware für die Vernetzung.

NET-2 von Linux unterstützt auch SLIP, das Serial Line Internet Protocol, und PPP, das Point-to-Point Protocol. Mit SLIP oder PPP sowie einem Modem können Sie sich per Wählzugang in das Internet begeben. Falls Ihre Firma oder Universität den Zugang per SLIP oder PPP anbietet, können Sie sich über die Telefonleitung in den SLIP- oder PPP-Server einwählen und Ihren Rechner zu einem Bestandteil des Internet machen. Falls Ihr Rechner dagegen schon einen Ethernet-Zugang zum Internet hat, können Sie ihn als SLIP- oder PPP-Server konfigurieren.

In den folgenden Abschnitten werden wir SLIP nicht mehr erwähnen, weil heutzutage die meisten Leute PPP verwenden. Wenn Sie SLIP auf Ihrem Rechner verwenden wollen, können Sie alle notwendigen Informationen in Linux - Wegweiser für Netzwerker finden.

Icon

[83]

Neben dem Linux Network Administrator's Guide enthält das NET-3-HOWTO von Linux eine mehr oder weniger vollständige Beschreibung der Konfiguration von TCP/IP und PPP unter Linux. Das Ethernet-HOWTO von Linux ist ein ähnliches Dokument, das die Konfiguration einiger Treiber für Ethernet-Karten unter Linux beschreibt.

Icon

[35]

Interessant ist außerdem TCP/IP Netzwerk Administration von Craig Hunt. Es enthält alles über die Benutzung und Konfiguration von TCP/IP auf Unix-Rechnern. Falls Sie vorhaben, ein Netzwerk mit Linux-Rechnern aufzubauen, oder sich ernsthaft mit TCP/IP befassen wollen, sollten Sie über das Wissen verfügen, das dieses Buch zum Thema Netzwerkverwaltung darbietet.

Icon

[37]

Wenn es Ihnen wirklich ernst mit der Einrichtung und dem Betrieb von Netzwerken ist, sollten Sie wahrscheinlich auch DNS und BIND von Cricket Liu und Paul Albitz lesen. Dieses Buch erklärt Ihnen in einem angenehm witzigen Stil alles, was man über Name-Server wissen muß.

TCP/IP-Konzepte

Icon

[33]

Damit Sie die Vielseitigkeit von TCP/IP in vollem Umfang schätzen (und nutzen) können, sollten Sie mit den zugrundeliegenden Konzepten vertraut sein. Transmission Control Protocol/Internet Protocol besteht aus einer Reihe von Protokollen (unser rätselhaftes Schlagwort für dieses Kapitel), die definieren, wie Rechner einerseits über ein Netzwerk miteinander, andererseits intern mit den anderen Schichten der Protokollfamilie kommunizieren sollen. Die beste Informationsquelle zum theoretischen Hintergrund der Internetprotokolle ist der erste Band von Douglas Comers Internetworking with TCP/IP sowie der erste Band von W. Richard Stevens TCP/IP Illustrated.

TCP/IP wurde ursprünglich für das »Advanced Research Projects Agency«-Netzwerk (ARPAnet) entwickelt, das für militärische und computerwissenschaftliche Forschungszwecke eingerichtet wurde. Aus diesem Grund wird TCP/IP manchmal als »DARPA-Internetprotokoll« bezeichnet. Seit jenen Tagen sind viele andere TCP/IP-Netze entstanden (etwa das NSFNET der National Science Foundation), ebenso wie Tausende von weiteren lokalen und regionalen Netzen auf der ganzen Welt. Alle diese Netze sind zu einem einzigen Konglomerat verbunden, das man als das Internet bezeichnet.

In einem TCP/IP-Netzwerk bekommt jeder Rechner eine IP-Adresse zugewiesen, die aus einer eindeutigen, 32 Bits langen Zahl besteht. Sie müssen gewisse Kenntnisse über die IP-Adressen haben, um Ihr Netzwerk planen und die Rechneradressen vergeben zu können. Die IP-Adresse wird in der Regel als »dotted quad« geschrieben: vier Dezimalzahlen, die durch Punkte getrennt werden. Ein Beispiel: Die (hexadezimale) IP-Adresse 0x80114b14 kann auch als 128.17.75.20 geschrieben werden.

Die IP-Adresse besteht aus zwei Teilen: der Netzwerkadresse und der Rechneradresse. Die Netzwerkadresse besteht aus den höherwertigen Bits der Adresse, die Rechneradresse aus den übrigen Bits. (Im allgemeinen ist jeder Rechner (host) ein eigenständiges System im Netzwerk.) Die Größe dieser beiden Felder hängt vom Typ des betreffenden Netzwerks ab. Ein Beispiel: In einem Klasse-B-Netz (bei dem das erste Byte der IP-Adresse einen Wert zwischen 128 und 191 enthält) ideizieren die ersten beiden Bytes das Netzwerk und die letzten beiden Bytes den Rechner (siehe auch Abbildung Abbildung ). In unserer Beispieladresse ist 128.17 die Adresse des Netzwerks, und die Rechneradresse ist 75.20. Anders ausgedrückt: Das System mit der IP-Adresse 128.17.75.20 ist der Rechner 75.20 im Netzwerk 128.17.

Screenshot

Abbildung 15-1: Eine IP-Adresse

Der Rechnerteil der IP-Adresse kann außerdem weiter unterteilt werden, um Adressen für Subnetze (subnets) zu bilden. Das Einrichten von Subnetzen bedeutet, daß ein großes Netz in kleine Teilnetze aufgeteilt wird, die unabhängig voneinander verwaltet werden können. So könnte eine Organisation beispielsweise ein einzelnes Klasse-B-Netz einrichten, das zwei Bytes für die Rechneradresse freihält - bis zu 65.534 Rechner in einem Netz.  Fußnoten 1 Die Organisation könnte dann die Verantwortung für die Verwaltung des Netzwerks auf mehrere Schultern verteilen, so daß jedes Subnetz von einer anderen Abteilung verwaltet wird. Mit Subnetzen können Organisationen zum Beispiel angeben, daß das erste Byte der Rechneradresse (das heißt das dritte Byte der gesamten IP-Adresse) die Subnetzadresse und das zweite Byte die Rechneradresse innerhalb des Subnetzes ist (siehe Abbildung 15-2). In diesem Fall bezeichnet die IP-Adresse 128.17.75.20 den Rechner 20 im Subnetz 75 des Netzes 128.17.

Screenshot

Abbildung 15-2: Eine IP-Adresse mit Subnetz

Prozesse (entweder auf demselben oder auf verschiedenen Rechnern), die per TCP/IP kommunizieren möchten, benutzen dazu in der Regel sowohl die IP-Adresse des Zielrechners als auch eine Portadresse. Die IP-Adresse des Zielrechners wird natürlich gebraucht, um Daten von einem Rechner aus ans Ziel zu leiten. Die Portadresse besteht aus einer 16 Bit langen Zahl, die einen bestimmten Dienst oder eine Anwendung auf dem Zielrechner bezeichnet, der/die die Daten empfangen soll. Man kann die Portnummern mit den Zimmernummern in einem großen Bürogebäude vergleichen - das Gebäude als Ganzes hat eine einzige IP-Adresse, aber verschiedene Firmen haben ihre eigenen Adressen innerhalb des Gebäudes.

Hier ein Beispiel für die Benutzung von IP-Adressen und Portnummern aus dem richtigen Leben: Das Programm telnet ermöglicht es dem Benutzer eines Rechners, auf einem anderen Rechner eine Login-Sitzung zu starten. Auf dem fremden Rechner läuft der telnet-»Dämon« telnetd, der an einem bestimmten Port auf eingehende Verbindungen wartet (in diesem Fall ist das die Portnummer 23).  Fußnoten 2

Der Benutzer, der telnet aufruft, gibt die Adresse des Zielrechners an, und das Programm telnet versucht, eine Verbindung zum Port 23 des fremden Rechners herzustellen. Wenn das gelingt, können telnet und telnetd miteinander kommunizieren, um dem Benutzer das Einloggen auf dem Zielrechner zu ermöglichen.

Beachten Sie, daß der telnet-Client auf dem lokalen Rechner eine eigene Portadresse benutzt. Diese Adresse wird mit dem Aufruf von telnet dynamisch an den Client vergeben. Der Grund hierfür ist, daß das fremde telnetd die Portnummer eines ankommenden telnet-Clients nicht vorab wissen muß. Wenn der Client die Verbindung aufbaut, wird unter anderem auch die eigene Portnummer an telnetd übertragen. Man kann sich telnetd als eine Firma mit allgemein bekannter Postanschrift vorstellen. Jeder Kunde, der mit dem telnetd eines bestimmten Rechners korrespondieren möchte, muß die IP-Adresse des Zielsystems kennen (quasi die Adresse des telnetd-Gebäudes). Er muß außerdem wissen, an welchem Port telnetd zu erreichen ist (das richtige Büro innerhalb des Gebäudes). Die Adresse und Portnummer des telnet-Clients dagegen stehen als »Absender« auf dem Briefumschlag.

Die TCP/IP-Familie besteht aus einer Reihe von Protokollen. Das Transmission Control Protocol (TCP) erledigt die zuverlässige, verbindungsorientierte Kommunikation zwischen zwei Prozessen, die auf verschiedenen Rechnern im Netz laufen können. Das User Datagram Protocol (UDP) weist Ähnlichkeiten mit TCP auf, bietet aber einen verbindungslosen, unzuverlässigen Dienst. Prozesse, die UDP benutzen, müssen bei Bedarf ihre eigenen Routinen für Empfangsbestätigung und Synchronisierung bereitstellen.

TCP und UDP senden und empfangen Daten in sogenannten Paketen. Jedes Paket enthält einen Informationsbrocken, der an ein anderes System gehen soll, und einen Header (etwa: Kopfzeile), in dem Zieladresse und Portnummer enthalten sind.

Das Internet Protocol (IP) ist in der Protokollhierarchie unterhalb von TCP und UDP angesiedelt; es ist für die Übertragung und das Routing (etwa: Ansteuern des Ziels) von TCP- und UDP-Paketen durch das Netz verantwortlich. Zu diesem Zweck verpackt IP jedes TCP- oder UDP-Paket in ein weiteres Paket (namens IP-Datagramm), das einen Header mit Routing- und Zielinformationen enthält. Im Header des IP-Datagramms stehen die IP-Adressen des sendenden sowie des empfangenden Rechners.

Beachten Sie, daß IP nichts über die Portadressen weiß; dafür sind TCP und UDP zuständig. Ebenso haben TCP und UDP nichts mit den IP-Adressen zu tun, mit denen sich (wie der Name andeutet) nur IP befaßt. Wie Sie sehen, ist die Brief-Metapher mit Umschlag und Absender ziemlich treffend; man kann sich jedes Paket als einen Brief in einem Umschlag vorstellen. TCP und UDP verpacken den Brief in einem Umschlag, auf dem die Portnummern (Büronummern) von Absender und Empfänger stehen.

IP fungiert als Poststelle des Bürogebäudes, das den Brief abschickt. Es empfängt den Umschlag und verpackt ihn in einem weiteren Umschlag, auf dem die IP-Adressen (die Adressen der Bürogebäude) von Absender und Empfänger stehen. Die Post AG (die wir noch gar nicht besprochen haben) liefert den Brief im entsprechenden Bürogebäude ab. Dort wird in der Poststelle der äußere Umschlag entfernt, und der Brief wird an TCP/UDP übergeben. TCP/UDP liefert den Brief dann im richtigen Büro ab; es benutzt dazu die Portnummer (die auf dem inneren Umschlag steht). Auf jedem Umschlag steht eine Rücksendeadresse (return address), mit deren Hilfe IP und TCP/UDP auf einen Brief antworten können.

Die Rechner im Netz bekommen neben ihrer IP-Adresse oft auch einen Namen zugeteilt, um die Verwaltung der Systeme im Internet etwas humaner zu gestalten. Der Domain Name Service (DNS) besorgt die Umsetzung der Rechnernamen in IP-Adressen und umgekehrt; er ist außerdem dafür zuständig, die für die Umsetzung benutzte Datenbank im ganzen Internet zu verteilen. Die Benutzung von Rechnernamen macht es auch möglich, daß sich die IP-Adresse eines Rechners ändert (beispielsweise wenn der Rechner in ein anderes Netzwerk eingebunden wird), ohne daß man befürchten muß, daß andere Benutzer dieses System nach der Adressenänderung nicht mehr »finden«. Man muß nur den DNS-Eintrag für diesen Rechner mit der neuen IP-Adresse versehen, und alle »namentlichen« Zugriffe auf dieses System werden weiterhin erfolgreich sein.

Icon

[4] [35] [37]

DNS ist eine riesige, über die ganze Welt verteilte Datenbank. Alle Organisationen pflegen jeweils den Teil dieser Datenbank, in dem die Rechner der Organisation aufgeführt sind. Falls Sie in Ihrer Organisation für die Pflege dieser Liste zuständig sind, finden Sie in Linux - Wegweiser für Netzwerker oder in TCP/IP Netzwerk Administration Hilfestellung dazu. Sollte das noch nicht ausreichen, können Sie mit dem Titel DNS und BIND wirklich aus dem vollen schöpfen.

In den meisten Fällen reicht es aus, wenn Sie wissen, daß ein Dämon namens named auf Ihrem System laufen muß. Dieser Dämon ist Ihr Fenster zum DNS.

Wir könnten uns jetzt der Frage zuwenden, wie ein Paket von einem System (Bürogebäude) zu einem anderen gelangt. Dies ist die eigentliche Aufgabe von IP und einigen anderen Protokollen, die IP dabei unterstützen. Neben der Handhabung von IP-Datagrammen (in der Funktion einer Poststelle) erledigt IP auch das Routing von Paketen zwischen den Rechnern.

Bevor wir uns damit befassen, wie Routing funktioniert, müssen wir das Modell erklären, auf dem TCP/IP-Netzwerke beruhen. Ein Netzwerk ist einfach eine Gruppe von Rechnern, die durch ein physikalisches Medium - etwa Ethernet oder serielle Leitungen - miteinander verbunden sind. In der Terminologie von TCP/IP sagt man, daß jedes Netzwerk intern seine eigenen Methoden für das Routing und den Transport von Paketen hat.

Die Netze sind untereinander durch Gateways (oder Router) verbunden. Ein Gateway ist ein Rechner, der direkt mit zwei oder mehr Netzwerken verbunden ist. Er ist deshalb in der Lage, Informationen zwischen den Netzen auszutauschen und Pakete aus einem Netz in ein anderes zu transportieren. Ein Gateway könnte beispielsweise aus einer Workstation mit mehr als einer Ethernet-Karte bestehen. Jede Karte gehört dabei zu einem anderen Netzwerk, und das Betriebssystem nutzt diese gemeinsamen Verbindungen so, daß der Rechner als Gateway fungieren kann.

Wir wollen das Thema an einem konkreten Beispiel erläutern und führen deshalb ein imaginäres Netzwerk ein, das aus den Rechnern eggplant, papaya, apricot und zucchini besteht. Abbildung Abbildung zeigt die Anordnung dieser Systeme im Netzwerk. Beachten Sie, daß papaya in ein zweites Netzwerk eingebunden ist, zu dem außerdem die Systeme pineapple und pear gehören. Diese Rechner haben folgende IP-Adressen:

Rechnername IP-Adresse
eggplant 128.17.75.20
apricot 128.17.75.12
zucchini 128.17.75.37
papaya 128.17.75.98, 128.17.112.3
pear 128.17.112.21
pineapple 128.17.112.40, 128.17.30.1

Screenshot

Abbildung 15-3: Ein Netzwerk mit zwei Gateways

Wie Sie sehen, hat papaya zwei IP-Adressen - je eine in den Subnetzen 128.17.75 und 128.17.112. Auch pineapple hat zwei IP-Adressen - eine in 128.17.112 und eine in 128.17.30.

IP benutzt den Netzwerkteil der IP-Adresse für das Routing der Pakete zwischen den Rechnern. Damit das funktioniert, führt jedes System im Netz eine Routing-Tabelle (routing table), die eine Liste mit Netzwerken und den Gateways zu diesen Netzwerken enthält. Um ein Paket zu einem bestimmten Rechner zu »routen«, liest IP den Netzwerkteil der Zieladresse. Wenn die Routing-Tabelle einen Eintrag für dieses Netz enthält, schickt IP das Paket an den entsprechenden Gateway. Im anderen Fall wird das Paket an den »Standard«-Gateway (default gateway) geschickt, der ebenfalls in der Routing-Tabelle eingetragen ist.

Die Routing-Tabellen können sowohl Einträge für bestimmte Rechner als auch für Netzwerke enthalten. Zusätzlich hat jeder Rechner in der Routing-Tabelle einen Eintrag für sich selbst.

Wir wollen uns die Routing-Tabelle von eggplant ansehen. Mit dem Befehl netstat -rn erhalten wir:

eggplant:$ netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 128.17.75.0 128.17.75.20 255.255.255.0 UN 1500 0 0 eth0 default 128.17.75.98 0.0.0.0 UGN 1500 0 0 eth0 127.0.0.1 127.0.0.1 255.0.0.0 UH 3584 0 0 lo 128.17.75.20 127.0.0.1 255.255.255.0 UH 3584 0 0 lo

Die erste Spalte enthält die Zielnetze (und -rechner) dieser Routing-Tabelle. Der erste Eintrag gilt dem Netzwerk 128.17.75 (bei Netzwerken ist die Rechneradresse gleich null); das ist das Netz, in dem sich eggplant befindet. Alle Pakete, die an dieses Netzwerk geschickt werden sollen, nehmen ihren Weg durch 128.17.75.20, was die IP-Adresse von eggplant ist. Allgemein gesprochen, führt die Route eines Rechners zu seinem Netzwerk immer durch ihn selbst.

Die Spalte Flags der Routing-Tabelle enthält Informationen über die Zieladresse dieses Eintrags; U steht für »aktiv« (up), N bedeutet, daß das Ziel ein Netzwerk ist, usw. Das MSS-Feld gibt an, wie viele Bytes auf einmal über die jeweilige Verbindung übertragen werden. Window gibt an, wie viele Frames gesendet werden dürfen, bevor eine Bestätigung eintreffen muß. irtt enthält statistische Werte zur Benutzung dieser Route, und Iface zeigt, welche Schnittstelle für diese Route benutzt wird. Auf Linux-Systemen heißen die Ethernet-Schnittstellen eth0, eth1 usw. lo bezeichnet das Loopback-Device, das wir etwas später besprechen werden.

Der zweite Eintrag in dieser Routing-Tabelle beschreibt die Standardroute (default route), die für alle Pakete benutzt wird, deren Zielnetz oder -rechner nicht in der Tabelle enthalten ist. In diesem Beispiel führt die Standardroute durch den Rechner papaya, den man deshalb als das Tor zum Rest der Welt betrachten kann. Jedes System im Subnetz 128.17.75 muß papaya benutzen, wenn es mit anderen Rechnern im Netz kommunizieren möchte.

Der dritte Eintrag in der Tabelle gilt der Adresse 127.0.0.1 - das ist die Loopback-Adresse. Diese Adresse wird benutzt, wenn der Rechner eine TCP/IP-Verbindung mit sich selbst herstellen möchte. Er benutzt dafür das Loopback-Device lo und verhindert damit, daß Loopback-Verbindungen (durch die Schnittstelle eth0) das Ethernet benutzen. Auf diese Weise wird keine Netzwerkbandbreite in Anspruch genommen, wenn ein Rechner ein »Selbstgespräch« führen möchte.

Der letzte Eintrag in der Routing-Tabelle gilt der IP-Adresse 128.17.75.20; das ist die Adresse von eggplant selbst. Wie Sie sehen, benutzt diese Route 127.0.0.1 als Gateway. Auf diese Weise ist sichergestellt, daß eggplant bei jeder TCP/IP-Verbindung mit sich selbst die Loopback-Adresse als Gateway und lo als Schnittstelle benutzt.

Nehmen wir an, daß eggplant ein Paket an zucchini schicken möchte. Im IP-Datagramm wird als Absenderadresse 128.17.75.20 stehen und als Zieladresse 128.17.75.37. IP stellt fest, daß der Netzwerkteil der Zieladresse 128.17.75 ist, und benutzt deshalb den Eintrag für 128.17.75.0 in der Routing-Tabelle. Das Paket wird direkt an das Netzwerk geschickt, wo zucchini es empfangen und verarbeiten kann.

Was passiert, wenn eggplant Pakete an einen Rechner außerhalb des lokalen Netzwerks schicken möchte, etwa pear? In diesem Fall ist die Zieladresse 128.17.112.21. IP versucht, in der Routing-Tabelle eine Route zum Netzwerk 128.17.112 zu finden. Da keine solche Route eingetragen ist, wählt es die Standardroute durch papaya hindurch. papaya empfängt das Paket und sucht in seiner eigenen Routing-Tabelle nach der Zieladresse. Die Routing-Tabelle von papaya könnte folgendermaßen aussehen:

Destination GatewayG enmask Flags MSS Window irtt Iface 128.17.75.0 128.17.75.98 255.255.255.0 UN 1500 0 0 eth0 128.17.112.0 128.17.112.3 255.255.255.0 UN 1500 0 0 eth1 default 128.17.112.40 0.0.0.0 UGN 1500 0 0 eth1 127.0.0.1 127.0.0.1 255.0.0.0 UH 3584 0 0 lo 128.17.75.98 127.0.0.1 255.255.255.0 UH 3584 0 0 lo

Wie Sie sehen, ist papaya durch seine Schnittstelle eth0 mit dem Netzwerk 128.17.75 verbunden und durch eth1 mit dem Netz 128.17.112. Die Standardroute führt durch pineapple, was für papaya auch der Gateway in die unendlichen Tiefen des Weltalls ist.

Sobald papaya ein Paket empfängt, das an pear adressiert ist, stellt es fest, daß die Zieladresse in 128.17.112 liegt, und lenkt das Paket in das Netzwerk, das den zweiten Eintrag in der oben gezeigten Routing-Tabelle benutzt.

Auf ähnliche Weise würde eggplant Pakete durch papaya (seinen Gateway) routen, die für Systeme außerhalb der eigenen Organisation bestimmt sind. papaya wiederum würde nach außen adressierte Pakete durch pineapple routen und so weiter. Pakete werden so lange von einem Gateway zum nächsten weitergereicht, bis sie das Zielnetz erreichen. Genau dies ist die Struktur, auf der das Internet aufbaut: eine scheinbar endlose Kette von Netzen, die durch Gateways miteinander verbunden sind.

Hardwareanforderungen

Sie können Linux-TCP/IP ohne jegliche Netzhardware benutzen - im »Loopback«-Modus können Sie mit sich selbst kommunizieren. Für einige Anwendungen und Spiele, die das »Loopback«-Device benutzen, müssen Sie diesen Modus konfigurieren.

Icon

Kapitel 1
[83]

Wenn Sie aber Linux in einem TCP/IP-Netzwerk einsetzen wollen, benötigen Sie natürlich eine Ethernet-Karte. Linux unterstützt viele Ethernet-Karten für ISA-, EISA- und PCI-Busse, außerdem Pocket- und PCMCIA-Adapter. In geben wir einen Auszug aus der Liste der unterstützten Ethernet-Karten. Lesen Sie außerdem das »Linux Ethernet HOWTO«, um alle Details kennenzulernen.

Icon

[4]

Linux unterstützt auch SLIP und PPP, mit denen Sie sich per Modem und Telefonleitung in das Internet begeben können. Sie brauchen in diesem Fall ein Modem, das zu Ihrem SLIP- oder PPP-Server kompatibel ist - viele Server verlangen zum Beispiel ein 56kbps-V.90-Modem (die meisten unterstützen auch K56flex). In diesem Buch beschreiben wir die Konfiguration von PPP, denn das verwenden die meisten Internet-Provider. Wenn Sie das ältere SLIP verwenden wollen, lesen Sie bitte in Linux - Wegweiser für Netzwerker und SLIP/PPP - Praktische Anleitung zum Einwählen ins Internet nach.

TCP/IP und Ethernet konfigurieren

In diesem Abschnitt besprechen wir, wie auf einem Linux-System eine TCP/IP-Verbindung im Ethernet konfiguriert wird. Wahrscheinlich ist ein solches System in ein lokales Netz mit Rechnern eingebunden, auf denen bereits TCP/IP läuft - in diesem Fall sind Ihr Gateway, Name-Server usw. bereits konfiguriert und lauffähig.

Der folgende Abschnitt bezieht sich in erster Linie auf Ethernet-Verbindungen. Falls Sie vorhaben, PPP zu benutzen, sollten Sie diesen Abschnitt lesen, um sich mit den Grundlagen vertraut zu machen, und dann mit den PPP-spezifischen Anweisungen im Abschnitt »Einwählverbindungen mit PPP« später in diesem Kapitel fortfahren.

Vielleicht haben Sie aber auch vor, ein ganzes LAN mit Linux-Systemen (oder einer Mischung aus Linux und anderen Systemen) einzurichten. In diesem Fall müssen Sie sich um eine Reihe weiterer Punkte kümmern, die wir hier nicht besprechen. Dazu gehören die Einrichtung eines eigenen Name-Servers sowie eines Gateways, wenn Ihr Netzwerk mit anderen Netzen verbunden werden soll. Falls Ihr Netzwerk an das Internet angeschlossen werden soll, werden Sie sich außerdem von Ihrem Internet-Provider die IP-Adressen und dazugehörige Informationen besorgen müssen.

Kurz und gut: Was wir hier beschreiben, sollte auf vielen Linux-Systemen funktionieren, die in ein bestehendes LAN eingebunden werden - aber sicherlich nicht auf allen. Für den Fall, daß Sie weitere Informationen brauchen, verweisen wir auf ein Buch zum Thema »Verwaltung von TCP/IP-Netzwerken« - beispielsweise eines von denen, die wir am Anfang des Kapitels erwähnt haben.

Wir gehen zunächst einmal davon aus, daß auf Ihrem Linux-System die notwendige TCP/IP-Software installiert ist. Dazu gehören solche wichtigen Clients wie telnet und ftp, Befehle zur Systemverwaltung wie ifconfig und route (meist in /etc oder /sbin zu finden) sowie Konfigurationsdateien für die Vernetzung (zum Beispiel /etc/hosts). In den Unterlagen zur Vernetzung unter Linux, die wir bereits erwähnt haben, wird beschrieben, wie die Linux-Netzwerksoftware installiert wird - für den Fall, daß sie bei Ihnen noch nicht installiert ist.

Icon

Kapitel 7

Wir gehen außerdem davon aus, daß Ihr Kernel mit TCP/IP-Unterstützung konfiguriert und kompiliert wurde. Lesen Sie die Informationen zur Kompilierung des Kernels im Abschnitt »Einen neuen Kernel erstellen« in Kapitel 7, Software und den Kernel aktualisieren. Damit die Vernetzung unterstützt wird, müssen Sie im Schritt make config, make menuconfig oder make xconfig auf die entsprechenden Fragen mit »yes« antworten, den Kernel neu kompilieren und mit dem neuen Kernel booten.

Sobald das erledigt ist, müssen Sie noch eine Reihe von Konfigurationsdateien anpassen, die von NET-4 benutzt werden. In der Regel ist dies recht einfach; unglücklicherweise besteht aber zwischen den verschiedenen Linux-Distributionen überhaupt keine Einigkeit darüber, wo die diversen Konfigurationsdateien und Hilfsprogramme für TCP/IP stehen sollen. Häufig sind diese in /etc zu finden, aber man hat sie auch schon in /usr/etc, /usr/etc/inet oder an anderen merkwürdigen Stellen entdeckt. Im schlimmsten Fall müssen Sie mit dem Befehl find herausfinden, wo die Dateien auf Ihrem System stehen. Beachten Sie auch, daß nicht alle Distributionen die NET-2-Konfigurationsdateien und -Programme an einer Stelle zusammenhalten - manchmal sind sie über mehrere Verzeichnisse verstreut.

Wir setzen in diesem Abschnitt auch voraus, daß Sie in Ihrem System eine Ethernet-Karte benutzen. Es sollte nicht schwierig sein, diese Anweisungen für mehr als eine Netzverbindung anzupassen (wenn Ihr Rechner als Gateway fungiert).

Wir besprechen hier außerdem die Konfiguration von Systemen, die ausschließlich als Loopback-System arbeiten (also ohne Ethernet- oder PPP-Verbindung). Auch wenn Sie keinen Netzanschluß haben, möchten Sie vielleicht das System für Loopback-TCP/IP konfigurieren, damit Sie mit den entsprechenden Programmen arbeiten können.

Ihre Netzwerkkonfiguration

Bevor Sie TCP/IP konfigurieren können, müssen Sie noch folgende Informationen zum Aufbau Ihres Netzwerks zusammentragen. In den meisten Fällen kann entweder der Netzverwalter vor Ort oder Ihr Internet-Provider diese Informationen liefern.

Ihre IP-Adresse
Das ist die eindeutige Rechneradresse in der Dotted-quad-Schreibweise, zum Beispiel 128.17.75.98. Ihr Netzverwalter wird Ihnen diese Nummer geben.
Falls Sie den Loopback-Modus konfigurieren (also kein PPP, kein Ethernet, nur TCP/IP-Verbindungen auf dem eigenen Rechner), ist die IP-Adresse 127.0.0.1.
Ihre Subnetzmaske
Das sind vier Bytes in Dotted-quad-Schreibweise, so ähnlich wie die IP-Adresse. Diese vier Bytes legen fest, welcher Teil Ihrer IP-Adresse die Subnetznummer und welcher Teil die Rechnernummer innerhalb dieses Subnetzes bezeichnet.
Die Subnetzmaske bildet ein Bitmuster, das nach einer bitweisen UND-Verknüpfung mit einer IP-Adresse in Ihrem Netzwerk anzeigt, zu welchem Subnetz diese Adresse gehört. Ein Beispiel: Wenn Ihre Subnetzmaske 255.255.255.0 und Ihre IP-Adresse 128.17.75.20 ist, so ist der Subnetzteil Ihrer Adresse 128.17.75.
Wir unterscheiden hier zwischen der »Netzwerkadresse« und der »Subnetzadresse«. Erinnern Sie sich, daß in Klasse-B-Adressen die ersten beiden Bytes (in diesem Fall 128.17) das Netzwerk bezeichnen und die letzten beiden Bytes den Rechner. Mit der Subnetzmaske 255.255.255.0 wird allerdings 128.17.75 als komplette Adresse des Subnetzes betrachtet (also Subnetz 75 im Netz 128.17), und nur die 20 zählt als Rechneradresse.
Ihre Netzverwalter haben die Subnetzmaske festgelegt und können Ihnen diese Information geben.
Dasselbe gilt für das Loopback-Device. Da die Loopback-Adresse immer 127.0.0.1 ist, ist die Netzmaske hierfür immer 255.0.0.0.
Die Adresse Ihres Subnetzes
Das ist der Subnetzteil Ihrer IP-Adresse, wie er durch die Subnetzmaske bestimmt wird. Ein Beispiel: Wenn Ihre Subnetzmaske 255.255.255.0 und Ihre IP-Adresse 128.17.75.20 ist, dann ist Ihre Subnetzadresse 128.17.75.0.
Reine Loopback-Systeme haben keine Subnetzadresse.
Ihre Broadcast-Adresse
Diese Adresse wird benutzt, wenn Sie Pakete an jeden einzelnen Rechner in Ihrem Subnetz verteilen möchten. In der Regel entspricht dies Ihrer Subnetzadresse (siehe vorangegangenen Punkt) mit dem Wert 255 als Rechneradresse. Für die Subnetzadresse 128.17.75.0 ist die Broadcast-Adresse 128.17.75.255, für die Subnetzadresse 128.17.0.0 entsprechend 128.17.255.255.
Beachten Sie, daß manche Systeme die Subnetzadresse selbst als Broadcast-Adresse benutzen. Fragen Sie bei den Netzverwaltern nach, falls Sie sich nicht sicher sind.
Reine Loopback-Systeme haben keine Broadcast-Adresse.
Die IP-Adresse Ihres Gateways
Das ist die Adresse des Rechners, der Ihre Standardroute zum Rest der Welt darstellt. Es kann sein, daß Sie mehr als eine Gateway-Adresse haben - zum Beispiel, wenn Ihr Netzwerk mit mehreren anderen Netzen direkt verbunden ist. Trotzdem führt Ihre Standardroute nur durch einen dieser Gateways. (Erinnern Sie sich an das Beispiel aus dem vorherigen Abschnitt, in dem das Netzwerk 128.17.112.0 durch papaya mit dem Netz 128.17.75.0 verbunden ist und mit dem Rest der Welt durch pineapple.)
Ihre Netzverwalter können Ihnen die IP-Adressen aller Gateways in Ihrem Netzwerk mitteilen sowie die Adressen der Netze, mit denen diese Gateways verbunden sind. Später werden Sie diese Informationen zusammen mit dem Befehl route nutzen, um in der Routing-Tabelle die Einträge für die einzelnen Gateways zu erstellen.
Reine Loopback-Systeme haben keine Gateway-Adresse; dies gilt auch für Netzwerke ohne Verbindung nach außen.
Die IP-Adresse Ihres Name-Servers
Dies ist die Adresse des Rechners, der für Ihr System die Umsetzung von Rechnernamen in IP-Adressen vornimmt. Ihre Netzverwalter kennen diese Adresse.
Vielleicht planen Sie, Ihren eigenen Name-Server zu betreiben (indem Sie named konfigurieren und starten). Allerdings sollten Sie die Adresse des Name-Servers benutzen, die Ihre Netzverwalter Ihnen mitteilen, solange Sie nicht unbedingt darauf angewiesen sind, einen eigenen Name-Server einzurichten (beispielsweise weil in Ihrem lokalen Netzwerk kein anderer Name-Server vorhanden ist). Auf jeden Fall enthalten die meisten Bücher über die Konfiguration von TCP/IP auch Informationen zu named.
Natürlich haben reine Loopback-Systeme keine Adresse für einen Name-Server.

Die rc-Dateien für die Vernetzung

Die rc-Dateien sind Skripten, die zur Konfiguration einiger systemweiter Ressourcen beim Booten von init aufgerufen werden. Die Netzwerkparameter werden mit Hilfe der fest zum System gehörenden Systemdämonen (wie zum Beispiel sendmail, crond usw.) konfiguriert. Sie finden die rc-Dateien meist im Verzeichnis /etc/rc.d.

Beachten Sie, daß es viele Wege gibt, die hier beschriebene Netzwerkkonfiguration zu bewerkstelligen. Jede Linux-Distribution verwendet einen etwas anderen Mechanismus zur Automatisierung dieses Prozesses. Wir beschreiben hier eine generische Methode, mit der Sie zwei rc-Dateien anlegen können, die die notwendigen Befehle auf Ihrem Rechner starten, damit Ihr Computer im Netzwerk »mitreden« kann. Die meisten Distributionen haben eigene Skripten, die mehr oder weniger das gleiche leisten. Wenn Sie unsicher sind, versuchen Sie zunächst, das Netzwerk so einzurichten, wie es in der Dokumentation zu Ihrer Distribution beschrieben wird, und benutzen Sie die hier beschriebenen Methoden als letzten Ausweg. (Beispielsweise verwendet die »Red Hat«-Distribution das Skript /etc/rc.d/init.d/network, das wiederum die Netzwerkinformationen aus den Dateien in /etc/sysconfig ausliest. Das Systemverwaltungsprogramm control-panel, das zu »Red Hat«-Distributionen dazugehört, konfiguriert das Netzwerk automatisch, ohne daß Sie eine einzige dieser Dateien anfassen müßten. Die SuSE-Distribution verteilt die Konfiguration dagegen über mehrere Dateien wie /sbin/init.d/network und /sbin/init.d/route; Sie können hier die meisten Aspekte von Netzwerken über das Programm yast einrichten.)

Wir beschreiben im folgenden die rc-Dateien, die zur Konfiguration von TCP/IP benötigt werden:

Red Hat
Die Netzwerkkonfiguration verteilt sich über verschiedene Dateien für jeden init-Level, der Netzwerkfunktionalität beinhaltet. Beispielsweise steuert das Verzeichnis /etc/rc.d/rc1.d das Booten in Runlevel 1 (Single-User), so daß hier keine Netzwerkbefehle zu finden sind, aber /etc/rc.d/rc3.d steuert das Booten in Runlevel 3, wo Sie netzwerkspezifische Dateien finden werden.
SuSE
Alle Startdateien für Systemdienste - einschließlich der Netzwerkfunktionalität - sind im Verzeichnis /sbin/init.d zusammengefaßt. Sie sind ziemlich generisch und bekommen ihre eigentlichen Werte aus der systemweiten Konfigurationsdatei /etc/rc.config. Die wichtigsten Dateien hier sind /sbin/init.d/network, in der die Netzwerkschnittstellen gestartet und angehalten werden, /sbin/init.d/route, in der das Routing konfiguriert wird, und /sbin/init.d/serial, in der die seriellen Schnittstellen konfiguriert werden. Wenn Sie ISDN-Hardware haben, sind auch noch die Dateien /sbin/init.d/i4l und /sbin/init.d/i4l_hardware im Rennen. Beachten Sie, daß Sie normalerweise diese Dateien nicht ändern, sondern alle Änderungen in /etc/rc.config vornehmen sollten.
Debian
Die Netzwerkkonfiguration (Ethernet-Karten, IP-Adressen und Routing) geschieht in der Datei /etc/init.d/network. Die grundlegenden Netzwerk-Dämonen portmap und inetd werden durch das Skript /etc/init.d/netbase, mit dem Systemdienste gestartet und angehalten werden, initialisiert.
Slackware
Das Netzwerk wird in den Dateien rc.inet1 und rc.inet2 gestartet. In rc.inet1 werden die grundlegenden Netzwerkparameter (wie IP-Adressen und Routing-Informationen) konfiguriert, rc.inet2 startet die TCP/IP-Dämonen (telnetd, ftpd und so weiter).

init liest die Datei /etc/inittab, um herauszufinden, welche Prozesse beim Booten gestartet werden sollen. Damit die Dateien /etc/rc.d/rc.inet1 und /etc/rc.d/rc.inet2 von init aufgerufen werden, könnten in Ihrer Datei /etc/inittab etwa folgende Einträge stehen:

n1:34:wait:/etc/rc.d/rc.inet1
n2:34:wait:/etc/rc.d/rc.inet2

Icon

Kapitel 5

Wir beschreiben die Datei inittab im Abschnitt »init, inittab und rc-Dateien« in Kapitel 5, TCP/IP und PPP. Das erste Feld enthält einen eindeutigen zweistelligen Bezeichner für jeden Eintrag. Das zweite Feld führt die Runlevel auf, auf denen die Skripten aufgerufen werden; in diesem Beispiel initialisieren wir das Netzwerk bei den Runlevels 1 bis 6. Das Wort wait im dritten Feld weist init an zu warten, bis das Skript beendet ist, bevor init weitermacht. Das letzte Feld enthält den Namen des Skripts, das ausgeführt werden soll.

Vielleicht ist es eine gute Idee, während der Konfiguration des Netzes rc.inet1 und rc.inet2 von Hand aufzurufen (als root), um eventuelle Probleme zu beheben. Später können Sie diese Dateien dann von einer anderen rc-Datei oder von /etc/inittab aus aufrufen.

Wir haben bereits erwähnt, daß rc.inet1 die grundlegende Konfiguration der Netzschnittstelle übernimmt. Dazu gehören die IP- und Netzwerkadresse sowie die Informationen in der Routing-Tabelle Ihres Systems. Es sind zwei Programme, die diese Parameter konfigurieren: ifconfig und route; beide stehen in der Regel in /sbin.

Mit ifconfig wird die Schnittstelle zum Netzwerk mit bestimmten Parametern konfiguriert - etwa mit der IP-Adresse, Subnetzmaske, Broadcast-Adresse usw. Mit route werden Einträge in der Routing-Tabelle erzeugt und angepaßt.

Icon

Für die meisten Konfigurationen sollte eine rc.inet1-Datei funktionieren, die etwa so aussieht wie die folgende. Sie werden die Datei natürlich an Ihr eigenes System anpassen müssen. Benutzen Sie nicht die IP- und Netzwerkadressen aus unserem Beispiel; es könnte sich um einen tatsächlich im Internet vorhandenen Rechner handeln.

#!/bin/sh # Dies ist /etc/rc.d/rc.inet1 - konfiguriere die TCP/IP-Interfaces # Zuerst das Loopback-Device konfigurieren HOSTNAME=`hostname` /sbin/ifconfig lo 127.0.0.1 # Standardnetzmaske 255.0.0.0 /sbin/route add 127.0.0.1 # Eine Route zum Loopback-Device # Als nächstes Ethernet konfigurieren. Wenn Sie nur Loopback oder SLIP # benutzen, kommentieren Sie die restlichen Zeilen aus. # An Ihr System anpassen. IPADDR="128.17.75.20" # IHRE IP-Adresse eintragen NETMASK="255.255.255.0" # IHRE Subnetzmaske eintragen NETWORK="128.17.75.0" # IHRE Netzwerkadresse eintragen BROADCAST="128.17.75.255" # IHRE Broadcast-Adresse eintragen GATEWAY="128.17.75.98" # IHRE Standard-Gateway-Adresse eintragen # Konfiguriere eth0 mit den o.a. Informationen /sbin/ifconfig eth0 ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST} # Eine Route für das eigene Netzwerk /sbin/route add ${NETWORK} * # Eine Route zum Standard-Gateway ** /sbin/route add default gw ${GATEWAY} metric 1 * # Ende der Ethernet-Konfiguration

Wie Sie sehen, hat der Befehl ifconfig das Format:

ifconfig interface device optionen...

Zwei Beispiele:

ifconfig lo 127.0.0.1

weist der IP-Adresse 127.0.0.1 das lo-Device (Loopback) zu, und

ifconfig eth0 127.17.75.20

weist der Adresse 127.17.75.20 das eth0-Device zu (erste Ethernet-Karte).

Neben der Adresse brauchen Ethernet-Schnittstellen normalerweise auch die Subnetzmaske (mit der Option netmask zu setzen) und die Broadcast-Adresse (mit broadcast gesetzt).

Der Befehl route, wie wir ihn hier benutzen, hat das Format:

route add [ -Netz | -Rechner ] Ziel [ gw Gateway ] [ metric Metrik ] Optionen

Dabei bezeichnet das Ziel die Zieladresse für diese Route (oder hier steht das Schlüsselwort default für die Standardroute), der Gateway ist die IP-Adresse des Gateways für diese Route, und die Metrik gibt den Metrikwert für diese Route an (wir kommen später darauf zurück).

Mit dem Befehl route fügen wir Einträge in die Routing-Tabelle ein. Sie sollten eine Route für das Loopback-Device definieren (wie wir das weiter oben gezeigt haben), eine für das lokale Netzwerk und eine für den Standard-Gateway. Ein Beispiel: Falls Ihr Standard-Gateway 128.17.75.98 ist, würden Sie folgenden Befehl einfügen:

route add default gw 128.17.75.98

route kennt verschiedene Optionen. Ein -net oder -host vor dem Ziel zeigt route an, daß das Ziel ein Netzwerk bzw. ein bestimmter Rechner ist. (In den meisten Fällen weisen Routen auf Netzwerke hin, aber in einigen Fällen brauchen Sie vielleicht eine eigene Route zu einem unabhängigen Rechner. In diesem Fall würden Sie -host für den Eintrag in der Routing-Tabelle benutzen.)

Mit der Option Metrik vergeben wir einen Metrikwert für diese Route. Die Metrikwerte werden benutzt, wenn es mehr als eine Route zu einem bestimmten Ziel gibt und das System entscheiden muß, welche davon es benutzen soll. Die Routen mit niedrigen Metrikwerten erhalten Vorrang. In unserem Beispiel setzen wir den Metrikwert für unsere Standardroute auf 1 und sorgen auf diese Weise dafür, daß diese Route Vorrang vor allen anderen hat.

Wie soll das möglich sein, daß es mehr als eine Route zu einem bestimmten Ziel gibt? Zunächst einmal können Sie in rc.inet1 mehrere route-Befehle für ein Ziel eintragen - beispielsweise, wenn Ihnen mehr als ein Gateway zu einem bestimmten Netzwerk zur Verfügung steht. Es kann aber auch vorkommen, daß in Ihre Routing-Tabellen dynamisch neue Einträge gemacht werden, wenn Sie routed starten (wir kommen später noch darauf zu sprechen). Wenn Sie routed aufrufen, können andere Systeme Routing-Informationen an Rechner im Netz übertragen, die dazu führen, daß auf Ihrem Rechner weitere Einträge in der Routing-Tabelle erzeugt werden. Wenn Sie den Metrikwert für Ihre Standardroute auf 1 setzen, stellen Sie damit sicher, daß kein neuer Eintrag in der Routing-Tabelle Ihrem Standard-Gateway den Vorrang nimmt.

Sie sollten die Manpages zu ifconfig und route lesen, in denen die Syntax dieser Befehle im Detail beschrieben wird. Es kann sein, daß weitere Optionen für Ihre Konfiguration relevant sind.

Lassen Sie uns weitermachen. In rc.inet2 werden einige Dämonen gestartet, die von den TCP/IP-Programmen benutzt werden. Sie brauchen diese Dämonen nicht für die Kommunikation Ihres Rechners mit dem Netzwerk - deshalb stehen sie in einer eigenen rc-Datei. In der Regel sollten Sie versuchen, rc.inet1 zu konfigurieren, und sich vergewissern, daß Ihr Rechner mit dem Netzwerk Datenpakete austauschen kann, bevor Sie mit der Konfiguration von rc.inet2 beginnen.

Zu den Dämonen, die von rc.inet2 gestartet werden, gehören inetd, syslogd und routed. Falls die Version von rc.inet2 auf Ihrem System derzeit noch einige andere Server startet, sollten Sie diese auskommentieren, solange Sie Ihre Netzwerkkonfiguration debuggen.

Der wichtigste dieser Server ist inetd, der als eine Art »Vermittlungsstelle« für andere Systemdämonen dient. inetd wartet im Hintergrund darauf, daß an bestimmten Netzwerkports Verbindungen ankommen. Wenn eine Verbindung zustandekommt, startet inetd eine Kopie des passenden Dämons für diesen Port. Ein Beispiel: Wenn eine eingehende telnet-Verbindung zustandekommt, wird inetd den Dämon in.telnetd starten, der anschließend die telnet-Verbindung bedient. Das ist einfacher und effizienter, als eine Kopie von jedem einzelnen Dämon aufzurufen. Auf diese Weise werden Netzwerkdämonen nur bei Bedarf gestartet.

syslogd ist der Dämon, der die Systemaktivitäten protokolliert - er sammelt Protokollnotizen (log messages) von verschiedenen Anwendungen und legt sie in Dateien ab. Die Informationen in der Datei /etc/syslog.conf bestimmen, welche Protokollmeldungen wo abgelegt werden.

routed ist ein Server, der die dynamischen Routing-Informationen verwaltet. Es kann passieren, daß Ihr System weitere Informationen für die Routing-Tabelle braucht, wenn es Pakete an ein anderes Netzwerk schicken möchte. routed verwaltet die Routing-Tabelle, ohne daß der Benutzer eingreifen muß.

Wir zeigen Ihnen hier ein Beispiel für eine rc.inet2, in der die Dämonen syslogd, inetd und routed gestartet werden:

#! /bin/sh # Beispiel fuer /etc/rc.d/rc.inet2 # syslogd starten if [ -f /usr/sbin/syslogd ] then /usr/sbin/syslogd fi # inetd starten if [ -f /usr/sbin/inetd ] then /usr/sbin/inetd fi # routed starten if [ -f /usr/sbin/routed ] then /usr/sbin/routed -q fi

Zu den anderen Servern, die Sie vielleicht aus rc.inet2 heraus starten möchten, gehört named. named ist ein Name-Server - er übersetzt die (lokalen) IP-Adressen in Namen und umgekehrt. Falls es an anderer Stelle in Ihrem Netzwerk keinen Name-Server gibt, oder wenn Sie die Namen der lokalen Rechner an andere Systeme in Ihrer Domain weitergeben möchten, müssen Sie eventuell named starten. Die Konfiguration von named ist ziemlich schwierig und muß geplant werden; wir verweisen interessierte Leser auf DNS und BIND.

/etc/hosts

Die Datei /etc/hosts enthält eine Liste von IP-Adressen mit den dazugehörigen Rechnernamen. Im allgemeinen finden Sie hier nur Einträge für den eigenen Rechner und vielleicht so »wichtige« Systeme wie Ihren Name-Server oder Ihren Gateway. Der lokale Name-Server wird die Zuordnung von Adressen zu den Namen anderer Rechner im Netz für Sie transparent erledigen.

Wenn Ihr Rechner beispielsweise eggplant.veggie.com mit der IP-Adresse 128.17.75.20 ist, sieht Ihre /etc/hosts so aus:

127.0.0.1 localhost 128.17.75.20 eggplant.veggie.com eggplant

Wenn Sie den Rechner nur im Loopback-Modus betreiben, sollte /etc/hosts nur eine Zeile für die Adresse 127.0.0.1 enthalten.

/etc/networks

Die Datei /etc/networks enthält die Namen und Adressen des eigenen sowie anderer Netzwerke. Sie wird vom Befehl route benutzt und ermöglicht es, ein Netzwerk mit seinem Namen statt seiner Adresse zu bezeichnen.

Jedes Netzwerk, zu dem Sie mit dem Befehl route eine Route eintragen möchten, sollte aus Bequemlichkeitsgründen in /etc/networks eingetragen sein, ansonsten müssen Sie die IP-Adresse des Netzwerks anstelle des Namens angeben. (route wird normalerweise in rc.inet1 aufgerufen - siehe oben.)

Ein Beispiel:

default 0.0.0.0 # Standardroute - obligatorisch loopnet 127.0.0.0 # Loopback-Netz - obligatorisch veggie-net 128.17.75.0 # IHRE Netzwerkadresse eintragen

Jetzt können wir statt

route add 128.17.75.20

folgendes eingeben:

route add veggie-net

/etc/host.conf

Die Datei /etc/hosts bestimmt, wie Ihr System Rechnernamen auflöst (in IP-Adressen wandelt). Sie sollte die beiden Zeilen

order hosts,bind multi on

enthalten. Diese Zeilen weisen die mit der Aufgabe betrauten Bibliotheken an, umzuwandelnde Namen zuerst in /etc/hosts nachzuschlagen und dann den Name-Server (falls vorhanden) zu befragen. Der Eintrag multi bewirkt, daß Sie zu einem bestimmten Rechnernamen in /etc/hosts mehrere IP-Adressen angeben können.

Auf Systemen, die die neue glibc2 verwenden (wie Red Hat, Version 5.0, und neuer, SuSE, Version 6.0, und neuer und Debian ab Version 2.0), wird /etc/nsswitch.conf statt /etc/host.conf verwendet. In diesem Fall sollte die Datei die Zeilen hosts: files dns und networks: files dns enthalten.

/etc/resolv.conf

Diese Datei konfiguriert den Name Resolver (etwa: Namensauflöser) und enthält zu diesem Zweck die Adresse Ihres Name-Servers (falls vorhanden) und die Domänen, die Sie per Voreinstellung durchsuchen wollen, wenn der Hostname nicht vollständig angegeben wird. Wenn bespielsweise diese Datei die Zeile

search vpizza.com vpasta.com
buch.eps

[37]

enthält, dann wird das System versuchen, den Hostnamen blurb in blurb.vpizza.com und blurb.vpasta.com (in dieser Reihenfolge) aufzulösen. Das ist bequem, denn Sie müssen so die Namen von häufig besuchten Domänen nicht vollständig angeben. Andererseits dauert ein DNS-Zugriff um so länger, je mehr Domänen Sie hier angeben.

Das System eggplant.veggie.com mit dem Name-Server unter der Adresse 128.17.75.55 hätte beispielsweise folgende Einträge in /etc/resolv.conf :

domain veggie.com nameserver 128.17.75.55

Sie können mehr als einen Name-Server eintragen, aber jeder einzelne muß in resolv.conf seine eigene nameserver-Zeile haben.

Den Rechnernamen festlegen

Sie sollten den Rechnernamen Ihres Systems mit dem Befehl hostname festlegen. Dieser Befehl wird in der Regel von /etc/rc.d/rc.sysinit (/sbin/init.d/boot auf SuSE-Systemen) aus aufgerufen; durchsuchen Sie die rc-Dateien Ihres Systems, um festzustellen, wo der hostname-Aufruf erfolgt. Ein Beispiel: Wenn Ihr (vollständiger) Rechnername eggplant.veggie.com lautet, lassen Sie in der entsprechenden rc-Datei den Befehl /bin/hostname eggplant.veggie.com ausführen. Beachten Sie, daß die ausführbare Datei hostname auf Ihrem System in einem anderen Verzeichnis als /bin stehen könnte.

Der erste Versuch

Sobald die verschiedenen Konfigurationsdateien für das Netz an Ihr System angepaßt sind, sollten Sie in der Lage sein, neu zu booten (mit einem TCP/IP-fähigen Kernel) und die Konfiguration zu testen.

Vielleicht sollten Sie beim ersten Booten des Systems den automatischen Aufruf von rc.inet1 und rc.inet2 unterdrücken und diese beiden Skripten von Hand starten, nachdem das System hochgefahren ist. Das gibt Ihnen die Chance, alle Fehlermeldungen mitzulesen, die Skripten zu ändern und es noch einmal zu versuchen. Sobald alles korrekt abläuft, können Sie die Skripten von /etc/inittab aus aufrufen.

Eine gute Methode, die Verbindungen zum Netzwerk zu testen, ist ein telnet an einen anderen Rechner. Versuchen Sie zunächst, eine Verbindung zu einem Rechner im lokalen Netzwerk herzustellen; wenn das funktioniert, versuchen Sie es mit Rechnern in anderen Netzen. Mit dem ersten Schritt testen Sie die Verbindung zwischen Ihrem Rechner und dem lokalen Netzwerk; mit dem zweiten Schritt stellen Sie fest, ob Ihnen durch Ihr Gateway hindurch der Rest der Welt offensteht.

Falls Sie in der Lage sind, mit weit entfernten (remote) Rechnern zu kommunizieren, aber nicht mit Systemen im selben Subnetz, deutet das auf ein Problem entweder mit der Subnetzmaske oder mit dem Routing-Tabelleneintrag für das lokale Netz hin.

Wenn Sie versuchen, einen anderen Rechner zu erreichen, sollten Sie das zuerst mit der IP-Adresse des fremden Rechners testen. Falls das funktioniert, aber mit dem Rechnernamen keine Verbindung zustande kommt, kann das Problem entweder in der Konfiguration des Name-Servers liegen (zum Beispiel in /etc/resolv.conf oder /etc/host.conf), oder die Route zum Name-Server ist nicht korrekt.

Die häufigsten Ursachen für Probleme im Netzwerk sind Fehler in der Routing-Tabelle. Mit dem Befehl

netstat -rn

Icon

netstat(8)

lassen Sie sich die Routing-Tabelle anzeigen; wir haben das Format der Anzeige dieses Befehls im vorhergehenden Abschnitt beschrieben. Die Manpage zu netstat enthält weitere Details. Wenn Sie netstat ohne die Option -n aufrufen, erhalten Sie eine Anzeige mit den Namen der Rechner und Netze statt ihrer IP-Adressen.

Icon

route(8)

Sie können die Routing-Tabelle debuggen, indem Sie entweder die Datei rc.inet1 editieren und neu booten, oder Sie geben den Befehl route von Hand ein, um Einträge hinzuzufügen oder zu löschen. In der Manpage zu route finden Sie eine vollständige Beschreibung der Befehlssyntax. Beachten Sie, daß allein das Editieren von rc.inet1 mit erneutem Aufruf von route die alten Einträge nicht aus der Routing-Tabelle entfernt; Sie müssen entweder neu booten oder mit route del die Einträge von Hand löschen.

Wenn Sie überhaupt keine Verbindung zustande bekommen, liegt das Problem eventuell in der Konfiguration der Ethernet-Schnittstelle. Vergewissern Sie sich zunächst, daß die Ethernet-Karte beim Booten an der richtigen Adresse und mit dem richtigen IRQ gefunden wurde. Sie finden diese Informationen in den Boot-Meldungen des Kernels; wenn Sie syslogd benutzen, werden diese Meldungen auch in einer Datei wie zum Beispiel /var/log/messages gespeichert.

Icon

[83]

Falls Ihre Ethernet-Karte nicht richtig gefunden wird, müssen Sie eventuell einige Kernel-Parameter anpassen, um das Problem zu beheben. Im Ethernet-HOWTO von Linux finden Sie ausführliche Informationen zum Debuggen der Ethernet-Konfiguration. Oft braucht man zur Behebung des Problems nur am LILO-Boot-Prompt die korrekten Werte für IRQ und Portadresse anzugeben. Wenn Sie beispielsweise via LILO mit dem Befehl

lilo: linux ether=9,0x300,0,1,eth0

booten, werden für die Schnittstelle eth0 folgende Werte eingestellt: IRQ 9, Basisadresse 0x300 und der externe Transceiver (durch die 1 im vierten Feld). Wenn Sie den internen Transceiver benutzen möchten, machen Sie im vierten Feld aus der 1 eine 0.

Denken Sie auch an die Möglichkeit, daß die Ethernet-Karte defekt oder nicht richtig mit Ihrem Rechner oder dem Netz verbunden sein kann. Defekte Ethernet-Karten und -Kabel können unendlich viele Probleme verursachen - unter anderem gelegentliche Netzausfälle, Systemabstürze usw. Wenn Sie bei Ihren Bemühungen das Ende der Fahnenstange erreicht haben, sollten Sie vielleicht Ethernet-Karte oder -Kabel austauschen, um festzustellen, ob hier die Ursache des Problems zu finden ist.  Fußnoten 3

Wenn Ihre Ethernet-Karte gefunden wird, aber das System trotzdem nicht mit dem Netzwerk kommunizieren kann, ist eventuell die Konfiguration der Schnittstellen mit ifconfig nicht in Ordnung. Vergewissern Sie sich, daß Sie für Ihren Rechner die richtige IP-Adresse, Broadcast-Adresse und Subnetzmaske eingetragen haben. Wenn Sie ifconfig ohne Argumente aufrufen, erhalten Sie Informationen über Ihre Ethernet-Konfiguration.

 Fußnoten 1
Warum nicht 65.536? Aus Gründen, die wir später besprechen, werden die Rechneradressen 0 und 255 nicht vergeben.
 Fußnoten 2
Auf vielen Systemen wartet telnetd nicht ständig am Port 23, sondern der Internet-Dienstedämon inetd übernimmt das für ihn. Im Augenblick wollen wir dieses Detail unter den Teppich kehren.
 Fußnoten 3
Einer der Autoren hat einst drei Stunden damit verbracht herauszufinden, warum der Kernel beim Booten eine Ethernet-Karte nicht finden wollte. Es stellte sich heraus, daß die 16-Bit-Karte in einem 8-Bit-Slot steckte - mea culpa.


vorheriges Kapitel Inhaltsverzeichnis Stichwortverzeichnis nächstes Kapitel


Weitere Informationen zum Linux - Wegweiser zur Installation & Konfiguration

Weitere Online-Bücher & Probekapitel finden Sie in unserem Online Book Center


O'Reilly Home | O'Reilly-Partnerbuchhandlungen | Bestellinformationen | Kontaktieren Sie uns
International | Über O'Reilly | Tochterfirmen

© 2000, O'Reilly Verlag