Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
Über die Autoren
Über dieses Buch
Linux vs. BSD
1 Der Kernel
2 Die Grundlagen aus Anwendersicht
3 Die Shell
4 Reguläre Ausdrücke
5 Tools zur Dateibearbeitung
6 Die Editoren
7 Shellskriptprogrammierung
8 Benutzerverwaltung
9 Grundlegende Verwaltungsaufgaben
10 Netzwerk-Grundlagen
11 Anwendersoftware für das Netzwerk
12 Netzwerkdienste
13 Mailserver unter Linux
14 LAMP
15 DNS-Server
16 Secure Shell
17 Die grafische Oberfläche
18 Window-Manager und Desktops
19 X11-Programme
20 Multimedia und Spiele
21 Softwareentwicklung
22 Crashkurs in C und Perl
23 Sicherheit
24 Prozesse und IPC
25 Bootstrap und Shutdown
26 Dateisysteme
27 Virtualisierung und Emulatoren
A Die Installation
B Lösungen zu den einzelnen Aufgaben
C Kommandoreferenz
D X11-InputDevices
E MBR
F Die Buch-DVDs
G Glossar
H Literatur

Download:
- ZIP, ca. 6,3 MB
Buch bestellen
Ihre Meinung?

Spacer
 <<   zurück
Linux von Johannes Plötner, Steffen Wendzel
Das distributionsunabhängige Handbuch
Buch: Linux

Linux
2., aktualisierte und erweiterte Auflage
1119 S., 39,90 Euro
Galileo Computing
ISBN 978-3-8362-1090-4
gp 10 Netzwerk-Grundlagen
  gp 10.1 Grundlegendes zu TCP/IP
    gp 10.1.1 Network-Access-Layer
    gp 10.1.2 Internet-Layer
    gp 10.1.3 Transport-Layer
    gp 10.1.4 Application-Layer
  gp 10.2 Grundlegendes Netzwerk-Setup
    gp 10.2.1 Hostname setzen
    gp 10.2.2 Netzwerkadressen für alle
    gp 10.2.3 Wireless LAN
    gp 10.2.4 DHCP
    gp 10.2.5 /etc/hosts
    gp 10.2.6 /etc/networks
    gp 10.2.7 /etc/resolv.conf
    gp 10.2.8 Nun gibt es aber ein Problem ...
    gp 10.2.9 Windows und Namensauflösung
  gp 10.3 Grundlagen des Routings
    gp 10.3.1 Routing-Administration: route
    gp 10.3.2 Router aufsetzen
  gp 10.4 Netzwerkverbindungen
    gp 10.4.1 Datenaufkommen von Schnittstellen
    gp 10.4.2 Protokollstatistiken
    gp 10.4.3 Aktive TCP-Verbindungen
    gp 10.4.4 Listen-Ports
    gp 10.4.5 ARP-Cache
    gp 10.4.6 tcpdump
  gp 10.5 Mit Linux ins Internet
    gp 10.5.1 Das Point-to-Point Protocol
    gp 10.5.2 Einwahl mit einem Modem
    gp 10.5.3 Einwahl über DSL
  gp 10.6 Zusammenfassung
  gp 10.7 Aufgaben


Galileo Computing

10.3 Grundlagen des Routings  downtop

Wir werden uns an dieser Stelle mit den Grundlagen des Routings auseinandersetzen – genauer gesagt mit den Grundlagen des statischen Routings, also des Routings, bei dem die Routing-Einträge von Hand konfiguriert werden müssen. Es gibt auch dynamisches Routing, bei dem sogenannte Routing-Protokolle verwendet werden, um diese Routing-Administration zu automatisieren. <Dabei unterscheidet man wieder zwischen verschiedenen Arten von Routing-Protokollen wie internen- und externen Protokollen, Protokollen mit Link-State- und Protokollen mit Distanzvektor-Algorithmus und so weiter. Die wichtigsten dieser Protokolle sind wohl OSPF, RIP und BGP sowie diverse kommerzielle Protokolle von Cisco.>

Doch was bedeutet Routing? Routing ist die Funktionalität, die Datenpakete in Netzwerken zu ihrem Ziel bringt. Dieses Ziel kann dabei mehrere Rechner vom eigentlichen Absender entfernt sein. Routing sorgt in diesem Fall dafür, dass das Datenpaket von einem Rechner über den nächsten (usw.) zum Ziel gesendet wird.

Routing-Tabelle

