Im Katalog suchen

Linux - Wegweiser für Netzwerker

Online-Version

Copyright © 2001 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 für Netzwerker oder wollen Sie es bestellen, dann klicken Sie bitte hier.


vorheriges Kapitel Inhaltsverzeichnis Stichwortverzeichnis nächstes Kapitel



Schnittstellenkonfiguration für IP

Nachdem Sie Ihre Hardware, wie in Kapitel 4 Konfiguration der seriellen Hardware, beschrieben, eingerichtet haben, müssen Sie sie der Netzwerkebene des Kernels bekanntmachen. Zur Konfiguration der Schnittstellen und Initialisierung der Routing-Tabelle sind zwei Befehle von besonderer Bedeutung, nämlich ifconfig (wobei “if” für Interface steht) und route. Sie werden normalerweise bei jedem Systemstart aus den Netzwerk-Startskripten heraus aufgerufen.

ifconfig dient dazu, eine Schnittstelle für die Netzwerkschicht des Kernels sichtbar zu machen. Das beinhaltet die Zuweisung einer IP-Adresse und verschiedener anderer Parameter sowie die Aktivierung (“bringing up”) der Schnittstelle, damit der Kernel die IP-Pakete über diese Schnittstelle senden und empfangen kann. Die einfachste Art, es aufzurufen, ist:

ifconfig interface ip-address

Das weist interface die Adresse ip-adresse zu und aktiviert es. Alle anderen Parameter werden auf Standardwerte gesetzt. Die Netzmaske zum Beispiel wird aus der Netzwerkklasse der Adresse abgeleitet; für ein Klasse-B-Netz wäre das 255.255.0.0. Wir werden uns in Alles über ifconfig noch ausführlicher mit ifconfig befassen.

route erlaubt es Ihnen, Routen in die Routing-Tabelle des Kernels einzutragen oder aus ihr zu entfernen. Es kann aufgerufen werden als:

route [add|del] [-net|-host] target [if]

Dabei bestimmen die Argumente add bzw. del, ob die Route zu target eingetragen bzw. aus target entfernt wird. Die Optionen -net und -host teilen dem route-Kommando mit, ob target ein Netzwerk oder ein Hostrechner ist (letzteres wird angenommen, wenn Sie hier nichts angeben). Das Argument if ist optional und erlaubt Ihnen die Angabe einer Netzwerkschnittstelle, an die die Route gerichtet werden soll. Wenn Sie dem Kernel keine Informationen darüber geben, versucht er selbst, ein sinnvolles Argument herauszufinden. Damit beschäftigen wir uns ausführlicher in den nachfolgenden Abschnitten.

Das Loopback-Interface

Die allererste Schnittstelle, die aktiviert werden muß, ist das Loopback-Interface:

# ifconfig lo 127.0.0.1

Manchmal wird anstelle der IP-Adresse auch der Name localhost verwendet. Der Befehl ifconfig sucht diesen Namen in der Datei hosts, wo er als Hostname für 127.0.0.1 definiert sein sollte:

# Sample /etc/hosts-Eintrag fuer localhost 
localhost     127.0.0.1

Um die Konfiguration einer Schnittstelle anzuzeigen, rufen Sie ifconfig nur mit dem Namen der Schnittstelle auf:

$ ifconfig lo 
lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0 
          UP LOOPBACK RUNNING  MTU:3924  Metric:1 
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 
          Collisions:0

Hier wird der Loopback-Schnittstelle die Netzmaske 255.0.0.0 zugewiesen, weil 127.0.0.1 eine Klasse-A-Adresse ist.

Jetzt können Sie fast schon anfangen, mit Ihrem “Mini-Netz” herumzuspielen. Was noch fehlt, ist ein Eintrag in der Routing-Tabelle, der festlegt, daß diese Schnittstelle als Route für das Zielsystem 127.0.0.1 dient. Dazu geben Sie folgendes ein:

# route add 127.0.0.1

Natürlich können Sie auch hier wieder anstelle der IP-Adresse den Namen localhost verwenden, sofern Sie ihn in /etc/hosts eingetragen haben.

Als nächstes sollten Sie sich mit dem Programm ping davon überzeugen, daß alles einwandfrei funktioniert. ping ist das netztechnische Äquivalent eines Sonars1 und wird benutzt, um festzustellen, ob ein System überhaupt erreichbar ist und wie lange ein Paket zu diesem System und zurück benötigt. Diese Zeit wird auch oft als round-trip time bezeichnet.

