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

Inhaltsverzeichnis
Vorwort
1 Einleitung
TEIL I: Einstieg in Linux
2 Die Installation
3 Erste Schritte
4 Linux als Workstation für Einsteiger
TEIL II: Grundlagen
5 Kernel
6 Grundlagen aus Anwendersicht
TEIL III: Die Shell
7 Die Shell
8 Reguläre Ausdrücke
9 Konsolentools
10 Die Editoren
11 Shellskriptprogrammierung mit der bash
12 Die C-Shell
TEIL IV: System- & Netzwerkadministration
13 Benutzerverwaltung
14 Grundlegende Verwaltungsaufgaben
15 Netzwerkgrundlagen
16 Anwendersoftware für das Netzwerk
17 Netzwerkdienste
18 Mailserver unter Linux
19 LAMP & Co.
20 DNS-Server
21 Secure Shell
TEIL V: Die grafische Oberfläche
22 Die grafische Oberfläche
23 Window-Manager und Desktops
24 X11-Programme
25 Multimedia und Spiele
TEIL VI: Systeminterna
26 Prozesse und IPC
27 Bootstrap und Shutdown
28 Dateisysteme
29 Virtualisierung und Emulatoren
TEIL VII: Programmierung und Sicherheit
30 Softwareentwicklung
31 Crashkurs in C und Perl
32 Einführung in Computersicherheit
33 Netzwerksicherheit überwachen
TEIL VIII: Anhang
A Lösungen zu den einzelnen Aufgaben
B Kommandoreferenz
C X11-InputDevices
D MBR
E Buch-DVDs
F Glossar
G Literatur
Stichwort
Ihre Meinung?

Spacer
Linux von Johannes Plötner, Steffen Wendzel
Das umfassende Handbuch
Buch: Linux

Linux
Rheinwerk Computing
1282 S., 5., aktualisierte Auflage 2012, geb., mit 2 DVDs
49,90 Euro, ISBN 978-3-8362-1822-1
Pfeil 15 Netzwerkgrundlagen
Pfeil 15.1 Grundlegendes zu TCP/IP
Pfeil 15.1.1 Network Access Layer
Pfeil 15.1.2 Internet Layer
Pfeil 15.1.3 Transport Layer
Pfeil 15.1.4 Application Layer
Pfeil 15.2 Grundlegendes Netzwerk-Setup
Pfeil 15.2.1 Hostname setzen
Pfeil 15.2.2 Netzwerkadressen für alle
Pfeil 15.2.3 Wireless LAN
Pfeil 15.2.4 DHCP
Pfeil 15.2.5 /etc/hosts
Pfeil 15.2.6 /etc/networks
Pfeil 15.2.7 /etc/resolv.conf
Pfeil 15.2.8 Nun gibt es aber ein Problem ...
Pfeil 15.2.9 Windows und Namensauflösung
Pfeil 15.3 Grundlagen des Routings
Pfeil 15.3.1 Routing-Administration: route
Pfeil 15.3.2 Router aufsetzen
Pfeil 15.4 Netzwerkverbindungen
Pfeil 15.4.1 Datenaufkommen von Schnittstellen
Pfeil 15.4.2 Protokollstatistiken
Pfeil 15.4.3 Aktive TCP-Verbindungen
Pfeil 15.4.4 Listen-Ports
Pfeil 15.4.5 ARP-Cache
Pfeil 15.4.6 tcpdump
Pfeil 15.5 Mit Linux ins Internet
Pfeil 15.5.1 Point-to-Point Protocol
Pfeil 15.5.2 Einwahl mit einem Modem
Pfeil 15.5.3 Einwahl über DSL
Pfeil 15.6 Zusammenfassung
Pfeil 15.7 Aufgaben

Rheinwerk Computing - Zum Seitenanfang

15.3 Grundlagen des RoutingsZur nächsten Überschrift

Wir werden uns an dieser Stelle mit Routing-Grundlagen auseinandersetzen – genauer gesagt mit den Grundlagen des statischen Routings, also desjenigen, bei dem die Routing-Einträge von Hand konfiguriert werden müssen. Es gibt auch dynamisches Routing, bei dem so genannte Routing-Protokolle verwendet werden, um die Routing-Administration zu automatisieren. [Fn. Dabei unterscheidet man zwischen verschiedenen Arten wie internen und externen Protokollen, solchen mit Link-State- und solchen 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 an ihr Ziel bringt. Dieses Ziel kann mehrere Knotenpunkte (also andere Rechner, die auf der Strecke liegen, oder Hops) vom eigentlichen Absender entfernt sein. Routing sorgt in diesem Fall dafür, dass das Datenpaket von einem Rechner über den nächsten zum Ziel gesendet wird.

Routing-Tabelle

Die auf Ihrem System verfügbaren Routen werden in einer Datenstruktur gespeichert, die sich Routing-Tabelle nennt. Sie können ihren Inhalt mit zwei verschiedenen Programmen abfragen: netstat und route. [Fn. Für alle technisch Interessierten: Die Routing-Tabelle befindet sich im Speicher des Kernels und wird in der Regel als (doppelt) verkettete Liste implementiert.]

netstat liefert Ihnen generelle Informationen über den Netzwerkstatus des Systems – die Routing-Tabelle stellt nur einen kleinen Teil davon 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, so dass IP-Adressen angezeigt werden.

Listing 15.18 netstat lädt die Routing-Tabelle

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)

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