Die auf Ihrem System installierten Routen werden in einer Datenstruktur gespeichert, die sich Routing-Tabelle nennt. Sie können den Inhalt dieser Tabelle mit zwei verschiedenen Programmen abfragen: netstat und route. <Für alle technisch Interessierten: Die Routing-Tabelle befindet sich im Speicher des Kernels und wird in der Regel über eine (doppelt) verkettete Liste implementiert.> netstat liefert Ihnen generelle Informationen über den Netzwerkstatus des Systems – die Routing-Tabelle stellt nur einen kleinen Teil dieser Tabelle dar und wird mit dem Parameter -r abgefragt. Fügt man noch -n hinzu, wird die DNS-Auflösung der einzelnen Einträge unterdrückt, was die IP-Adressen anzeigt.

openbsd$ netstat -nr 
Routing tables 
 
Internet: 
Destination  Gateway          Flags Refs Use Mtu  Int 
default      192.168.0.2      UGS   0    24   –   ne3 
127/8        127.0.0.1        UGRS  0    0  33224 lo0 
127.0.0.1    127.0.0.1        UH    1    0  33224 lo0 
192.168.0/24 link#1           UC    3    0    –   ne3 
192.168.0.1  0:50:bf:11:35:a5 UHLc  0    1048 –   lo0 
192.168.0.2  0:60:8:77:1b:b2  UHLc  1    30   –   ne3 
192.168.0.5  0:0:cb:59:fd:be  UHLc  0    6    –   ne3 
224/4        127.0.0.1        URS   0    0  33224 lo0 
 
Internet6: 
Destination Gateway Flags Refs Use Mtu Interface 
::/104         ::1  UGRS  0    0   –   lo0 => 
::/96          ::1  UGRS  0    0   –   lo0 
::1            ::1  UH    12   0 33224 lo0 
::127.0.0.0/104 ::1 UGRS  0    0   –   lo0 
::224.0.0.0/100 ::1 UGRS  0    0   –   lo0 
::255.0.0.0/104 ::1 UGRS  0    0   –   lo0 
::ffff:0.0.0.0/96 ::1 \ 
                    UGRS 0   0   –   lo0 
2002::/24      ::1  UGRS  0    0   –   lo0 
2002:7f00::/24 ::1  UGRS  0    0   –   lo0 
2002:e000::/20 ::1  UGRS  0    0   –   lo0 
2002:ff00::/24 ::1  UGRS  0    0   –   lo0 
fe80::/10      ::1  UGRS  0    0   –   lo0 
fe80::\%ne3/64 link#1 UC  0    0   –   ne3 
fe80::250:bfff:fe11:35a5%ne3 0:50:bf:11:35:a5 \ 
                    UHL   0    0   –   lo0 
fe80::%lo0/64 fe80::1%lo0 \ 
                    U     0    0   –   lo0 
fe80::1%lo0 link#5 UHL   0    0   –   lo0 
fec0::/10      ::1  UGRS  0    0   –   lo0 
ff01::/32      ::1  UC    0    0   –   lo0 
ff02::%ne3/32 link#1 UC  0    0   –   ne3 
ff02::%lo0/32 ::1  UC    0    0   –   lo0 
 
Encap: 
Source Port Destination Port Proto SA(Address/Proto \ 
                                   /Type/Direction)

Listing 10.18    netstat lädt die Routing-Tabelle

Die Ausgabe von netstat ist in diesem Fall wie die Ausgabe der Routing-Tabelle durch route aufgebaut. Von System zu System kann die Ausgabe leicht variieren, die grundsätzlichen Inhalte sind jedoch gleich.

Die Ausgabe ist (was nicht immer der Fall ist) in drei (manchmal sind es nur zwei oder gar nur eine) Sektion aufgeteilt: Internet (IPv4), Internet6 (IPv6) und Encap (Tunneling). In jeder Sektion findet man die protokollspezifischen Routing-Einträge aufgelistet. Später sehen Sie, wie Sie explizit bestimmte Sektionen zur Anzeige auswählen können.

Die Form eines Routing-Eintrags (wir mussten aufgrund der Beschränkung der Seitenbreite leider eine etwas unübersichtlichere Darstellung der Routing-Tabelle wählen) teilt sich in folgende Spalten auf:

  • Destination
  • Die Zieladresse eines Datenpakets. Die Destination Default gibt das sogenannte Default-Gateway an. Dieses Gateway wird verwendet, wenn das System keine spezielle Route für ein Ziel kennt. Dann wird ein Datenpaket nämlich immer zum Default-Gateway weitergeleitet.
  • Gateway
  • Der zur Erreichung des Ziels zu verwendende Rechner im Netzwerk, der weiß, wie er die Datenpakete zum Ziel weiterleiten kann. Man bezeichnet solche routing-fähigen Systeme als Router oder Gateways. <Wir möchten auf den kleinen, aber feinen Unterschied in der Definition zwischen den Begriffen »Router« und »Gateway« hinweisen: Ein Router leitet Datenpakete auf Layer 2 im TCP/IP-Modell (Internet-Layer) weiter, ein Gateway leitet Datenpakete auf Layer 4 (Application-Layer) weiter. Die Spalte »Gateway« kann in der Ausgabe so verstanden werden, als dass beide Begriffe dort synonym verwendet werden.>
  • Flags
  • Die Flags signalisieren grundlegende Eigenschaften einer Verbindung und sind in der Manpage nachzulesen.
  • Refs
  • Die Refs-Spalte gibt die aktuelle Anzahl der Nutzungen dieser Route an.
  • Use
  • Die Anzahl der Datenpakete, die seit der letzten Netzwerkinitialisierung über diese Route gesandt wurden.
  • Mtu
  • Die Maximum Transmission Unit, die die maximale Größe für Datenpakete angibt, die über ein Interface gesendet werden können.
  • Interface
  • Die Schnittstelle, die dieser Routing-Eintrag betrifft.