# ping localhost 
PING localhost (127.0.0.1): 56 data bytes 
64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=0.4 ms 
64 bytes from 127.0.0.1: icmp_seq=1 ttl=255 time=0.4 ms 
64 bytes from 127.0.0.1: icmp_seq=2 ttl=255 time=0.4 ms ^C 

--- localhost ping statistics --- 

3 packets transmitted, 3 packets received, 0% packet loss 
round-trip min/avg/max = 0.4/0.4/0.4 ms #

Wenn Sie ping wie hier gezeigt aufrufen, sendet es fortwährend Pakete aus, bis Sie es unterbrechen. Das ^C markiert die Stelle, an der wir Strg-C gedrückt haben.

Das obige Beispiel zeigt, daß Pakete an 127.0.0.1 korrekt ausgeliefert werden und nahezu augenblicklich eine Antwort an ping zurückgeschickt wird. Das beweist, daß Sie Ihre erste Netzwerkschnittstelle erfolgreich konfiguriert haben.

Wenn ping eine völlig andere Ausgabe produziert, als hier dargestellt, haben Sie ein echtes Problem. Prüfen Sie, ob irgendwelche Fehlermeldungen nahelegen, daß eine Datei nicht korrekt installiert worden ist. Prüfen Sie außerdem, ob die verwendeten Programme ifconfig und route mit Ihrer Kernel-Version kompatibel sind, und vor allem, ob der Kernel mit Netzwerkunterstützung übersetzt wurde (letzteres erkennen Sie an der Existenz des Verzeichnisses /proc/net). Wenn Sie eine Fehlermeldung bekommen, die sinngemäß “Network Unreachable” lautet, haben Sie sich wahrscheinlich beim route-Kommando vertippt. Sie müssen hier auf jeden Fall dieselbe Adresse angeben wie bei ifconfig.

Die bisher beschriebenen Schritte reichen aus, um Netzwerkapplikationen auf einem alleinstehenden Rechner zu benutzen. Nachdem Sie die oben angegebenen Zeilen in Ihr Netzwerk-Initialisierungsskript eingetragen und sichergestellt haben, daß es beim Systemstart ausgeführt wird, können Sie Ihre Maschine neu booten und einige Applikationen ausprobieren. Zum Beispiel sollte telnet localhost eine telnet-Verbindung aufbauen und Ihnen den Login-Prompt Ihres Systems geben.

Das Loopback-Interface ist allerdings nicht nur als Beispiel in Netzwerkbüchern oder als Testumgebung während der Softwareentwicklung nützlich, sondern wird auch von einigen Applikationen während des normalen Betriebs benutzt.2 Deshalb müssen Sie es auf jeden Fall konfigurieren, unabhängig davon, ob Ihre Maschine an ein Netz angeschlossen ist oder nicht.

Ethernet-Schnittstellen

Die Konfiguration von Ethernet-Schnittstellen geht fast genauso vonstatten wie bei den Loopback-Schnittstellen. Sie brauchen nur ein paar Parameter mehr, um Subnetze verwenden zu können.

In der virtuellen Brauerei haben wir das IP-Netz, das ursprünglich ein Klasse-B-Netz war, in C-Subnetze unterteilt. Um das dem Interface mitzuteilen, sieht der ifconfig-Aufruf so aus:

# ifconfig eth0 vstout netmask 255.255.255.0

Dies weist der Schnittstelle eth0 die IP-Adresse von vstout zu (172.16.1.2). Hätten wir die Netzmaske weggelassen, hätte ifconfig sie aus der Netzklasse der Adresse abgeleitet, was den inkorrekten Wert von 255.255.0.0 ergeben hätte. Ein schneller Test ergibt jetzt:

# ifconfig eth0 
eth0      Link encap 10Mps Ethernet HWaddr  00:00:C0:90:B3:42 
          inet addr 172.16.1.2 Bcast 172.16.1.255 Mask 255.255.255.0 
          UP BROADCAST RUNNING  MTU 1500  Metric 1 
          RX packets 0 errors 0 dropped 0 overrun 0 
          TX packets 0 errors 0 dropped 0 overrun 0

