17 Netzwerktechnik
Als Sprössling des Internets hält Ubuntu Linux sämtliche Werkzeuge bereit, die für den Datentransfer in homogenen und heterogenen Netzen erforderlich sind. Darüber hinaus lassen sich Server aller Arten im Handumdrehen aufsetzen.
Nachdem Sie in den Einstiegskapiteln die Netzhardware physikalisch in Betrieb genommen haben, wollen wir im Folgenden einen kleinen Blick hinter die Kulissen werfen und Fragen, die bei der bisherigen Konfiguration aufgetaucht sind, beantworten.
17.1 Grundlagen
Linux verwendet standardmäßig das TCP/IP-Protokoll zur Übertragung von Informationen. Dieses Protokoll hat sich gegenüber den zunächst von Microsoft favorisierten Netzwerkprotokollen NetBEUI oder IPX/SPX auf breiter Front durchgesetzt. Folgende Parameter sind von Interesse:
- Die IP-Adresse
-
- Nach dem derzeitigen Standard IPv4[In den Startlöchern steht derweil schon der neue Standard IPv6, der einen größeren Pool von Netzwerkadressen bietet und vom Linux-Kernel bereits voll unterstützt wird.] benötigt jeder Rechner eine eindeutige 32-Bit-Adresse. Diese besteht aus vier aufeinanderfolgenden Zahlen im Bereich von 0 bis 255. Da dieser Zahlenbereich längst nicht ausreicht, um die mittlerweile existenten Rechner zu katalogisieren, wurden verschiedene Netzwerktypen definiert, siehe Tabelle 17.1. Im Heimnetzbereich haben sich Adressen aus dem Bereich 192.168.0.x durchgesetzt, also z. B. die vielfach bemühte Adresse 192.168.0.1.
- Die Subnetzmaske
-
- Sie gibt an, welcher Teil der Adresse eines Rechners zur Rechneridentifikationsnummer zählt und welcher Teil das Netzwerk selbst klassifiziert. Für die oben definierte Netzwerkadresse 192.168.0.1 würde eine Netzwerkmaske von 255.255.255.0 bedeuten, dass sämtliche Rechner des Netzes in den ersten drei Bytes übereinstimmen. Hat man mehr als 256 Rechner, so empfiehlt es sich, auf ein höherwertiges Netz mit der Netzmaske 255.255.0.0 zu migrieren, um die Kombinationsmöglichkeiten des dritten Bytes hinzuzufügen.
- Die Routing-Tabelle
Die folgende Tabelle 17.1 gibt einen Überblick über die derzeit definierten Netzwerkklassen des Standards IPv4.
Klasse A | Klasse B | Klasse C | |
Adressbereich | 10.0.0.0 – 10.255.255.255 | 172.16.0.0 – 172.31.255.255 | 192.168.0.0 – 192.168.255.255 |
Rechneranzahl pro Netzwerk | 16,7 Millionen | 65536 | 256 |
Subnetz | 255.0.0.0 | 255.255.0.0 | 255.255.255.0 |
17.1.1 Netzwerktest
Prüfen der eigenen Netzwerkschnittstellen
Bereits in Abschnitt 11.2 wurde der Befehl ifconfig zum Testen der erfolgreich konfigurierten Netzwerkschnittstelle vorgestellt. Eine Alternative dazu ist das universelle Kommando ip, mit dem sämtliche oben beschriebenen Parameter konfiguriert und geprüft werden können:
user$ ip addr 1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue … 2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc … inet 192.168.0.1/24 brd 192.168.0.255 scope eth0 inet6 fe80::20e:a6ff:fe86:3cf/64 scope link valid_lft forever preferred_lft forever
Im vorliegenden Fall wurden das Loopbackdevice lo sowie eine Netzwerkkarte unter der Adresse 192.168.0.1 erkannt. Die Netzmaske wurde im Fall der eth0-Schnittstelle in der Kurzform /24 angegeben.
Kontaktaufnahme im LAN
Nun kann man versuchen, einen weiteren Rechner im gleichen Netzwerk mit dem Befehl ping zu kontaktieren:
user$ ping -c 5 192.168.0.103 64 bytes from 192.168.0.103: icmp_seq=1 ttl=128 time=0.154 ms … 5 packets transmitted, 5 received, 0\% packet loss, time 4000 ms
Interessant ist hier zum Abschätzen der Netzwerkperformance die Angabe der Antwortzeit (in diesem Fall 0.154 ms) sowie der Anteil der verlorenen Pakete (in diesem Fall 0 %). Das vorliegende Netzwerk zeigt somit eine gute Performance.
17.1.2 Routing
Rechner in anderem Subnetz erreichen
Nun kann es vorkommen, dass Sie an ein Netzwerk angeschlossen sind, welches das Subnetz 192.168.0.x verwendet, Sie aber Ihren persönlichen Rechner lieber mit der IP 192.168.1.1 versehen[Ein eher künstliches Beispiel, um Ihnen die Technik des Routings möchten. In diesem Fall müssen die beiden Subnetze miteinander verbunden werden. Das geschieht am einfachsten über die Erweiterung der Subnetzmaske in der Gestalt, dass beide Netzwerke erreicht werden können. Eine manuelle Konfiguration kann auf der Kommandozeile mittels ifconfig vorgenommen werden. Anschließend muss das Netzwerk neu gestartet werden:
user$ sudo ifconfig eth0 192.168.1.1 \ netmask 255.255.0.0 user$ sudo /etc/init.d/networking restart
Selbstverständlich können Sie die obige Einstellung auch mit dem graphischen Netzkonfigurationswerkzeug vornehmen. Um den Linux-Rechner von einem anderen Netzwerkteilnehmer aus erreichen zu können, muss dort die Subnetzmaske entsprechend gesetzt werden.
Eine Brücke zwischen zwei Netzen aufbauen
Meist verwendet man die oben beschriebene Lösung aus Sicherheitsgründen nicht, da man zwei Netzwerke logisch und physikalisch trennen möchte. Ein mögliches Beispiel wäre ein aus zwei Segmenten bestehendes Verwaltungsnetzwerk einer öffentlichen Institution. Beide Segmente sollen zwar miteinander kommunizieren, aber ansonsten logisch voneinander getrennt sein. In diesem Fall setzt man einen Rechner als Bridge (Brücke) ein, der über zwei Netzwerkkarten verfügt, die mit den beiden einzelnen Netzwerken verbunden sind.
Für das folgende Beispiel nehmen wir an, dass den beiden Karten im Bridge-Rechner die Netzwerkadresse 192.168.1.9 bzw. 192.168.0.9 zugewiesen wurde. Die Subnetze liegen entsprechend auf 192.168.1.0 und 192.168.0.0.
Zunächst ist es notwendig, für derartige Experimente das IP-Forwarding auf dem Bridge-Rechner zu aktivieren. Dies geschieht idealerweise in einer Root-Konsole mit dem folgenden Befehl:
user$ sudo -s root# sudo echo 1 > /proc/sys/net/ipv4/ip_forward
Ob der Befehl erfolgreich war, zeigt ein
root# cat /proc/sys/net/ipv4/ip_forward
Hier sollte nun eine »1« ausgegeben werden. Nun muss die Routing-Tabelle auf der Bridge wie folgt ergänzt werden:
root# route add -net 192.168.1.0 netmask \ 255.255.255.0 gw 192.168.1.9 root# route add -net 192.168.0.0 netmask \ 255.255.255.0 gw 192.168.0.9
Der Bridge-Rechner fungiert in diesem Fall als Gateway (gw) zwischen den beiden Subnetzen. Mit dem Befehl route überprüft man, ob die Routing-Tabelle erfolgreich geändert wurde. Schließlich können Sie abschließend testen, ob sich die Rechner gegenseitig anpingen lassen.
17.1.3 Netzwerküberwachung
Ist die Netzwerkschnittstelle einmal eingerichtet, dann ist es oftmals nützlich, den Datentransfer zu überwachen. Seit Ubuntu Breezy finden Sie ein kleines Netzwerkicon im oberen Bereich der Taskleiste. Dieses blinkt bei jeglichen Netzwerkaktivitäten auf. Wer die Netzwerkaktivitäten etwas anschaulicher dargestellt haben möchte, der kann das Werkzeug EtherApe einsetzen (Abbildung 17.1). Das Programm finden Sie nach der Installation über sudo apt-get install etherape im Internetmenü.
Sie können EtherApe als Root mittels sudo etherape oder aus dem GNOME-Menü über Anwendungen · Internet · EtherApe as root starten. Führen Sie anschließend einmal ein ping auf einen bekannten Internetrechner durch und verfolgen Sie den Weg der Graphikpakete in der graphischen Darstellung.
Abbildung 17.1 Der Netzwerkmonitor EtherApe
Um sich den Netzwerkverkehr explizit anzuschauen, bedient man sich des Werkzeugs tcpdump. Öffnen Sie dazu eine Konsole und geben Sie den gleichnamigen Befehl ein. Starten Sie nun beispielsweise den Webbrowser Firefox und rufen Sie eine Internetseite auf. Sollten Sie via DSL über eine Netzwerkkarte an das Internet angebunden sein, so protokolliert das Programm tcpdump alle Pakete, die über die Leitung gehen.
user$ sudo tcpdump tcpdump: verbose output suppressed listening on eth0, link-type EN10MB (Ethernet) 15:31:40.526335 arp who-has 192.168.0.254 tell august … 15:31:45.632652 IP august.46492 > 66.249.93.99.www: S
Im vorliegenden Fall wurde mit dem Browser die Seite http://www.google.de aufgerufen. Der PC richtet seine Anfrage betreffs der IP der Webseite zunächst an den Router und erhält kurze Zeit später die Antwort (66.249.93.99). Das Werkzeug ist insbesondere dann nützlich, wenn es darum geht, Störungen im DSL-Betrieb auf den Grund zu gehen.
Wer genau protokollieren möchte, was für Daten über die Ethernetschnittstelle gehen, der bedient sich des Tools Ethereal. Das Programm finden Sie nach der Installation über sudo apt-get install ethereal im Internetmenü. Nachdem das Programm im root-Modus gestartet wird, muss zunächst über Capture · Interfaces das Device ausgewählt werden,das belauscht werden soll.
Durch Betätigen des Knopfes Capture wird der Mitschnitt gestartet. Sollte Ihr E-Mail Verkehr über das entsprechende Interface laufen (dies ist beispielsweise bei Verwendung von DSL der Fall), so können Sie einmal spaßeshalber eine E-Mail an sich selbst schicken und nachschauen, ob die Informationen vielleicht sogar im Klartext lesbar sind. Dies ist ein deutliches Indiz dafür, dass Sie sich Gedanken über den Wechsel des Mailservers/Providers machen sollten (Abbildung 17.2).
Abbildung 17.2 Der Paketsniffer Ethereal
17.1.4 Probleme mit der Namensauflösung
Ein Problem, das beim Einrichten des Internetzugangs unter Ubuntu auftritt, ist die gestörte Namensauflösung von Internetseiten. Der sogenannte DNS (Domain Name Server) wird dem Anwender in der Regel dynamisch zugewiesen. Oft kommt es jedoch vor, dass derartige Nameserver überlastet sind. Dann tut man gut daran, einen weniger frequentierten Server zu definieren. Das kann entweder mit dem Netzwerkkonfigurationswerkzeug oder durch direkte Bearbeitung der Datei /etc/dhcp3/dhclient.conf erfolgen. Der notwendige Eintrag hat folgende Gestalt:
prepend domain-name-servers 62.72.64.237
In der Datei ist bereits ein entsprechender Eintrag vorhanden, dort muss das Kommentarzeichen # entfernt und die IP-Adresse geändert werden. Um die Änderungen ohne Neustart des Systems zu übernehmen, ist noch folgender Befehl erforderlich:
user$ sudo /etc/init.d/networking restart
Welcher DNS-Server gerade genutzt wird, erfährt man durch folgenden Befehl:
user$ grep nameserver /etc/resolv.conf
Der Befehl dig schließlich testet, ob ein gegebener Nameserver (im folgenden Beispiel 194.25.2.129) eine Anfrage umsetzt:
user$ dig @194.25.2.129 www.ubuntulinux.org a ; (1 server found) ;; Query time: 51 msec ;; SERVER: 194.25.2.129#53(194.25.2.129)
Wie man sieht, kann man auf diese Weise auch die Reaktionszeit des Nameservers abschätzen.