Möchten Sie nur die Routing-Tabelle einer bestimmten Adressfamilie ausgeben, kann diese bei einigen Implementierungen durch -f <Protokollfamilie> festgelegt werden. Mögliche Werte sind:


Tabelle 10.1    Protokollfamilien
Keyword Makro Protokoll
inet AF_INET IPv4
inet6 AF_INET6 IPv6
ipx AF_IPX Novell IPX
atalk AF_APPLETALK AppleTalk
ns AF_NS Xerox NS
encap PF_KEY IPSec (VPN-Tunneling)
local AF_LOCAL Lokale Sockets (etwa Fifo)
unix AF_UNIX Lokale Sockets (etwa Unix-Domain-Socket)

netstat unterstützt noch zahlreiche weitere Features. Diese können wir im Umfang dieses Buches allerdings nicht erläutern, zudem findet sich in der Manpage eine hervorragende Dokumentation zu diesem Programm.


Galileo Computing

10.3.1 Routing-Administration: route  downtop

Möchte man nun selbst das Routing in einem Netzwerk einrichten, müssen die einzelnen Hosts und Router dementsprechend konfiguriert werden. Dazu werden wir erneut das Tool route verwenden.

Eine Route einfügen

Um eine Route in die Routing-Tabelle einzufügen, müssen zwei Eigenschaften dieser Route bekannt sein: das Ziel (dies kann eine einzelne Adresse oder auch ein ganzes (Sub-)Netzwerk sein) und die Adresse des direkt erreichbaren Rechners, über den man diese Route erreichen kann. Wenn wir »direkt erreichbar« sagen, dann meinen wir damit, dass zwischen dem Router und dem Host, auf dem die Route konfiguriert werden soll, kein weiterer Host steht – beide Rechner befinden sich also im gleichen (Sub-)Netzwerk, denn IP-Pakete werden von Host zu Host weitergeleitet.

Nun konfigurieren wir eine Beispielroute. Es soll das gesamte Netzwerk 192.168.1.0 (Netzmaske 255.255.255.0) <Man kann diese Schreibweise im Übrigen auch verkürzen, indem man die Subnetzmaske in Bit-Form angibt. In diesem Fall wäre dies 192.168.1.0/24.> erreicht werden. Der Host selbst befindet sich im Netzwerk 192.168.0.0. Das Zielnetzwerk soll über den lokalen Router 192.168.0.5 erreicht werden.

Unter Linux fügt man eine Route entweder für einen einzelnen Host (-host) oder für ein gesamtes Netzwerk (-net) in die Routing-Tabelle ein. Die Netzmaske gibt man via netmask, das Gateway via gw an.

# route add -net 192.168.1.0 netmask 255.255.255.0 \ 
gw 192.168.0.5

Listing 10.19    Linux route add

Um unter BSD via route eine Route hinzuzufügen, wird der Parameter add verwendet. Als zweiter Parameter folgt das Zielsystem bzw. -netzwerk und als dritter Parameter der zu verwendende Router. Es ergibt sich für unser Beispiel also folgender Aufruf:

# route add 192.168.1.0 192.168.0.5 
add host 192.168.0: gateway 192.168.0.5

Listing 10.20    route add

Fragt man die Routing-Tabelle nun erneut ab und grept sich das Netzwerk 192.168.1.0 heraus, findet man auch gleich die entsprechende Route: <Wer es sich zutraut, kann unter Linux auch einmal einen Blick in /proc/net/route werfen.>

linux# route | grep 192.168.1.0 
192.168.1.0 192.168.0.5 255.255.255.0 UG 0  0  0 eth0 
openbsd$ netstat -nr | grep 192.168.1.0 
192.168.1.0       192.168.0.5      UGHS  0  0  –  ne3

Listing 10.21    route

Metrik und Hops

