Suche im Katalog
Linux Netzwerker-Handbuch

Linux Netzwerker-Handbuch


Tony Bautts, Terry Dawson & Gregor N. Purdy
3. Auflage Juli 2005
ISBN 3-89721-414-8
382 Seiten
Weitere Informationen zur gedruckten Version des Buches finden Sie unter:
www.oreilly.de/catalog/linag3ger/

Zur Übersicht aller OpenBooks


TOC PREV NEXT INDEX

Kapitel 4

TCP/IP-Konfiguration

In diesem Kapitel befassen wir uns mit den Schritten, die nötig sind, um Ihr System für TCP/IP einzurichten. Angefangen mit der Zuordnung von IP-Adressen, arbeiten wir uns langsam durch die Konfiguration der Netzwerkschnittstellen und stellen einige Werkzeuge vor, die recht nützlich sind, um eventuellen Problemen bei Ihrer Netzwerkinstallation nachzuspüren.

Den Großteil der Aufgaben, die dieses Kapitel behandelt, werden Sie nur einmal erledigen müssen. Danach müssen Sie sich mit den meisten Konfigurationsdateien nur noch dann beschäftigen, wenn Sie eine neue Maschine zu Ihrem Netz hinzufügen oder wenn Sie Ihr System völlig neu konfigurieren. Einige der Befehle, die zur Initialisierung von TCP/IP dienen, müssen allerdings jedes Mal ausgeführt werden, wenn Ihr System bootet. Das geschieht normalerweise durch die /etc/rc-Skripten.

Für gewöhnlich ist der netzwerkspezifische Teil der Boot-Prozedur in einem Skript enthalten. Der Name dieses Skripts variiert in den verschiedenen Linux-Distributionen. In vielen älteren Linux-Distributionen ist es unter dem Namen rc.net oder rc.inet bekannt. Manchmal werden Sie auch zwei Skripten namens rc.inet1 und rc.inet2 vorfinden, wobei Ersteres den Kernel-Teil des Netzwerkcodes initialisiert und Letzteres die wichtigsten Netzwerkdienste und -anwendungen startet. In den modernen Distributionen sind die rc-Dateien etwas besser organisiert. Hier finden Sie im Verzeichnis /etc/init.d/ (oder /etc/rc.d/init.d/) neben den Skripten, die die Netzwerkschnittstellen erzeugen, auch die Skripten, die die Netzwerk-Anwendungsprogramme starten. Die Beispiele in diesem Buch beziehen sich auf letztere Anordnung.

Dieses Kapitel befasst sich mit den Teilen des Skripts, die Ihre Netzwerkschnittstellen konfigurieren. Am Ende dieses Kapitels werden Sie eine Reihe von Befehlen kennen gelernt haben, die das TCP/IP-Netzwerk Ihres Computers ordnungsgemäß konfigurieren. Die Beispielanweisungen müssen Sie für Ihre eigenen Skripten entsprechend anpassen. Stellen Sie sicher, dass das Startskript Ihres Rechners vom Ausgangs-rc-Skript aus gestartet wird, und booten Sie dann den Rechner neu. Die rc-Netzwerkskripten Ihrer Linux-Distribution sollten einige aussagekräftige Beispiele enthalten, die Sie als Basis für Ihre eigene Netzwerkkonfiguration übernehmen können.

Das /proc-Dateisystem verstehen

Linux 2.4-Distributionen verwenden das /proc-Dateisystem für die Kommunikation mit dem Kernel, 2.6 benutzt das neue sysfs. Beide Schnittstellen erlauben den Zugriff auf Laufzeitinformationen des Kernels über einen dateisystemartigen Mechanismus. In diesem Kapitel werden wir uns eher auf das /proc-Dateisystem konzentrieren, da es momentan weiter verbreitet ist. Dieses Dateisystem kann, wenn es gemountet ist, wie jedes andere Dateisystem Dateien auflisten oder deren Inhalt anzeigen. Zu den typischen Elementen gehören die Dateien loadavg, die die durchschnittliche Systemauslastung enthält (load average), und meminfo, die ein Abbild des gesamten Kernspeichers enthält und Auskünfte über den aktuellen Bedarf an Swap-Speicher gibt.

Dem fügt der Netzwerkcode das Verzeichnis net hinzu. Es enthält eine Reihe von Dateien, die Dinge wie die ARP-Tabellen, den Zustand aller TCP-Verbindungen und die Routing-Tabellen enthalten. Die meisten Werkzeuge zur Netzwerkadministration erhalten ihre Informationen aus diesen Dateien.

Das proc-Dateisystem (auch als procfs bekannt) wird normalerweise während des Systemstarts an das Verzeichnis /proc gebunden. Am besten fügen Sie dann die folgende Zeile in /etc/fstab ein:

# procfs mount point:
none /proc proc defaults

Anschließend müssen Sie den Befehl mount /proc aus Ihrem /etc/rc-Skript aufrufen.

Heutzutage ist procfs in den meisten Kerneln bereits eingebunden.

Installation der Werkzeuge

Vorkonfigurierte Linux-Distributionen enthalten die wichtigsten Netzwerkanwendungen und Dienstprogramme sowie einen Satz von Beispieldateien. Die einzige Gelegenheit, bei der Sie die Programme durch neue ersetzen müssen, ergibt sich bei der Installation eines neuen Kernels. Da neue Kernel-Versionen manchmal auch Veränderungen der Netzwerkschnittstelle des Kernels mit sich bringen, müssen Sie die grundlegenden Konfigurationswerkzeuge aktualisieren. Dazu müssen Sie sie zumindest neu kompilieren, manchmal aber auch die neuesten Binaries besorgen. Sie finden diese Binaries unter ftp://ftp.inka.de/pub/comp/Linux/networking/NetTools/ in einem Archiv namens net-tools-XXX.tar.gz. XXX ist in diesem Fall die Versionsnummer.

Wenn Sie die Standard-TCP/IP-Netzwerkanwendungen selbst kompilieren und installieren wollen, finden Sie die Quellen dafür auf den meisten Linux-FTP-Servern. Alle modernen Linux-Distributionen enthalten eine ziemlich umfassende Sammlung von TCP/IP-Netzwerkanwendungen wie Webbrowser, Telnet- und FTP-Programme sowie andere Netzwerkprogramme wie etwa talk. Falls Sie etwas finden, das Sie selbst kompilieren müssen, stehen die Chancen recht gut, dass die Kompilierung unter Linux recht gut funktioniert, wenn Sie sich an die Anweisungen der Software halten.

Setzen des Hostnamens

Die meisten, wenn nicht gar alle Netzwerkanwendungen verlassen sich darauf, dass der Name Ihrer Maschine einen sinnvollen Wert hat. Er wird normalerweise während des Boot-Vorgangs mit dem Befehl hostname gesetzt. Um den Hostnamen auf name zu setzen, geben Sie Folgendes ein:

# hostname name

Es ist üblich, den nicht-qualifizierten Namen ohne jede Domain-Angabe zu verwenden. Wenn wir beispielsweise eine Site für eine virtuelle Brauerei hätten (ein imaginäres, aber typisches kleines Netzwerk, das in verschiedenen Kapiteln unseres Buches zum Einsatz kommt), könnte einer der Rechner vale.vbrew.com oder vlager.vbrew.com heißen. Das ist sein offizieller voll qualifizierter Domainname (Fully Qualified Domain Name oder FQDN). Die erste Komponente wird oft für den lokalen Hostnamen benutzt, d.h. vale. Da dieser lokale Name aber häufig dann verwendet wird, wenn eine Anwendung die IP-Adresse des Rechners, auf dem sie läuft, herausfinden will, müssen Sie sicherstellen, dass der Resolver diesen Namen kennt. Das bedeutet im Allgemeinen, dass Sie diesen Namen in die Datei /etc/hosts eintragen müssen.

Manche Leute schlagen vor, mit dem Befehl domainname dem Kernel die Domain-Komponente des Hostnamens mitzuteilen, so dass man anschließend die Ausgabe von hostname und domainname einfach nur kombinieren müsste, um wieder den vollständigen Namen zu erhalten. Das ist bestenfalls zur Hälfte richtig, da der Befehl domainname eigentlich nur die NIS-Domain Ihres Systems festlegt, die mit der DNS-Domain, der Ihr Rechner angehört, nicht viel zu tun haben muss. Um sicherzustellen, dass die Kurzform Ihres Hostnamens von allen aktuellen Versionen des hostname-Befehls aufgelöst werden kann, tragen Sie sie in Ihren lokalen Domain Name Server ein oder schreiben Sie den voll qualifizierten Domainnamen in die Datei /etc/hosts. Sie können dann den hostname-Befehl mit dem Argument --fqdn aufrufen, um den voll qualifizierten Domainnamen auszugeben.