Wie Sie sehen, hat ifconfig die Broadcast-Adresse (im Bcast-Feld angezeigt) automatisch auf den üblichen Wert gesetzt, nämlich die Netzwerknummer mit einem Hostteil, bei dem alle Bits auf eins gesetzt sind. Außerdem wurde die maximale Übertragungseinheit (MTU — Maximum Transmission Unit, die maximale Größe der IP-Pakete, die der Kernel auf dieser Schnittstelle ausgibt) auf das Ethernet-spezifische Maximum von 1.500 Bytes eingestellt. Das sind die Werte, die Sie üblicherweise auch benutzen. Sie können aber über spezielle Optionen auch mit anderen Werten besetzt werden; diese Optionen beschreiben wir in Alles über ifconfig.

Wie es bereits bei der Loopback-Schnittstelle der Fall war, müssen Sie jetzt eine Route eintragen, die dem Kernel mitteilt, welches Netz durch eth0 erreicht werden kann. Für die virtuelle Brauerei würden Sie route so aufrufen:

# route add -net 172.16.1.0

Auf den ersten Blick sieht das ein wenig wie Schwarze Magie aus, da nicht ohne weiteres klar ist, wie route eigentlich wissen soll, daß wir hiermit die Ethernet-Schnittstelle meinen. Der Trick ist aber relativ simpel: Der Kernel prüft alle bisher konfigurierten Interfaces und vergleicht das Zielnetz (in unserem Fall 172.16.1.0) mit der Netznummer der Interface-Adresse, d.h. dem bitweisen UND der Interface-Adresse und der Netzmaske. Die einzige Schnittstelle, bei der diese beiden Werte übereinstimmen, ist eth0.

Aber was soll dann die Option –net? Sie wird nötig, da route sowohl Routen zu Netzwerken als auch zu einzelnen Hosts einrichten kann, wie Sie bereits am Beispiel der local­host-Route gesehen haben. Wenn Sie route eine IP-Adresse in Dezimalnotation übergeben, versucht es zu erraten, ob es sich dabei um eine Host- oder Netzadresse handelt, indem es den Hostteil betrachtet. Ist der Hostteil null, nimmt es an, daß die Adresse ein Netz bezeichnet, andernfalls behandelt es sie als Hostadresse. Deshalb würde route in unserem Beispiel davon ausgehen, daß 172.16.1.0 eine Hostadresse ist, denn es kann ja nicht wissen, daß wir Subnetze verwenden. Darum müssen Sie ihm ausdrücklich mitteilen, daß sie ein Netzwerk bezeichnet, indem Sie –net verwenden.

Natürlich können Sie es auch einfacher haben, indem Sie zum Beispiel die Netzwerknamen benutzen, die wir oben in /etc/networks definiert haben. Das hat nicht nur die bekannten Vorteile bei einer Umstrukturierung Ihres Netzes, sondern macht den Befehl auch wesentlich lesbarer. Sie können nun sogar die Option –net weglassen, da route jetzt weiß, daß brew-net ein Netzwerk bezeichnet.

# route add brew-net

Nachdem Sie die grundlegenden Konfigurationsschritte hinter sich gebracht haben, sollten Sie überprüfen, ob Ihr Ethernet tatsächlich fröhlich vor sich hinarbeitet. Wählen Sie irgendeine Maschine auf Ihrem lokalen Ethernet, z.B. vlager, und geben Sie folgenden Befehl ein:

# ping vlager 
PING vlager: 64 byte packets 
64 bytes from 172.16.1.1: icmp_seq=0. time=11. ms 
64 bytes from 172.16.1.1: icmp_seq=1. time=7. ms 
64 bytes from 172.16.1.1: icmp_seq=2. time=12. ms 
64 bytes from 172.16.1.1: icmp_seq=3. time=3. ms 
^C 

----vstout.vbrew.com PING Statistics---- 

4 packets transmitted, 4 packets received, 0 
round-trip (ms)  min/avg/max = 3/8/12