Ein Routing-Eintrag (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 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
    Gibt den zur Erreichung des Ziels zu verwendenden Rechner im Netzwerk an, der weiß, wie er die Datenpakete zum Ziel weiterleiten kann. Man bezeichnet solche Routing-fähigen Systeme als Router oder Gateways. [Fn. Wir möchten auf den kleinen, aber feinen Definitionsunterschied 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. In der Gateway-Spalte wird der Begriff jedoch synonym mit »Router« verwendet.]
  • Flags
    Flags signalisieren grundlegende Eigenschaften einer Verbindung und sind in der Manpage nachzulesen.
  • Refs
    Diese Spalte gibt die aktuelle Anzahl Nutzungen dieser Route an.
  • Use
    Gibt die Anzahl der Datenpakete an, die seit der letzten Netzwerkinitialisierung über diese Route gesendet wurden.
  • Mtu
    Die Maximum Transmission Unit gibt die maximale Größe für Datenpakete an, die über ein Interface gesendet werden können.
  • Interface
    Gibt die Schnittstelle an, die dieser Routing-Eintrag betrifft.

Möchten Sie nur die Routing-Tabelle einer bestimmten Adressfamilie ausgeben, so kann dies bei einigen Implementierungen (etwa unter OpenBSD) durch -f <Protokollfamilie> bewirkt werden. Mögliche Werte entnehmen Sie Tabelle 15.1.

Tabelle 15.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 Rahmen dieses Buches allerdings nicht erläutern, zudem bietet die Manpage eine hervorragende Dokumentation zu diesem Programm.


Rheinwerk Computing - Zum Seitenanfang

15.3.1 Routing-Administration: routeZur nächsten ÜberschriftZur vorigen Überschrift

Möchte man nun selbst das Routing in einem Netzwerk einrichten, müssen die einzelnen Hosts und Router entsprechend 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 ihrer Eigenschaften 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.

[zB]Nun konfigurieren wir eine Beispielroute. Es soll das gesamte Netzwerk 192.168.1.0 (Netzmaske 255.255.255.0) [Fn. 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 und 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 mit netmask, das Gateway mit gw an.

Listing 15.19 Linux route add

# route add -net 192.168.1.0 netmask 255.255.255.0 \
gw 192.168.0.5

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

Listing 15.20 route add

# route add 192.168.1.0 192.168.0.5
add host 192.168.0: gateway 192.168.0.5

Fragt man die Routing-Tabelle nun erneut ab und greift sich mit grep das Netzwerk 192.168.1.0 heraus, findet man auch gleich die entsprechende Route:

Listing 15.21 route

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

Metrik und Hops

route gibt unter Linux eine Spalte mit der Überschrift Metric aus. Ihr 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. Mit change kann man Routen unter BSD nachträglich verändern; unter Linux verwendet man hierzu ebenfalls add.

Listing 15.22 Eine Route löschen

# route del -net 192.168.13.0

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

Listing 15.23 Monitor-Modus

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

Rheinwerk Computing - Zum Seitenanfang

15.3.2 Router aufsetzenZur vorigen Überschrift

Um einen Router aufzusetzen, muss man die obigen Schritte zur Routing-Konfiguration ebenfalls entsprechend durchführen. Allerdings ist es oftmals zusätzlich 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.

Um aber das Routing seitens des Kernels definitiv zu veranlassen, muss das System wissen, dass es auch Pakete anderer Hosts weiterleitet. Das wird von System zu System unterschiedlich konfiguriert.

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.

Listing 15.24 Routing unter Linux aktivieren

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

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.

Listing 15.25 forwarding abfragen und setzen

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

Solche Einstellungen sind sowohl unter Linux als auch unter BSD nur temporär. Nach dem nächsten Neustart müssen sie neu konfiguriert werden. Dies erledigt man am besten über ein Shellskript oder über 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.

>> Zum Feedback-Formular
<< zurück
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Linux Handbuch






 Linux Handbuch


Zum Katalog: Linux Server






 Linux Server


Zum Katalog: Raspberry Pi






 Raspberry Pi


Zum Katalog: Ubuntu 14.04 LTS






 Ubuntu 14.04 LTS


Zum Katalog: Roboter bauen mit Arduino






 Roboter bauen
 mit Arduino


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2012
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.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de