Zuweisen von IP-Adressen

Wenn Sie auf Ihrem Rechner die Netzwerksoftware für den Standalone-Betrieb konfigurieren, können Sie diesen Abschnitt überspringen, da die einzige IP-Adresse, die Sie benötigen, diejenige für die Loopback-Schnittstelle ist. Diese IP-Adresse lautet immer 127.0.0.1.

In echten Netzen wie einem Ethernet sind die Dinge ein wenig komplizierter. Wenn Sie sich an ein existierendes Netz anschließen wollen, müssen Sie dessen Administratoren normalerweise bitten, Ihnen eine IP-Adresse zuzuweisen. Manchmal ist das jedoch nicht erforderlich. Viele Netzwerke verwenden inzwischen ein System dynamisch zugewiesener IPs namens Dynamic Host Configuration Protocol (DHCP). Auf dieses System gehen wir im nächsten Abschnitt ein. Wenn Sie selbst ein Netzwerk einrichten wollen, müssen Sie die IP-Adressen entweder von Hand zuweisen oder einen DHCP-Server konfigurieren. Wenn eine Ihrer Maschinen direkt an das Internet angeschlossen ist, beziehen Sie die IP-Adresse von Ihrem ISP, DSL-Anbieter oder Kabelnetzwerk.

Alle Hosts innerhalb eines lokalen Netzes verwenden normalerweise Adressen aus demselben logischen IP-Netz, das heißt, die ersten Oktette ihrer IP-Adressen sind identisch. Wenn Sie mehrere physisch unabhängige Netzwerke haben, müssen Sie diesen entweder unterschiedliche Netzwerknummern zuweisen oder eine Einteilung in Subnetze vornehmen, indem Sie Ihren IP-Adressbereich aufteilen. Wie das geht, beschreiben wir im Abschnitt »Subnetze anlegen« weiter hinten in diesem Kapitel.

Ist Ihr Netz nicht mit dem Internet verbunden oder verwendet es NAT (Network Address Translation) für die Verbindung, dann können Sie eine beliebige zulässige Netzwerkadresse wählen. Sie müssen nur aufpassen, dass keine Pakete aus Ihrem Netzwerk in das echte Internet entkommen. Um völlig sicherzugehen, dass kein Schaden entsteht, selbst wenn dies einmal passiert, sollten Sie eine der Netzwerknummern verwenden, die für eine private Nutzung reserviert sind. Die Internet Assigned Numbers Authority (IANA; so etwas wie die Zulassungsstelle für das Internet) hat mehrere Netzwerknummern der Klassen A, B und C reserviert, die Sie benutzen können, ohne sie registrieren zu müssen. Diese Adressen sind nur innerhalb Ihres privaten Netzes gültig und werden nicht zwischen echten Internetsystemen geroutet. Die Adressen sind in RFC 1918 definiert und in Tabelle 2-1 in Kapitel 2 aufgelistet. Beachten Sie bitte, dass der zweite und dritte Block 16 bzw. 256 Netzwerke enthält.

Allerdings ist es nicht nur dann sinnvoll, eine Adresse aus diesem Bereich zu wählen, wenn Ihr Netz völlig vom Internet abgeschnitten ist; ein solches Netz hilft Ihnen auch, den Zugriff von außen auf Maschinen in Ihrem Netz auf ein einzelnes Gateway zu beschränken. Innerhalb Ihres Netzes wäre das Gateway über seine interne Adresse von allen Maschinen aus erreichbar, während es der Außenwelt unter seiner offiziellen Adresse (wie vom Provider vergeben) bekannt wäre. Dieses Konzept der Verbindung mittels IP-Masquerading behandeln wir in Kapitel 9.

Im weiteren Verlauf dieses Buches werden wir annehmen, dass der Netzwerkverwalter der Brauerei eine Klasse-B-Netzwerknummer verwendet, etwa 172.16.0.0. Natürlich wäre eine Adresse der Kategorie C völlig ausreichend, um die Anforderungen sowohl der Brauerei als auch der Kellerei zu befriedigen. Wir greifen aus Gründen der Einfachheit auf ein Klasse-B-Netzwerk zurück; die Bildung von Subnetzen, die wir im nächsten Abschnitt beschreiben, wird dadurch leichter verständlich.

Beziehen von IP-Adressen über DHCP

Viele Netzwerke verwenden inzwischen das Dynamic Host Configuration Protocol (DHCP). Dieses Protokoll läuft auf Netzwerkschicht zwei und wartet auf DHCP-Anfragen. Der DHCP-Server enthält eine vordefinierte Liste von IP-Adressen, die vom Netzwerkadministrator zugewiesen wurden und Benutzern zugeteilt werden können. Wenn der DHCP-Server eine Anfrage nach einer IP-Adresse empfängt, antwortet er mit einem DHCP-Lease. Ein Lease bedeutet, dass die IP-Adresse dem anfragenden Client für eine vorbestimmte Zeitdauer überlassen wird. Stark ausgelastete Netzwerke legen als Dauer eines Lease oft eine feste Anzahl Stunden fest, um zu verhindern, dass eine Adresse von einer untätigen Maschine belegt wird. In manchen Netzwerken wird ein niedriger Grenzwert von gerade einmal zwei Stunden angesetzt. In kleineren Netzwerken entscheidet man sich oft für größere Werte, etwa einen Tag oder sogar eine Woche. Welcher Wert eingestellt wird, ist ganz und gar Sache des Netzwerkadministrators und sollte sich nach der Netzwerkauslastung richten.

Um einen DHCP-Lease in einem Netzwerk anzufordern, benötigen Sie die dhcpcd-Software. Die neueste Version der Software finden Sie unter http://www.phystech.com/download/dhcpcd.html. Neben den neuesten Versionen der Software gibt es dort auch unterstützende Dokumentationen. Auf vielen modernen Linux-Distributionen ist diese Software bereits vorinstalliert und erlaubt es Ihnen sogar, bereits während der Einrichtung und Installation des Systems Ihre Schnittstellen mit DHCP zu konfigurieren.

Das Beziehen einer IP-Adresse über DHCP ist einfach und wird über folgenden Befehl erreicht:

vlager# dhcpcd eth0
vlager#

Der Dämon konfiguriert an dieser Stelle Ihre eth0-Schnittstelle neu. Dabei weist er ihr nicht nur eine IP-Adresse zu, sondern konfiguriert auch die Subnetzaufteilung entsprechend. Viele DHCP-Server stellen außerdem Informationen über die Standardroute und das DNS bereit. Im letzteren Fall wird Ihre /etc/resolv.conf-Datei mit den aktualisierten Informationen des DNS-Servers neu geschrieben. Falls Sie aus irgendeinem Grund nicht wollen, dass der Dämon Ihre resolv.conf-Datei neu anlegt, können Sie die Option -R auf der Kommandozeile angeben. Es gibt eine Reihe zusätzlicher Kommandozeilenoptionen für dhcpcd, die in einigen Umgebungen erforderlich sein können. Eine Liste dieser Optionen finden Sie in der dhcpcd-Manpage. Die Datei resolv.conf werden wir im Kapitel über das DNS ausführlicher vorstellen.

Einen DHCP-Server betreiben

Bei größeren, dynamischeren Netzwerken ist DHCP unverzichtbar. Damit dieser Dienst jedoch angeboten werden kann, müssen die Clients ihre IP-Adressen von einem DHCP-Server beziehen. Es gibt zwar eine Reihe von Routern, Firewalls und anderen Netzwerkgeräten, die diese Funktionalität zur Verfügung stellen, allerdings könnte es sein, dass ein Netzwerkadministrator lieber eine Linux-Maschine für diese Aufgabe einsetzen möchte. Linux-DHCP-Server zeigen im Allgemeinen eine größere Flexibilität bei den Konfigurationsoptionen. Es gibt eine Vielzahl von DHCP-Servern; eines der besseren und damit empfehlenswerteren Angebote jedoch kommt vom ISC und ist unter ftp://ftp.isc.org/isc/dhcp/ zu finden. Die Konfiguration und Installation ist nicht sehr schwierig und greift auf das bekannte automake-Konfigurationsskript zurück. Sobald die Software kompiliert und installiert wurde, können Sie mit der Konfiguration beginnen.