Wenn sich die Ausgabe auf Ihrem Bildschirm deutlich von dem unterscheidet, was Sie hier sehen, ist offensichtlich irgend etwas schiefgelaufen. Ungewöhnlich hoher Datenverlust weist auf ein Hardwareproblem hin, wie beispielsweise ungenügende oder fehlende Terminierung. Wenn ping keinerlei Pakete zurückempfängt, sollten Sie die Schnittstellenkonfiguration mit netstat überprüfen, das später in Der Befehl netstat beschrieben wird. Die Paketstatistiken, die ifconfig ausgibt, sagen Ihnen, ob überhaupt Pakete über das Interface übertragen wurden.Wenn Sie außerdem Zugang zum Zielrechner Ihres ping-Versuchs haben, sollten Sie auch auf diesem die Paketstatistiken der Maschine prüfen. So können Sie genau feststellen, wo die Pakete verlorengegangen sind. Zusätzlich sollten Sie auf beiden Maschinen mit route die Routing-Informationen überprüfen, um festzustellen, ob beide Maschinen über den richtigen Routeeintrag verfügen. Wenn Sie route ohne weitere Parameter aufrufen, gibt es die Routing-Tabellen des Kernels aus. Die Option –n sorgt dafür, daß es Adressen in Dezimalnotation anstelle der symbolischen Hostnamen darstellt:

# route -n 
Kernel routing table 
Destination  Gateway  Genmask         Flags Metric Ref Use    Iface 
127.0.0.1    *        255.255.255.255 UH    1      0   112    lo 
172.16.1.0   *        255.255.255.0   U     1      0    10    eth0

Die genaue Bedeutung der einzelnen Felder wird weiter unten im Abschnitt Der Befehl netstat erklärt. Die mit Flags betitelte Spalte enthält eine Liste von Flags für jedes Interface. U ist für aktive Schnittstellen immer gesetzt. Ein Flag H in dieser Spalte besagt, daß die Zieladresse einen einzelnen Host bezeichnet.Falls das H-Flag für eine Route gesetzt ist, die Sie als Netzwerkroute vorgesehen haben, müssen Sie den Befehl route wiederholt ausführen, zusammen mit der Option –net. Um festzustellen, ob eine von Ihnen eingetragene Route überhaupt benutzt wird, sehen Sie nach, ob sich der Wert im Use-Feld in der vorletzten Spalte zwischen zwei ping-Aufrufen erhöht.

Routing durch ein Gateway

Im vorigen Abschnitt hatten wir uns nur damit beschäftigt, wie Sie eine Maschine auf einem isolierten Ethernet einrichten. Der Regelfall ist allerdings, daß mehrere Netze durch Gateways miteinander verbunden sind. Diese Gateways können einfach zwei oder mehrere Ethernets miteinander verbinden, aber auch das Tor zur Außenwelt (z.B. das Internet) bereitstellen. Um den Dienst eines Gateways zu nutzen, müssen Sie der Netzwerkschicht zusätzliche Routing-Informationen zur Verfügung stellen.

Zum Beispiel sind die Ethernets der virtuellen Brauerei und der virtuellen Kellerei durch solch ein Gateway miteinander verbunden, nämlich vlager. Angenommen, vlager sei bereits konfiguriert, dann müssen wir auf Maschinen wie vstout nur noch eine weitere Route eintragen, die angibt, daß alle Maschinen im Netzwerk der Kellerei über vlager erreichbar sind. Der entsprechende Aufruf von route sieht so aus:

# route add wine-net gw vlager

Dabei gibt gw an, daß das folgende Argument ein Gateway bezeichnet. Natürlich muß jedes System im Kellerei-Netz, zu dem Sie Verbindung aufnehmen wollen, einen analogen Routing-Eintrag für das Brauerei-Netz haben. Ansonsten könnten Sie nur Daten vom Brauerei-Netz an das Kellerei-Netz senden, die Rechner im Kellerei-Netz wären aber zu keiner Antwort fähig.

Dieses Beispiel beschreibt nur ein Gateway, das Pakete zwischen zwei isolierten Ethernets befördert. Nehmen Sie nun an, daß vlager außerdem eine Verbindung ins Internet hat, beispielsweise durch einen SLIP-Link. Dann wäre es natürlich wünschenswert, daß Pakete für beliebige Zieladressen, die nicht im Brauerei-Netz liegen, an vlager weitergereicht werden. Das können Sie erreichen, indem Sie vlager zum Default-Gateway für vstout machen:

# route add default gw vlager

Die Netzwerkadresse default ist eine Abkürzung für 0.0.0.0, die Default-Route. Sie paßt zu jeder Zieladresse und wird immer dann benutzt, wenn keine andere, näher spezifizierte Route paßt. Diesen Namen müssen Sie nicht in /etc/networks eintragen, er ist in route fest eingebaut.