Route gibt unter Linux eine Spalte mit der Überschrift Metric aus. Dieser Wert gibt die Distanz des Routing-Ziels an, wenn man Daten über die jeweilige Route schickt. Daher wird die Routing-Metrik verwendet, um kürzere Routen zu bevorzugen. Meist ist es so, dass die Metrik für einen Rechner, der direkt an einer Schnittstelle angeschlossen ist (etwa durch ein serielles Kabel oder einen Switch), den Wert »1« hat, ein Rechner, der hingegen zwei Router entfernt ist, bekommt meist die Metrik »3«. Die Router-Entfernung zwischen den Systemen nennt man Hops.

Routen löschen oder ändern

Um eine bestehende Route wieder aus der Routing-Tabelle zu löschen, wird statt des Parameters add unter Linux del und unter BSD delete verwendet. Via change kann man Routen unter BSD nachträglich verändern; unter Linux verwendet man hierzu ebenfalls add.

# route del -net 192.168.13.0

Listing 10.22    Eine Route löschen

Lässt man route im Monitoring-Modus laufen (dies wird nicht unter Linux unterstützt), wird man im Übrigen über Veränderungen und neue Einträge in der Routing-Tabelle auf dem Laufenden gehalten.

openbsd$ route monitor 
got message of size 76 on Mon Aug 22 19:20:34 2005 
RTM_ADD: Add Route: len 76, pid: 32686, seq 1, errno 
22, flags:<UP,GATEWAY,STATIC> 
locks:  inits: 
got message of size 108 on Mon Aug 22 19:21:29 2005 
RTM_ADD: Add Route: len 108, pid: 6086, seq 1, errno 
0, flags:<UP,GATEWAY,HOST,DONE,STATIC> 
locks:  inits: 
sockaddrs: <DST,GATEWAY> 
 192.168.1.0 yorick 
got message of size 148 on Mon Aug 22 19:30:09 2005 
RTM_ADD: Add Route: len 148, pid: 0, seq 0, errno 0, 
flags:<UP,HOST,DONE,LLINFO,CLONED> 
locks:  inits: 
sockaddrs: <DST,GATEWAY,IFP,IFA> 
 faust link#1 00:50:bf:11:35:a5 eygo

Listing 10.23    Monitor-Modus


Galileo Computing

10.3.2 Router aufsetzen  toptop

Um einen Router aufzusetzen, muss man die obigen Schritte zur Routing-Konfiguration ebenfalls entsprechend durchführen. Allerdings ist es oftmals noch notwendig, die Schnittstellen, über die geroutet werden soll, mit anzugeben. Unter Linux wird bei route mit dem Parameter add über das Keyword dev die Schnittstelle mit angegeben, also etwa dev eth1.

Doch um das Routing seitens des Kernels auch wirklich zu veranlassen, muss das System wissen, dass es auch Pakete anderer Hosts weiterleitet. Das wird von System zu System unterschiedlich bewerkstelligt.

Linux regelt solche Verhaltenskonfigurationen des Kernels beispielsweise über das Proc-Dateisystem. Je nachdem, ob in der Datei ip_forward in /proc/sys/net/ipv4 (das gilt auch analog für IPv6) eine »0« oder eine »1« steht, ist das Weiterleiten von TCP/IP-Datenpaketen entweder explizit unterbunden oder explizit erlaubt.

# echo 1 >/proc/sys/net/ipv4/ip_forward

Listing 10.24    Routing unter Linux aktivieren

Unter BSD hingegen erledigt man solche Einstellungen mit dem Tool sysctl. Dabei wird je nach System eine andere Variable auf »1« oder »0« gesetzt. Unter OpenBSD heißt diese beispielsweise net.inet.ip.forwarding bzw. für IPv6 net.inet6.ip6.forwarding.

# sysctl -n net.inet6.ip6.forwarding 
0 
# sysctl -w net.inet6.ip6.forwarding=1 
0 -> 1

Listing 10.25    forwarding abfragen und setzen

Solche Einstellungen sind sowohl unter Linux als auch unter BSD nur temporär. Nach dem nächsten Neustart müssen diese Parameter neu konfiguriert werden. Das erledigt man am besten über ein Shellskript oder distributions- bzw. derivatspezifische Konfigurationsdateien wie /etc/sysctl.conf.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






 <<   zurück
  
  Zum Katalog
Zum Katalog: Linux






 Linux
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Katalog: Einstieg in Linux






 Einstieg in Linux


Zum Katalog: Debian GNU/Linux






 Debian GNU/Linux


Zum Katalog: Ubuntu GNU/Linux






 Ubuntu GNU/Linux


Zum Katalog: Shell-Programmierung






 Shell-Programmierung


Zum Katalog: Linux-UNIX-Programmierung






 Linux-UNIX-
 Programmierung


Zum Katalog: Praxisbuch Netzwerk-Sicherheit






 Praxisbuch
 Netzwerk-Sicherheit


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: 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.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de