Zuerst müssen Sie jedoch sicherstellen, dass Ihre Netzwerkschnittstellen für Multicast-Unterstützung konfiguriert sind. Das überprüfen Sie am besten mit dem Befehl ifconfig:

ticktock root # ifconfig
eth0 Link encap:Ethernet HWaddr C0:FF:EE:C0:FF:EE
inet addr:172.16.1.1 Bcast:172.16.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:80272 errors:0 dropped:0 overruns:0 frame:0
TX packets:55339 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:8522502 (8.1 Mb) TX bytes:9203192 (8.7 Mb)
Interrupt:10 Base address:0x4000

Falls Sie in der Ausgabe den Wert MULTICAST nicht sehen können, müssen Sie den Kernel umkonfigurieren, damit er Multicast im Netzwerk unterstützt. Das ist aber ziemlich unwahrscheinlich, da die meisten Kernel-Konfigurationen Multicast standardmäßig unterstützen.

Jetzt können Sie eine dhcpd.conf-Datei schreiben. Ein Beispiel für diese Datei finden Sie hier:

# Beispielkonfiguration eines DHCP-Servers
option domain-name "vbrew.com";
option domain-name-servers ns1.vbrew.com, ns2.vbrew.com;
default-lease-time 1600;
max-lease-time 7200;
log-facility local7;
# Dies ist eine einfache Subnetz-Deklaration.
subnet 172.16.1.0 netmask 255.255.255.0 {
range 172.16.1.10 172.16.1.50;
option routers router1.vbrew.com;
}

Diese Konfiguration erzeugt einen DHCP-Server, der Adressen im Netzwerk 172.16.1.0 zuweist. Er kann insgesamt 40 IP-Adressen von 172.16.1.10 bis 172.16.1.50 zuweisen. Die Befehle option routers und domain-name-servers ermöglichen es Ihnen, den Standard-Router und die DNS-Server für die Clients festzulegen.

Hier sind einige der nützlicheren Optionen für die DHCP-Server-Konfiguration:

option domain-name
Sie haben damit die Möglichkeit, den Domainnamen - eingeschlossen in Anführungszeichen - für Ihr Netzwerk anzugeben. Die Angabe ist nicht notwendig, kann aber lokale Namensanfragen beschleunigen.
option domain-name-servers
Dieser Wert wird zwar als optional betrachtet, ist es in den meisten Fällen aber nicht. Hier werden die IP-Adressen oder die FQDN-Domainname-Server aufgeführt.
default-lease-time
Wenn ein Host nach einem Lease fragt und keine bestimmte Zeitdauer anfordert, wird dieser Wert (in Sekunden) zugewiesen.
max-lease-time
Diese Option legt die maximale Zeitdauer fest, die als Lease zugewiesen wird.
fixed-address
Mit dieser Option können Sie bestimmten Clients eine feste IP-Adresse zuweisen. Diese Option wird im Allgemeinen zusammen mit den Optionen zur MAC-Adressfilterung verwendet.
hardware Ethernet
Mit dieser Option können Netzwerkadministratoren festlegen, welchen MAC-Adressen IP-Adressen zugeordnet werden. Das kann dazu dienen, um einen DHCP-Bereich zu sichern oder um MAC-Adressen mit bestimmten IP-Adressen zu verbinden.

Der DHCP-Server kann die MAC-Adresse des Clients als Methode zum Beschränken oder Zuweisen von IP-Adressen einsetzen. Diese Art der Konfiguration könnte in Umgebungen mit einem höheren Sicherheitsbedarf erforderlich sein, wo nur bekannten Maschinen Adressen zugewiesen werden sollen. Das folgende Beispiel zeigt, wie der DHCP-Server einem Host eine bestimmte Adresse auf der Grundlage seiner MAC-Adresse zuweisen kann. Sie sollten außerdem wissen, dass hier auch die range-Anweisung benutzt werden kann:

host vale {
hardware ethernet 0:0f:d0:ee:ag:4e;
fixed-address 172.16.1.55;
}

Achten Sie darauf, dass die Bereiche Ihres DHCP-Adress-Pools keine statisch zugewiesenen Adressen enthalten, da es ansonsten mit ziemlicher Sicherheit zu IP-Adresskonflikten kommt.

Subnetze anlegen

Um mehrere Ethernets zu betreiben, müssen Sie Ihren Adressbereich in Subnetze unterteilen. Bitte beachten Sie, dass eine Unterteilung in Subnetze nur notwendig wird, wenn Sie mehr als ein Broadcast-Netz haben; Punkt-zu-Punkt-Verbindungen zählen hier nicht. Wenn Sie beispielsweise ein Ethernet und eine oder mehrere PPP-Verbindungen in die weite Welt unterhalten, besteht kein Bedarf an mehreren Subnetzen. Warum das so ist, werden wir später in Kapitel 6 erläutern.

Um zwei Ethernets bedienen zu können, entscheidet sich der Netzwerkadministrator der Brauerei, 8 Bits vom Hostteil der Adresse als zusätzliche Subnetz-Bits zu verwenden. Damit bleiben weitere 8 Bits für den Hostteil, womit pro Subnetz 254 Adressen möglich sind. Der Brauerei teilt er das Subnetz 1 zu und der Kellerei Subnetz 2. Die jeweiligen Netzwerkadressen sind dann 172.16.1.0 und 172.16.2.0. Die Netzmaske ist 255.255.255.0.

vlager, das als Gateway zwischen den zwei Netzen fungiert, erhält auf beiden jeweils die Hostnummer 1, was eine IP-Adresse von 172.16.1.1 bzw. 172.16.2.1 ergibt.

Beachten Sie, dass wir in diesem Beispiel der Einfachheit halber ein Klasse-B-Netzwerk verwenden, obwohl ein Klasse-C-Netzwerk realistischer wäre. Im neuen Netzwerkcode ist die Aufteilung in Subnetze nicht mehr durch Bytegrenzen eingeschränkt, so dass sogar Klasse-C-Netzwerke in diverse Subnetze aufgeteilt werden können. Somit können Sie zum Beispiel zwei Bits des Hostteils für die Netzmaske verwenden, um so bis zu vier Subnetze mit jeweils bis zu 64 Hosts zu erhalten.1

Erzeugen von Host- und Netzwerkdateien

Nachdem Sie Ihr Netz in Subnetze unterteilt haben, sollten Sie eine einfache Art der Namensauflösung konfigurieren, die auf der Datei /etc/hosts basiert. Falls Sie nicht vorhaben, DNS oder NIS zu benutzen, müssen Sie sämtliche Maschinen in Ihrem Netz in diese Datei eintragen.

Aber auch, wenn Sie im normalen Betrieb DNS einsetzen, ist es empfehlenswert, einen Teil der Rechnernamen in /etc/hosts zu haben. Oft möchte man nämlich auch während des Bootens, wenn noch keine Netzwerkschnittstellen aktiv sind, symbolische Namen verwenden, beispielsweise in den rc-Skripten. Sollten Sie einmal gezwungen sein, IP-Adressen zu ändern, müssen Sie nur noch die aktualisierte hosts-Datei auf allen Rechnern installieren und die Systeme neu starten, anstatt sämtliche rc-Dateien von Hand zu bearbeiten. Normalerweise werden Sie alle lokalen Hostnamen und Adressen in hosts eintragen, zusammen mit den verwendeten Gateways und NIS-Servern.

Sie müssen sicherstellen, dass Ihr Resolver die Informationen aus der hosts-Datei nur während der anfänglichen Testphase verwendet. Beispieldateien, die mit Ihrer DNS-Software geliefert werden, könnten eigenartige Ergebnisse liefern. Damit alle Anwendungen die Datei /etc/hosts ausschließlich dann benutzen, wenn sie die IP-Adresse eines Hosts nachschauen, müssen Sie die Datei /etc/host.conf bearbeiten. Kommentieren Sie alle Zeilen aus, die mit dem Schlüsselwort order beginnen, indem Sie diesen Zeilen ein Hash-Zeichen voranstellen, und fügen Sie folgende Zeile ein:

order hosts

Die Konfiguration der Resolver-Bibliothek wird in Kapitel 6 vorgestellt.