Sollten Sie hohe Verlustraten beobachten, wenn Sie eine Maschine hinter einem Gateway mit ping ansprechen, könnte das ein Hinweis auf ein verstopftes Netz sein. In diesem Fall sind Paketverluste nicht so sehr die Folge technischer Probleme, sondern rühren von einer kurzzeitigen Überlastung der routenden Maschinen her, die dazu führt, daß ankommende Pakete verzögert oder gar verworfen werden.

Konfiguration eines Gateways

Es ist ziemlich einfach, eine Maschine dafür einzurichten, Pakete zwischen zwei Ethernets auszutauschen. Nehmen wir an, wir befänden uns wieder auf vlager, das mit zwei Ethernet-Karten ausgestattet ist, die jeweils mit einem der beiden Netze verbunden sind. Alles, was Sie tun müssen, ist, beide Schnittstellen getrennt zu konfigurieren und ihnen eine Adresse auf dem jeweiligen Subnetz zuzuweisen — das war's.

Dabei ist es recht nützlich, zusätzlich zum offiziellen Hostnamen vlager zwei Namen für die beiden Schnittstellen in /etc/hosts zu definieren:

172.16.1.1      vlager.vbrew.com    vlager vlager-if1 
172.16.2.1      vlager-if2

Mit diesen Einträgen lautet die Befehlsreihenfolge für die Einrichtung der beiden Schnittstellen so:

# ifconfig eth0 vlager-if1 
# route add brew-net 
# ifconfig eth1 vlager-if2 
# route add wine-net

Wenn sie so nicht funktioniert, überprüfen Sie, ob Ihr Kernel überhaupt mit Unterstützung für IP-Forwarding übersetzt wurde. Das ist dann der Fall, wenn die erste Zahl der zweiten Zeile von /proc/net/snmp auf 1 gesetzt ist.

Die PLIP-Schnittstelle

Wenn Sie PLIP verwenden, um zwei Maschinen miteinander zu vernetzen, liegen die Dinge etwas anders als bei einem Ethernet. PLIP stellt im Gegensatz zu Ethernet, das viele Hosts unterstützt und daher als Broadcast-Netzwerk bezeichnet wird, nur eine sogenannte Punkt-zu-Punkt-Verbindung her, d.h., es sind nur zwei Hosts involviert. Da hier keine eigenen Netzwerke verwaltet werden müssen, unterscheidet sich die Konfiguration von Punkt-zu-Punkt-Verbindungen von der Konfiguration von Broadcast-Netzwerken.

PLIP stellt sehr kostengünstige und portable Verbindungen zwischen Computern her. Als Beispiel betrachten wir den Laptop einer Angestellten der virtuellen Brauerei, der mittels PLIP mit vlager verbunden wird. Der Laptop selbst heißt vlite und hat nur einen parallelen Port. Beim Booten wird dieser als plip1 registriert. Um die Verbindung zu aktivieren, muß die Schnittstelle plip1mit den folgenden Befehlen konfiguriert werden:3

# ifconfig plip1 vlite pointopoint vlager 
# route add default gw vlager

Der erste Befehl richtet das Interface ein und teilt dem Kernel mit, daß es sich dabei um eine Punkt-zu-Punkt-Verbindung handelt, deren anderes Ende die Adresse vlager hat. Der zweite Befehl installiert die Default-Route (mit vlager als Gateway). Auf vlager ist eine ähnliche ifconfig-Anweisung erforderlich, um die Verbindung zu etablieren (ein Aufruf von route ist hier nicht nötig):

# ifconfig plip1 vlager pointopoint vlite

Das Besondere an diesem Fall ist, daß die Schnittstelle plip1 auf vlager keine eigene IP-Adresse haben muß, sondern Sie ihr auch die Adresse 172.16.1.1 zuweisen können. Dies ist eine wichtige Eigenschaft von Punkt-zu-Punkt-Verbindungen. Punkt-zu-Punkt-Netzwerke unterstützen Netzwerke nicht direkt, so daß die Schnittstellen auf den unterstützten Netzwerken keine eigenen Adressen benötigen. Um hier mögliche Konfusionen zu vermeiden, greift der Kernel auf die Schnittstellen-Informationen in der Routing-Tabelle zurück.4

Bis jetzt haben wir das Routing vom Laptop zu den Netzen der virtuellen Brauerei eingerichtet. Jetzt fehlt noch die Möglichkeit, vlite von jedem Rechner der virtuellen Brauerei aus zu erreichen. Besonders mühselig ist es, auf jedem System eine spezielle Route einzutragen, die vlager als Gateway für vlite angibt:

# route add vlite gw vlager

Eine viel bessere Methode, mit solchen temporären Routen zurechtzukommen, ist dynamisches Routing. Das können Sie beispielsweise mit gated, einem sogenannten Routing-Dämon, verwirklichen, der die Routing-Informationen von vlager an alle anderen Maschinen im Netz verteilt. Dazu muß gated allerdings auf jeder Maschine im Netz installiert und konfiguriert werden, womit wir auch nicht viel gewonnen hätten. Die einfachste Variante überhaupt ist in einem solchen Fall Proxy-ARP (Address Resolution Protocol). Bei dieser Methode tut vlager gegenüber allen Maschinen auf dem Brauerei-Netz so, als sei es vlite, indem es alle ARP-Anfragen mit seiner eigenen Ethernet-Adresse beantwortet. Die Folge davon ist, daß alle Pakete für vlite auf vlager landen, das sie dann an den Laptop weiterreicht. Wir werden im Abschnitt Die ARP-Tabelle auf Proxy-ARP zurückkommen.

Aktuelle Versionen von net-tools enthalten ein Tool namens plipconfig. Dieses Programm ermöglicht es Ihnen, eine Reihe besonderer Zeitparameter für PLIP einzustellen. Die IRQ, die für den Druckerport verwendet werden soll, können Sie mit dem Befehl ifconfig definieren.

Die SLIP- und PPP-Schnittstellen

Obwohl SLIP und PPP genau wie PLIP auch nur einfache Punkt-zu-Punkt-Verbindungen darstellen, ist deren Konfiguration wesentlich komplizierter. Zum Verbindungsaufbau über SLIP gehört meist das Einwählen ins fremde System und die Umschaltung der seriellen Leitung auf SLIP-Betrieb. Für PPP gilt in etwa dasselbe. SLIP und PPP behandeln wir ausführlich in Kapitel 7 Serial Line IP, und in Kapitel 8 Das Point-to-Point-Protokoll.

Die Dummy-Schnittstelle

Die Dummy-Schnittstelle ist ein wenig exotisch, aber trotzdem unter gewissen Umständen gut zu gebrauchen. Ihre wichtigste Anwendung findet sich auf isolierten Maschinen und solchen, deren einzige IP-Verbindung zur Außenwelt eine Wählverbindung, zum Beispiel über SLIP oder PPP, ist. Genaugenommen sind letztere die meiste Zeit auch isoliert (im Englischen verwendet man hier den Ausdruck standalone).

Das Dilemma mit solchen “alleinstehenden” Maschinen ist, daß ihre einzige aktive Schnittstelle das Loopback-Interface ist, das immer die Adresse 127.0.0.1 trägt. Manchmal müssen Sie aber auch Daten an die “offizielle” IP-Adresse Ihres Rechners schicken können. Betrachten Sie den Laptop vlite, der für die Dauer dieses Beispiels mal vom Netz getrennt wurde. Eine Applikation auf vlite möchte nun Daten an eine andere Applikation auf vlite senden. Dazu sucht sie die Adresse von vlite in /etc/hosts heraus, erhält 172.16.1.65 und schickt das Paket an diese Adresse. Da aber zur Zeit das Loopback-Interface als einziges aktiv ist, kann der Kernel gar nicht wissen, daß sich diese Adresse auf den lokalen Host bezieht! Die Folge davon ist, daß er das Paket als unzustellbar wegwirft und der Applikation eine Fehlermeldung zurückliefert.

An dieser Stelle tritt nun die Dummy-Schnittstelle in Erscheinung. Sie löst das Dilemma, indem sie als Alter ego der Loopback-Schnittstelle auftritt, sozusagen als Halter einer zweiten IP-Adresse. In unserem Fall würden Sie ihr einfach die Adresse 172.16.1.65 geben und eine Route eintragen, die auf dieses Interface verweist. Jedes Paket an 172.16.1.65 wird daraufhin lokal ausgeliefert. Die vollständige Sequenz der Befehle ist:5

# ifconfig dummy vlite 
# route add vlite

IP-Alias