Die hosts-Datei enthält einen Eintrag pro Zeile. Dieser Eintrag besteht aus einer IP-Adresse, einem Hostnamen und einer optionalen Liste von Aliasen für den Hostnamen. Die Felder werden durch Leer- oder Tabulatorzeichen voneinander getrennt; das Adressfeld muss in der ersten Spalte beginnen. Alles, was hinter einem Hash-Zeichen (#) steht, wird als Kommentar betrachtet und ignoriert.

Hostnamen können entweder als voll qualifizierte Namen vorliegen oder sich relativ zur lokalen Domain verhalten. Für vale würden Sie normalerweise sowohl den voll qualifizierten Namen vale.vbrew.com als auch vale selbst in die hosts-Datei eintragen, so dass der Host unter seinem offiziellen Namen und unter dem kürzeren lokalen Namen bekannt wäre.

Hier ein Beispiel dafür, wie eine hosts-Datei der virtuellen Brauerei aussehen könnte. Es sind zwei spezielle Namen enthalten, nämlich vlager-if1 und vlager-if2, die die Adressen für die beiden Schnittstellen von vlager angeben:

#
# Host-Datei fuer die virtuelle Brauerei und die virtuelle Kellerei
#
# IP FQDN Aliase
#
127.0.0.1 localhost
#
172.16.1.1 vlager.vbrew.com vlager vlager-if1
172.16.1.2 vstout.vbrew.com vstout
172.16.1.3 vale.vbrew.com vale
#
172.16.2.1 vlager-if2
172.16.2.2 vbeaujolais.vbrew.com vbeaujolais
172.16.2.3 vbardolino.vbrew.com vbardolino
172.16.2.4 vchianti.vbrew.com vchianti

Genau wie für IP-Adressen möchte man manchmal auch symbolische Namen für Netzwerknummern verwenden. Aus diesem Grund gibt es parallel zu hosts die Datei /etc/networks, um Netzwerknamen auf Netzwerknummern abzubilden und umgekehrt. In der virtuellen Brauerei würden wir etwa folgende networks-Datei installieren:2

# /etc/networks fuer die virtuelle Brauerei
brew-net 172.16.1.0
wine-net 172.16.2.0

Schnittstellenkonfiguration für IP

Nachdem Sie Ihre Hardware eingerichtet haben, wie in Kapitel 3 beschrieben, müssen Sie diese Geräte der Netzwerksoftware des Kernels bekannt machen. Es gibt einige Befehle zum Konfigurieren der Netzwerkschnittstellen und Initialisieren der Routing-Tabelle. Diese Aufgaben werden üblicherweise beim Booten des Systems vom Netzwerkinitialisierungsskript erledigt. Die wichtigsten Werkzeuge für diesen Vorgang sind ifconfig (»if« steht hier für Interface) und route.

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-Datagramme über diese Schnittstelle senden und empfangen kann. Die einfachste Art, um es aufzurufen, ist:

ifconfig schnittstelle ip-adresse

Dieser Befehl weist die ip-adresse der schnittstelle zu und aktiviert sie. Alle anderen Parameter werden auf Standardwerte gesetzt. Die Netzmaske beispielsweise wird aus der Netzwerkklasse der IP-Adresse abgeleitet, etwa 255.255.0.0 für eine Klasse-B-Adresse. ifconfig wird weiter hinten in diesem Kapitel näher beschrieben.

route erlaubt es Ihnen, der Routing-Tabelle des Kernels Routen hinzuzufügen oder Routen aus ihr zu entfernen. Der Befehl kann folgendermaßen aufgerufen werden:

route [add|del] [-net|-host] ziel [schnittstelle]

Die Argumente add und del legen fest, ob die Route zu ziel hinzugefügt oder daraus entfernt werden soll. Die Argumente -net und -host teilen dem Befehl mit, ob es sich bei dem Ziel um ein Netzwerk oder einen Host handelt. Das Argument schnittstelle ist wieder optional und ermöglicht es Ihnen anzugeben, an welche Netzwerkschnittstelle die Route gerichtet werden soll - der Linux-Kernel versucht selbst ein sinnvolles Ergebnis zu ermitteln, wenn Sie hier nichts festlegen. Mit diesem Thema befassen wir uns in den folgenden Abschnitten noch ausführlicher.

Die Loopback-Schnittstelle

Die erste Schnittstelle, die aktiviert werden muss, ist die Loopback-Schnittstelle:

# ifconfig lo 127.0.0.1

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

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

Um die Konfiguration einer Schnittstelle anzuzeigen, rufen Sie ifconfig auf und übergeben lediglich den Schnittstellennamen als Argument:

$ 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

Wie Sie sehen können, wird der Loopback-Schnittstelle die Netzmaske 255.0.0.0 zugewiesen, da 127.0.0.1 eine Klasse-A-Adresse ist.

Jetzt können Sie schon fast anfangen, mit Ihrem Mini-Netzwerk herumzuspielen. Es fehlt allerdings noch ein Eintrag in der Routing-Tabelle, der IP mitteilt, dass diese Schnittstelle als Route zum Zielsystem 127.0.0.1 dient. Dazu geben Sie Folgendes ein:

# route add 127.0.0.1

Natürlich können Sie auch hier localhost anstelle der IP-Adresse verwenden, vorausgesetzt Sie haben dies in /etc/hosts eingetragen.

Als Nächstes sollten Sie sich mit dem Programm ping davon überzeugen, dass alles einwandfrei funktioniert. ping ist das netzwerktechnische Äquivalent eines Sonars. Der Befehl dient dazu, 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 aufrufen, wie hier gezeigt, sendet es fortwährend Pakete aus, bis Sie es unterbrechen. Das ^C kennzeichnet die Stelle, an der wir Strg-C gedrückt haben.

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

Wenn ping eine völlig andere Ausgabe erzeugt, als hier dargestellt, haben Sie ein echtes Problem. Prüfen Sie, ob irgendwelche Fehlermeldungen nahe legen, dass 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 kompiliert 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-Befehl vertippt. Sie müssen hier auf jeden Fall dieselbe Adresse angeben wie bei ifconfig.

Die bisher beschriebenen Schritte reichen aus, um Netzwerkanwendungen auf einem allein stehenden Rechner zu benutzen. Nachdem Sie die oben angegebenen Zeilen in Ihr Netzwerk-Initialisierungsskript eingetragen und sichergestellt haben, dass es beim Systemstart ausgeführt wird, können Sie Ihre Maschine neu booten und einige Anwendungen ausprobieren. Zum Beispiel sollte ssh localhost eine ssh-Verbindung zu Ihrem Host aufbauen und Ihnen den SSH-Login-Prompt geben.

Die Loopback-Schnittstelle ist allerdings nicht nur als Beispiel in Netzwerkbüchern oder als Testumgebung während der Software-Entwicklung nützlich, sondern wird auch von einigen Programmen während des normalen Betriebs benutzt.3 Deshalb müssen Sie sie 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 der Schnittstelle mitzuteilen, sieht der ifconfig-Aufruf so aus:

# ifconfig eth0 vstout netmask 255.255.255.0

Das 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 (das Bcast-Feld) 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 normalerweise auch benutzen. Sie können aber über spezielle Optionen auch mit anderen Werten besetzt werden; diese Optionen beschreiben wir später in diesem Kapitel.

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, woher route eigentlich wissen soll, welche Schnittstelle es benutzen kann. Der Trick ist aber relativ simpel: Der Kernel prüft alle bisher konfigurierten Schnittstellen und vergleicht das Zielnetz (in unserem Fall 172.16.1.0) mit der Netznummer der Schnittstellenadresse, d. h. dem bitweisen UND der Schnittstellenadresse und der Netzmaske. Die einzige Schnittstelle, bei der diese beiden Werte übereinstimmen, ist eth0.

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

# route add brew-net

Nachdem Sie die grundlegenden Konfigurationsschritte hinter sich gebracht haben, sollten Sie überprüfen, ob Ihre Ethernet-Schnittstelle tatsächlich fröhlich vor sich hinarbeitet. Wählen Sie irgendeine Maschine in 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 irgendetwas schief gelaufen. Ungewöhnlich hoher Datenverlust weist auf ein Hardwareproblem hin, wie beispielsweise ungenügende oder fehlende Terminierung. Wenn überhaupt keine Pakete zurückkommen, sollten Sie die Schnittstellenkonfiguration mit netstat überprüfen. Dieses Programm wird später in diesem Kapitel beschrieben. Die Paketstatistiken, die ifconfig ausgibt, sagen Ihnen, ob überhaupt Pakete über die Schnittstelle übertragen werden. Wenn Sie außerdem Zugang zum Zielrechner haben, sollten Sie auch auf diesem die Paketstatistiken der Maschine prüfen. So können Sie genau feststellen, wo die Pakete verloren gegangen sind. Zusätzlich sollten Sie auf beiden Maschinen mit route die Routing-Informationen überprüfen, um festzustellen, ob beide Maschinen über den richtigen Route-Eintrag verfügen. Wenn Sie route ohne weitere Parameter aufrufen, gibt es die Routing-Tabellen des Kernels aus (die Option -n sorgt dafür, dass es Adressen in Dotted-Quad-Notation 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 dieser Felder wird weiter unten erläutert. Die Spalte Flags enthält eine Liste der Flags, die für die einzelnen Schnittstellen gesetzt sind. U ist für aktive Schnittstellen immer gesetzt, H besagt, dass die Zieladresse einen einzelnen Host bezeichnet. Falls das Flag H für eine Route gesetzt ist, die Sie als Netzwerkroute vorgesehen haben, müssen Sie den Befehl route zusammen mit der Option -net erneut ausführen. Um festzustellen, ob eine von Ihnen eingegebene Route überhaupt benutzt wird, sehen Sie nach, ob sich der Wert im Use-Feld in der vorletzten Spalte zwischen zwei Aufrufen von ping erhöht.

Routing durch ein Gateway

Im vorigen Abschnitt haben wir uns nur damit beschäftigt, wie Sie eine Maschine in einem isolierten Ethernet einrichten. Der Regelfall ist allerdings, dass mehrere Netzwerke 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.

Die Ethernets der virtuellen Brauerei und der virtuellen Kellerei sind durch solch ein Gateway miteinander verbunden, nämlich durch vlager. Angenommen, vlager sei bereits konfiguriert, dann müssen wir auf Maschinen wie vstout nur noch eine weitere Route eintragen, die angibt, dass alle Maschinen im Netzwerk der Kellerei über vlager erreichbar sind. Der entsprechende Aufruf von route sieht so aus; das Schlüsselwort gw gibt an, dass das nächste Argument ein Gateway bezeichnet:

# route add wine-net gw vlager

Natürlich muss jedes System im Kellerei-Netzwerk, zu dem Sie Verbindung aufnehmen wollen, einen analogen Routing-Eintrag für das Brauerei-Netzwerk haben. Ansonsten könnten Sie nur Daten vom Brauerei-Netzwerk an das Kellerei-Netzwerk senden, die Rechner im Kellerei-Netzwerk 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, dass vlager außerdem eine Verbindung ins Internet hat, beispielsweise durch einen SLIP-Link. Dann wäre es natürlich wünschenswert, dass Pakete für beliebige Zieladressen, die nicht im Brauerei-Netzwerk liegen, an vlager weitergereicht werden. Das können Sie erreichen, indem Sie vlager zum Standard-Gateway für vstout machen:

# route add default gw vlager

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

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, dass 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 dem Rechner vlager, der 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 im jeweiligen Subnetz zuzuweisen - das war's.

Dabei ist es recht nützlich, in die hosts-Datei zusätzliche Informationen über die beiden Schnittstellen einzutragen, damit wir auch für sie praktische Namen haben:

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

Die Befehle zum Einrichten der beiden Schnittstellen lauten dementsprechend so:

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

Falls diese Befehlsfolge nicht funktioniert, dann überprüfen Sie, ob Ihr Kernel überhaupt mit Unterstützung für IP-Forwarding kompiliert wurde. Das ist dann der Fall, wenn die erste Zahl auf 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 so genannte Punkt-zu-Punkt-Verbindung her, d. h., es sind nur zwei Hosts beteiligt. 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 ermöglicht sehr kostengünstige und portable Verbindungen zwischen Computern. 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, muss die Schnittstelle plip1 mit den folgenden Befehlen konfiguriert werden:4

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

Der erste Befehl richtet die Schnittstelle ein und teilt dem Kernel mit, dass es sich dabei um eine Punkt-zu-Punkt-Verbindung handelt, deren anderes Ende die Adresse vlager hat. Der zweite Befehl installiert die Standardroute 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

Beachten Sie, dass die Schnittstelle plip1 auf vlager in diesem Fall keine eigene IP-Adresse haben muss, sondern Sie ihr auch die Adresse 172.16.1.1 zuweisen können. Punkt-zu-Punkt-Netzwerke unterstützen Netzwerke nicht direkt, so dass die Schnittstellen auf den unterstützten Netzwerken keine eigenen Adressen benötigen. Um hier mögliche Konfusionen zu vermeiden, greift der Kernel auf die Schnittstelleninformationen in der Routing-Tabelle zurück.5 Jetzt haben wir das Routing vom Laptop zum Netzwerk der Brauerei eingerichtet. Nun fehlt noch die Möglichkeit, vlite von jedem Rechner der 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, um mit solchen temporären Routen zurechtzukommen, ist dynamisches Routing. Das können Sie beispielsweise mit gated, einem Routing-Dämon, verwirklichen, den Sie auf allen Hosts im Netzwerk installieren müssten, um die Routing-Informationen dynamisch zu verteilen. Die einfachste Variante überhaupt ist in einem solchen Fall Proxy-ARP (Address Resolution Protocol). Bei dieser Methode beantwortet vlager alle ARP-Anfragen nach vlite mit seiner eigenen Ethernet-Adresse. Alle Pakete für vlite landen auf vlager, der sie dann an den Laptop weiterleitet. Wir werden uns im Abschnitt »Die ARP-Tabellen überprüfen« näher mit Proxy-ARP befassen.

Aktuelle Versionen von net-tools enthalten ein Werkzeug namens plipconfig. Dieses Programm erlaubt es Ihnen, eine Reihe besonderer Zeitparameter für PLIP einzustellen. Den Interrupt, der für den Druckerport verwendet werden soll, können Sie mit dem Befehl ifconfig definieren.

Die PPP-Schnittstelle

Obwohl PPP-Verbindungen ebenso wie PLIP nur einfache Punkt-zu-Punkt-Verbindungen darstellen, ist deren Konfiguration wesentlich komplizierter. Wir werden PPP in Kapitel 6 ausführlicher behandeln.

IP-Alias

Der Linux-Kernel unterstützt eine Eigenschaft, die die alte Dummy-Schnittstelle vollständig ersetzt und andere nützliche Funktionen bietet. IP-Alias gestattet es Ihnen, einem physischen Gerät mehrere IP-Adressen zuzuordnen. Sie könnten Ihren Host so konfigurieren, dass er wie viele unterschiedliche Hosts aussieht, die jeweils ihre eigene IP-Adresse haben. Diese Konfiguration wird manchmal als Virtual Hosting bezeichnet, obwohl dieser Begriff genau genommen auch für eine Reihe anderer Verfahren verwendet wird.6

Um für eine Schnittstelle einen Alias zu konfigurieren, müssen Sie zunächst sichergehen, dass Ihr Kernel IP-Alias unterstützt (schauen Sie nach, ob die Datei /proc/net/ip_alias existiert; falls nicht, müssen Sie Ihren Kernel neu übersetzen). Die Konfiguration eines IP-Alias läuft im Grunde genauso ab wie die Konfiguration eines echten Netzwerkgeräts. Sie benutzen dabei einen besonderen Namen, um anzuzeigen, dass Sie einen Alias wollen. Zum Beispiel:

# ifconfig eth0:0 172.16.1.1

Dieser Befehl erzeugt einen Alias für die Schnittstelle eth0 mit der Adresse 172.16.1.1. Sie greifen auf einen IP-Alias zu, indem Sie :n an den Namen der tatsächlichen Netzwerkschnittstelle anhängen, wobei »n« eine ganze Zahl ist. In unserem Beispiel legen wir einen Alias für die Schnittstelle eth0 an und weisen ihm die Nummer null zu. Auf diese Weise kann eine einzige physische Schnittstelle viele Aliase unterstützen.

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

Alles über ifconfig

ifconfig kennt neben den bisher vorgestellten noch eine ganze Reihe weiterer Optionen, die wir nun im Einzelnen besprechen werden. Normalerweise wird der Befehl so aufgerufen:

ifconfig schnittstelle [adresse [parameter]]

schnittstelle ist der Name der Schnittstelle und adresse bezeichnet die IP-Adresse, die der Schnittstelle zugewiesen werden soll. Dabei kann es sich entweder um eine IP-Adresse in Dotted-Quad-Notation handeln oder um einen Namen, den ifconfig in /etc/hosts nachschaut.

Wenn ifconfig nur mit dem Schnittstellennamen aufgerufen wird, gibt es die Konfiguration der Schnittstelle aus. Wird es ganz ohne Parameter aufgerufen, zeigt es alle bisher konfigurierten Schnittstellen an; die Option -a erzwingt zusätzlich die Anzeige der inaktiven Schnittstellen. Ein Aufruf für die Ethernet-Schnittstelle eth0 könnte beispielsweise so aussehen:

# ifconfig eth0
eth0 Link encap 10Mbps 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 0
RX packets 3136 errors 217 dropped 7 overrun 26
TX packets 1752 errors 25 dropped 0 overrun 0

Die Felder MTU und Metric zeigen die aktuellen Werte für die MTU und die Metrik der Schnittstelle an. Die Metrik wird von einigen Betriebssystemen verwendet, um die Kosten einer Route zu berechnen.

Die Zeilen RX und TX zeigen an, wie viele Pakete empfangen bzw. gesendet wurden, wie viele Fehler dabei auftraten, wie viele Pakete (beispielsweise aufgrund von Speichermangel) verworfen wurden und wie viele wegen eines Überlaufs verloren gingen. Ein Überlauf beim Empfänger (overrun) tritt dann auf, wenn Pakete schneller hereinkommen, als der Kernel die Interrupts bedienen kann. Die von ifconfig angezeigten Flags entsprechen mehr oder weniger den Namen der Kommandozeilenoptionen und werden später behandelt.

Die folgende Liste zeigt die Parameter, die ifconfig versteht, zusammen mit den zugehörigen Flag-Namen. Optionen, die eine Eigenschaft der Schnittstelle einfach aktivieren, können mit vorangestelltem Minuszeichen (-) auch benutzt werden, um die Eigenschaft wieder auszuschalten.

up
Diese Option aktiviert eine Schnittstelle für die IP-Schicht. Sie wird impliziert, wenn eine adresse auf der Kommandozeile angegeben wird. Sie kann auch dazu benutzt werden, um eine Schnittstelle zu reaktivieren, die mit der Option down temporär deaktiviert wurde.
Diese Option entspricht den Flags UP und RUNNING.
down
Diese Option markiert eine Schnittstelle als inaktiv, d. h. als unzugänglich für die IP-Schicht. Dadurch wird jeglicher IP-Transport durch die Schnittstelle unterbunden. Beachten Sie, dass dadurch automatisch alle Routing-Einträge gelöscht werden, die diese Schnittstelle verwenden.
netmask maske
Diese Option weist der Schnittstelle eine Subnetzmaske zu. Sie kann entweder als eine 32-Bit-Hexadezimalzahl (mit vorangestelltem 0x) oder in Dezimaldarstellung (zum Beispiel 255.255.255.0) angegeben werden. Während diese als »Dotted-Quad« bezeichnete Notation häufiger benutzt wird, ist die hexadezimale Darstellung oft einfacher zu handhaben. Netzmasken sind grundsätzlich binär, und es ist einfacher, eine Binär-zu-Hexadezimal- als eine Binär-zu-Dezimal-Konvertierung durchzuführen.
pointopoint adresse
Diese Option wird für Punkt-zu-Punkt-Verbindungen benutzt, die nur zwei Hosts miteinander verbinden. Sie wird beispielsweise für die Konfiguration von SLIP- oder PLIP-Schnittstellen benötigt. Wenn eine Punkt-zu-Punkt-Adresse gesetzt wurde, zeigt ifconfig das POINTOPOINT-Flag an.
broadcast adresse
Die Broadcast-Adresse wird normalerweise aus der Netzwerknummer gebildet, indem alle Bits des Hostteils auf eins gesetzt werden. Manche IP-Implementierungen (zum Beispiel Systeme, die von BSD 4.2 abstammen) verwenden dagegen ein anderes Schema, in dem alle Bits des Hostteils auf null gesetzt sind. Die Option broadcast dient dazu, Ihre Konfiguration an eine solch seltsame Umgebung anzupassen. Wenn eine Broadcast-Adresse gesetzt wurde, zeigt ifconfig das BROADCAST-Flag an.
irq
Mit dieser Option definieren Sie die Interrupt-Leitung, die von bestimmten Schnittstellen benutzt werden soll. Das ist insbesondere für PLIP nützlich, aber auch für bestimmte Ethernet-Karten.
metric wert
Mit dieser Option können Sie dem Routing-Tabellen-Eintrag für Schnittstellen eine Metrik zuordnen. Dieser Metrik-Wert wird beispielsweise vom Routing Information Protocol (RIP) berücksichtigt, wenn es Routing-Tabellen für Ihr Netzwerk erstellt.7 Die Standard-Metrik, die ifconfig einer Schnittstelle zuordnet, ist null. Wenn Sie keinen RIP-Dämon betreiben, benötigen Sie diese Option überhaupt nicht; aber selbst wenn Sie das Routing über RIP regeln, müssen Sie den Metrik-Wert vermutlich nicht ändern.
mtu bytes
Damit legen Sie die Maximum Transmission Unit (MTU), d. h. die maximale Anzahl Bytes fest, die die Schnittstelle in einer Transaktion verarbeiten kann. Für Ethernet-Netzwerke liegt der Vorgabewert bei 1.500 (die größte zulässige Größe für ein Ethernet-Paket), für SLIP-Schnittstellen beträgt er 296. (Für die MTU von SLIP-Verbindungen gibt es keine Obergrenze; dieser Wert stellt einen guten Kompromiss dar.)
arp
Diese Option kann nur für Broadcast-Netzwerke wie Ethernet oder Ham-Radio verwendet werden. Sie ermöglicht die Benutzung von ARP zum Erkennen der physischen Adressen der Hosts, die an das Netzwerk angeschlossen sind. Bei Broadcast-Netzwerken ist die Option standardmäßig eingeschaltet. Falls ARP deaktiviert ist, zeigt ifconfig das NOARP-Flag.
-arp
Diese Option deaktiviert die Benutzung von ARP an dieser Schnittstelle.
promisc
Diese Option versetzt die Schnittstelle in den so genannten Promiscuous-Modus. In Broadcast-Netzwerken hat das zur Folge, dass die Schnittstelle alle Pakete empfängt, unabhängig davon, ob sie für diesen Host gedacht sind oder nicht. Dadurch kann man den Netzwerkverkehr mit Hilfe von Paketfiltern analysieren (diese Methode wird als Ethernet-Snooping bezeichnet). Normalerweise handelt es sich dabei um eine gute Technik zum Aufspüren von Netzwerkproblemen, die ansonsten schwer zu erkennen sind. Werkzeuge wie tcpdump verwenden diesen Ansatz.
Andererseits erlaubt diese Option Angreifern, schlimme Dinge zu tun, etwa den Verkehr in Ihrem Netzwerk nach Kennwörtern zu durchschnüffeln. Sie können sich davor schützen, indem Sie einfach allen verbieten, ihre Computer an Ihr Ethernet anzuschließen. Außerdem könnten Sie sichere Authentifizierungsprotokolle verwenden wie Kerberos oder das Secure-Shell-Login-Paket.8 Diese Option entspricht dem PROMISC-Flag.
-promisc
Schaltet den Promiscuous-Modus aus.
allmulti
Multicast-Adressen sind wie Ethernet-Broadcast-Adressen, mit der Einschränkung, dass sie nicht automatisch jeden möglichen Adressaten berücksichtigen, sondern nur solche, die zum Empfang vorgesehen (programmiert) sind. Sie eignen sich besonders für Anwendungen wie Ethernet-basierte Videokonferenzen oder Audioübertragungen über das Netzwerk, die nur an Interessenten gerichtet sind. Multicast-Adressierung wird von den meisten (aber nicht allen) Ethernet-Treibern unterstützt. Ist diese Option eingeschaltet, empfängt und sendet die Schnittstelle Multicast-Pakete. Diese Option entspricht dem ALLMULTI-Flag.
-allmulti
Schaltet Multicast-Adressen aus.

Der Befehl netstat

netstat ist ein nützliches Werkzeug, mit dem Sie Ihre Netzwerk-Konfiguration und die Aktivität Ihres Netzwerks überprüfen können. Es handelt sich eher um eine ganze Sammlung von Werkzeugen. Wir werden jede seiner Funktionen in den folgenden Abschnitten besprechen.

Anzeigen der Routing-Tabelle

Wenn Sie netstat mit dem Flag -r aufrufen, gibt es die Routing-Tabelle des Kernels aus, ähnlich wie wir es oben bei route gesehen haben. Auf vstout erzeugt es folgende Ausgabe:

# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
127.0.0.1 * 255.255.255.255 UH 0 0 0 lo
172.16.1.0 * 255.255.255.0 U 0 0 0 eth0
172.16.2.0 172.16.1.1 255.255.255.0 UG 0 0 0 eth0

Die Option -n sorgt dafür, dass netstat die Adressen in dezimaler Notation und nicht in Form symbolischer Namen (Host- und Netzwerknamen) ausgibt. Das ist dann nützlich, wenn Sie Adressanfragen über das Netzwerk verhindern wollen (beim DNS- oder NIS-Server).

Die erste Spalte der netstat-Ausgabe zeigt das Ziel der Route an. Die zweite Spalte gibt das Gateway an, auf das der Routing-Eintrag zeigt. Wird kein Gateway verwendet, wird stattdessen ein Sternchen ausgegeben. Die dritte Spalte gibt Auskunft über die »Allgemeinheit« der Route, d. h. deren Netzmaske. Wenn der Kernel eine IP-Adresse erhält, für die er eine angemessene Route finden soll, dann durchsucht er alle Einträge in der Routing-Tabelle und führt eine bitweise UND-Verknüpfung mit der Adresse und der Genmask durch, bevor er sie mit dem Ziel der Route vergleicht. Der beste Treffer wird verwendet.

Die vierte Spalte zeigt die folgenden Flags, die die Route beschreiben:

G
Die Route geht durch ein Gateway.
U
Die zu verwendende Schnittstelle ist aktiv.
H
Über die Route kann nur ein einziger Host erreicht werden. Das gilt beispielsweise für den Loopback-Eintrag 127.0.0.1.
D
Diese Route wird dynamisch erzeugt. Dieses Flag ist gesetzt, wenn ein Tabelleneintrag von einem Routing-Dämon wie gated oder von einer ICMP-Redirect-Nachricht erzeugt wurde (siehe 1
M
Dieses Flag wird gesetzt, wenn der Tabelleneintrag durch eine ICMP-Redirect-Nachricht modifiziert wurde.
!
Alle Datagramme werden verworfen.

Die nächsten drei Spalten geben Auskunft über die maximale Segmentgröße (MSS, Maximum Segment Size), das Fenster sowie über die Anfangsumlaufzeit (irtt, initial round trip time), die auf die über diese Route etablierten TCP-Verbindungen anzuwenden sind. Die MSS bezeichnet den Umfang des größten IP-Pakets, das der Kernel über diese Route verschickt. Mit dem Fenster ist die maximale Datenmenge gemeint, die von einem Remote-Host auf einmal empfangen werden kann. Das TCP-Protokoll stellt sicher, dass die Daten zwischen den Hosts zuverlässig übertragen werden. Falls Datenpakete unterwegs verloren gehen, wird die Übertragung dieser fehlenden Pakete automatisch wiederholt. Das TCP-Protokoll ermittelt am Anfang einer Übertragung, wie lange das gesendete Datenpaket zum Remote-Host braucht, und ermittelt aus der Zeit bis zur Rückantwort einen Wert, der für die weitere Datenübertragung als Maß dafür dient, ob ein IP-Paket gegebenenfalls erneut gesendet werden muss. Diese Zeit wird als Round Trip Time bezeichnet. Der Vorgabewert wird vom TCP-Protokoll beim erstmaligen Verbindungsaufbau benutzt. Für die meisten Netzwerktypen ist der Standardwert akzeptabel, für einige langsame Netzwerke, besonders Amateur-Packet-Radio-Netzwerke, ist die Zeit aber eindeutig zu kurz, so dass es hier zu unnötig häufigen Wiederholungen kommt. Der irtt-Wert kann mit dem route-Befehl eingestellt werden. Nullwerte in diesen Spalten bedeuten, dass Standardwerte benutzt werden.

Schließlich gibt das letzte Feld die Netzwerkschnittstelle an, die die Route benutzt.

Anzeige der Schnittstellenstatistiken

Wenn Sie netstat mit dem Flag -i aufrufen, gibt es die Statistiken für die gerade aktiven Netzwerkschnittstellen aus. Geben Sie außerdem das Flag -a mit an, werden alle im Kernel vorhandenen Schnittstellen ausgegeben, nicht nur die konfigurierten. Auf vstout gibt netstat in etwa Folgendes aus:

# netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flags
lo 0 0 3185 0 0 0 3185 0 0 0 BLRU
eth0 1500 0 972633 17 20 120 628711 217 0 0 BRU

Die Spalten MTU und Met geben die aktuelle MTU und Metrik der Schnittstelle an. Die mit RX bzw. TX überschriebenen Spalten geben an, wie viele Pakete fehlerfrei empfangen bzw. gesendet wurden (RX-OK/TX-OK), wie viele beschädigt waren (RX-ERR/TX-ERR), wie viele verworfen werden mussten (RX-DRP/TX-DRP) und wie viele aufgrund eines Overruns verloren gingen (RX-OVR/TX-OVR).

Die letzte Spalte zeigt wieder die Flags an, die für die Schnittstelle gesetzt sind. Das sind einbuchstabige Versionen der langen Flag-Namen, die ifconfig ausgibt:

B
Eine Broadcast-Adresse wurde gesetzt.
L
Diese Schnittstelle ist ein Loopback-Gerät.
M
Alle Pakete werden empfangen (Promiscuous-Modus).
O
ARP ist an dieser Schnittstelle deaktiviert.
P
Hier handelt es sich um eine Punkt-zu-Punkt-Verbindung.
R
Die Schnittstelle läuft.
U
Die Schnittstelle ist aktiv.

Anzeigen der Verbindungen

netstat bietet eine Reihe von Optionen, mit denen Sie aktive und passive Sockets auflisten können. Die Argumente -t, -u, -w und -x zeigen aktive TCP-, UDP-, RAW- und Unix-Sockets. Wenn Sie zusätzlich -a angeben, sehen Sie außerdem die Sockets, die gerade auf eine Verbindung warten. Auf diese Weise erhalten Sie eine Liste aller Server, die derzeit auf Ihrem System laufen.

Ein Aufruf von netstat -ta auf vlager ergibt Folgendes:

$ netstat -ta
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:mysql *:* LISTEN
tcp 0 0 localhost:webcache *:* LISTEN
tcp 0 0 *:www *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 *:https *:* LISTEN
tcp 0 0 ::ffff:1.2.3.4:ssh ::ffff:4.5.6.:49152 ESTABLISHED
tcp 0 652 ::ffff:1.2.3.4:ssh ::ffff:4.5.6.:31996 ESTABLISHED

Man sieht, dass die meisten Server einfach auf eine eingehende Verbindung warten. Die vierte Zeile zeigt allerdings eine SMTP-Verbindung von vstout, und die sechste Zeile besagt, dass eine ausgehende telnet-Verbindung zu vbardolino besteht.9

Wenn Sie nur die Option -a benutzen, erhalten Sie eine Liste aller Sockets aus allen Familien.

Testen der Konnektivität mit traceroute

Das Programm traceroute bietet eine sehr einfache Möglichkeit, um die Konnektivität zwischen Hosts zu testen und die Routing-Pfade zu überprüfen. traceroute verwendet UDP-Datagramme (oder ICMP, falls die Option -I angegeben wird), um den Pfad zu ermitteln, den Pakete über das Netzwerk nehmen. Der Befehl kann folgendermaßen aufgerufen werden:

# traceroute -n www.oreilly.com
traceroute to www.oreilly.com (208.201.239.37), 30 hops max, 40 byte packets
1 22.44.55.23 187.714 ms 178.548 ms 177.132 ms
2 206.171.134.130 186.730 ms 168.750 ms 150.769 ms
3 216.102.176.193 168.499 ms 209.232.130.82 194.629 ms 209.232.130.28 185.999 ms
4 151.164.243.121 212.852 ms 230.590 ms 132.040 ms
5 151.164.240.134 80.049 ms 71.191 ms 53.450 ms
6 151.164.40.150 45.320 ms 44.579 ms 176.651 ms
7 151.164.191.82 168.499 ms 194.864 ms 149.789 ms
8 151.164.248.90 80.065 ms 71.185 ms 88.922 ms
9 69.22.143.178 228.883 ms 222.204 ms 179.093 ms
10 69.22.143.6 131.573 ms 89.394 ms 71.180 ms
.
.

Die ARP-Tabellen überprüfen

Manchmal kann es aufschlussreich sein, einen Blick auf die ARP-Tabellen des Kernels zu werfen oder sie sogar zu verändern, beispielsweise wenn Sie den Verdacht haben, dass eine doppelt vergebene IP-Adresse der Grund für Netzwerkprobleme ist. Das Programm arp ist für derartige Probleme wie geschaffen. Seine Kommandozeilenoptionen sind:

arp [-v] [-t hwtype] -a [hostname]
arp [-v] [-t hwtype] -s hostname hwaddr
arp [-v] -d hostname [hostname]

Alle hostname-Argumente können entweder symbolische Hostnamen oder IP-Adressen in Dotted-Quad-Notation sein.

Der erste Aufruf gibt den ARP-Eintrag für die angegebene IP-Adresse bzw. den Hostnamen aus. Falls hostname nicht angegeben wird, werden Informationen über alle bekannten Hosts ausgegeben. Zum Beispiel ergibt die Ausgabe von arp auf vlager etwa Folgendes:

# arp -e
Address HWtype HWaddress Flags Mask Iface
172.16.0.1 (incomplete) eth0
172.16.0.155 ether 00:11:2F:38:4E:4F C eth0
172.16.0.69 ether 00:90:4B:F1:3A:B5 C eth0
vale.vbrew.com ether 00:10:67:30:C5:7B C eth1
172.16.0.207 ether 00:0B:DB:1A:C7:E2 C eth0

Dies zeigt die Ethernet-Adressen verschiedener Hosts.

Die Option -s dient dazu, die Hardware-Adresse von hostname manuell in die ARP-Tabelle einzutragen. Das Argument hwaddr spezifiziert die Hardware-Adresse, die normalerweise als Ethernet-Adresse aus sechs Byte in hexadezimaler Notation, getrennt durch Doppelpunkte, angegeben ist. Sie können solche Adressen auch bei anderen Hardwaretypen verwenden, wenn Sie zusätzlich die Option -t angeben.

Aus irgendwelchen Gründen kann es passieren, dass ARP-Anfragen an einen entfernten Host nicht funktionieren - sei es, weil dessen ARP-Treiber fehlerhaft ist oder ein zweiter Host im Netz sich irrtümlich mit dessen IP-Adresse identifiziert. Dieses Problem zwingt Sie dazu, die korrekte IP-Adresse manuell in die ARP-Tabelle einzutragen. Die Festverdrahtung von Hardware-Adressen im ARP-Cache ist auch eine (wenn auch drastische) Maßnahme, um Maschinen aus Ihrem Ethernet daran zu hindern, sich als jemand anderes auszugeben.

Wenn Sie arp mit der Option -d aufrufen, entfernt es alle Einträge für den angegebenen Host. Es kann dazu benutzt werden, um die Schnittstelle anzuweisen, eine bereits angeforderte Hardware-Adresse einer IP-Adresse nochmals anzufordern, und ist besonders dann nützlich, wenn ein fehlerhaft konfiguriertes System falsche ARP-Informationen sendet (natürlich muss zuerst das fehlerhafte System erneut konfiguriert werden).

Die Option -s kann aber auch für Proxy-ARP benutzt werden. Das ist eine spezielle Technik, bei der z.B. ein Host namens gate als Gateway zu einem anderen Host namens fnord fungiert, indem er vorgibt, dass beide Adressen auf denselben Host, nämlich gate verweisen. Das erreicht es durch Herausgabe eines ARP-Eintrags für fnord, der auf seine eigene Ethernet-Schnittstelle zeigt. Wenn nun ein Host eine ARP-Anfrage für fnord sendet, liefert gate eine Antwort, die seine eigene Ethernet-Adresse enthält. Der anfragende Host sendet dann alle IP-Pakete an gate, der sie seinerseits pflichtbewusst an fnord weiterleitet.

Derartige Verrenkungen können durchaus notwendig sein, z. B. wenn Sie fnord von einer DOS-Maschine mit einer gestörten TCP-Implementierung erreichen wollen, die mit Routing nicht besonders viel anfangen kann. Wenn Sie Proxy-ARP benutzen, hat die DOS-Maschine den Eindruck, als befände sich fnord im lokalen Subnetz, so dass sie gar nicht mehr zu wissen braucht, wie das Routing durch ein Gateway funktioniert.

Eine andere nützliche Anwendung von Proxy-ARP ist, wenn einer Ihrer Hosts nur temporär als Gateway zu einem anderen Host fungiert, z. B. über eine Wählverbindung. Nehmen wir den Laptop vlite aus unserem letzten Beispiel. Er war von Zeit zu Zeit über eine PLIP-Verbindung mit vlager verbunden. Diese Anwendung funktioniert natürlich nur dann, wenn sich die Adresse des Hosts, dem Sie Proxy-ARP zur Verfügung stellen wollen, im gleichen Subnetz wie Ihr Gateway befindet. vstout könnte somit jeden Host im Subnetz der Brauerei (172.16.1.0) mit Proxy-ARP versorgen, aber nicht die Hosts im Subnetz der Kellerei (172.16.2.0).

Um Proxy-ARP für fnord zur Verfügung zu stellen, lautet der korrekte Aufruf folgendermaßen (die angegebene Ethernet-Adresse gehört natürlich zu gate):

# arp -s fnord 00:00:c0:a1:42:e0 pub

Entfernt wird der Proxy-ARP-Eintrag durch:

# arp -d fnord

Fussnoten

1Die erste Nummer jedes Subnetzes ist die Subnetzadresse, während die letzte Nummer jedes Subnetzes für die Broadcast-Adresse reserviert wird. Daher sind es eigentlich nur 62 Hosts pro Subnetz.
2Beachten Sie, dass die Namen in networks nicht mit den Hostnamen in hosts kollidieren dürfen, da manche Programme sonst eigenartige Ergebnisse produzieren könnten.
3Zum Beispiel verwenden alle RPC-basierten Programme die Loopback-Schnittstelle, um sich während des Systemstarts beim portmapper-Dämon zu registrieren. Zu diesen Anwendungen gehören NIS und NFS.
4Die Schreibweise pointopoint ist wirklich kein Tippfehler.
5Vorsichtshalber sollten Sie allerdings Ihren PLIP-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, dass Ihre Netzwerkroute statt auf das Ethernet plötzlich auf die PLIP-Schnittstelle zeigt.
6Genauer gesagt ist die Anwendung von IP-Aliasing allgemein als Virtual Hosting auf Netzwerkebene bekannt. In der Welt des WWW und STMP ist dagegen Virtual Hosting auf Applikationsebene üblich. Dabei wird für jeden virtuellen Host zwar dieselbe IP-Adresse verwendet, mit jeder Anfrage auf Applikationsebene wird aber ein anderer Hostname geliefert.
7RIP wählt aus mehreren zur Verfügung stehenden Routen zu einem Zielsystem die jeweils »kürzeste« aus. Die Länge des Pfads setzt sich aus den Metrik-Werten der einzelnen Teilverbindungen zusammen. Standardmäßig hat jeder »Hop« die Länge 1, zulässig sind aber ganzzahlige Werte zwischen 1 und 15. (Eine Route mit der Länge 16 entspricht einem Wert von unendlich. Solche Routen werden als unbrauchbar betrachtet.) Der Parameter metric stellt die Kosten eines solchen Hops ein, diese werden dann über den Routing-Dämon verbreitet.
8OpenSSH können Sie von ftp://ftp.openbsd.org/unix/OpenBSD/OpenSSH/portable beziehen.
9Die Richtung einer Verbindung können Sie anhand der Portnummern erkennen. Die Portnummer, die für den aufrufenden Host gezeigt wird, ist immer ein einfacher Integer. Der Host, der aufgerufen wird, benutzt einen bekannten Port, für den netstat den symbolischen Namen (smtp) nennt. Diese symbolischen Namen stehen in /etc/services. Natürlich können Sie in vielen Anwendungen heutzutage Ihren Quellport festlegen, es gibt also keine Garantie!

TOC PREV NEXT INDEX


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

© 2005, O'Reilly Verlag GmbH & Co. KG