Neuere Kernel unterstützen ein Feature, das die Dummy-Schnittstelle völlig ersetzen kann und darüber hinaus weitere nützliche Funktionen bietet. Das sogenannte IP-Alias gestattet Ihnen, einzelnen physikalischen Schnittstellen mehrere IP-Adressen zuzuordnen. Im einfachsten Fall können Sie das Verhalten einer Dummy-Schnittstelle nachbilden, indem Sie die Hostadresse Ihres Rechners als Alias zur Loopback-Schnittstelle konfigurieren und dann völlig auf die Dummy-Schnittstelle verzichten. In komplexeren Anwendungen können Sie Ihren Host so konfigurieren, daß er wie viele verschiedene Hosts wirkt, die jeweils eine eigene IP-Adresse haben. Dieses Vorgehen wird manchmal “Virtual Hosting” genannt, obwohl dieser Begiff genau genommen auch für eine Reihe anderer Verfahren benutzt wird.6

Um für eine Schnittstelle einen Alias zu konfigurieren, müssen Sie zunächst sichergehen, daß Ihr Kernel IP-Alias unterstützt. Das erkennen Sie an der Existenz der Datei /proc/net/ip_alias. Die Konfiguration eines IP-Alias geschieht im Grunde genauso wie die Konfiguration einer realen Netzwerkschnittstelle. Sie benutzen dabei einen speziellen Namen, um anzuzeigen, daß Sie einen Alias wollen. Beispiel:

# ifconfig lo:0 172.16.1.1
Dieser Befehl erzeugt einen Alias für die Loopback-Schnittstelle mit der IP-Adresse 172.16.1.1. Auf den IP-Alias einer Netzwerkschnittstelle greifen Sie zu, indem Sie an den Namen der Schnittstelle ein :n anhängen, wobei n eine Ganzzahl ist. In unserem Beispiel legen wir einen Alias für die Schnittstelle lo an, und wir weisen dem Alias die Nummer null zu. Auf diese Weise kann eine physikalische Schnittstelle eine Vielzahl von Aliases zur Verfügung stellen.

Jeder Alias kann nun wie eine eigenständige Schnittstelle behandelt werden, und soweit es die IP-Software des Kernels betrifft, geschieht das auch so. Allerdings müssen sich alle diese virtuellen Schnittstellen die zugrundeliegende Hardware teilen.




1.

Erinnert sich noch jemand an Pink Floyds “Echoes”?

2.

Zum Beispiel verwenden alle RPC-basierten Applikationen die Loopback-Schnittstelle, um sich während des Systemstarts beim portmapper zu registrieren. Zu diese Applikationen gehören NIS und NFS.

3.

Die Schreibweise pointopoint ist wirklich kein Tippfehler. :-)

4.

Vorsichtshalber sollten Sie allerdings Ihren PLIP- oder SLIP-Link erst dann einrichten, wenn Sie bereits alle Routen für andere Netze eingetragen haben. Bei einigen älteren Kernels könnte eine falsche Reihenfolge dazu führen, daß Ihre Netzwerkroute statt aufs Ethernet plötzlich auf die PLIP-Schnittstelle zeigt.

5.

Die Dummy-Schnittstelle wird mit dummy0 bezeichnet, wenn sie als Modul geladen wird und nicht als fester Bestandteil im Kernel integriert ist. Der Grund dafür ist, daß mehrere Module gleichzeitig geladen werden können und dann mehr als nur eine Dummy-Schnittstelle zur Verfügung steht.

6.

Genauer gesagt, ist die Anwendung von IP-Aliasing allgemein als Virtual Hosting auf Netzwerkebene bekannt. In der Welt des WWW und SMTP ist dagegen Virtual Hosting auf Applikationsebene üblich. Dabei wird für jeden virtuellen Host zwar dieselbe IP-Adresse verwendet, aber mit jeder Anfrage auf Applikationsebene wird ein anderer Hostname mitgeliefert. Services wie z.B. FTP sind nicht in der Lage, auf diese Weise zu funktionieren. Sie kommen nur mit Virtual Hosting auf Netzwerkebene zurecht.


vorheriges Kapitel Inhaltsverzeichnis Stichwortverzeichnis nächstes Kapitel


Weitere Informationen zum Linux - Wegweiser für Netzwerker

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


O'Reilly Home|O'Reilly-Partnerbuchhandlungen|Bestellinformationen
Kontakt|Über O'Reilly|Datenschutz

© 2001, O'Reilly Verlag