![]() |
|
||||||||||||||||||||
|
|||||||||||||||||||||
|
|||||||||||||||||||||
von Carsten Schnober
In kargen Räumen bei schlechtem Licht kryptische Befehle in die Tastatur einzuhämmern, davon träumt jeder dramaturgisch ambitionierte Netzwerk-Hacker. In der Realität setzen die klassischen Netzwerkdiagnosewerkzeuge jenseits der grafischen Oberfläche jedoch keine magischen Fähigkeiten voraus und bieten ganz praktische Vorteile.
Das schmälert zwar die Bewunderung durch eventuelle Zuschauer, erhöht aber zugleich das Verständnis und sorgt für den Überblick über die Internet-Verbindung oder das eigene Heim-Netzwerk. Die noch aus den alten Tagen der Unix-Betriebssysteme stammenden und immer noch nützlichen Spezialwerkzeuge ifconfig, host, route, ping, traceroute und netstat untersuchen jeden Aspekt des Netzwerks. So liefern sie bei Problemen Hinweise auf die Ursache.
Grundlage eines Netzwerks bildet die Hardware, über die Verbindung zustande kommt. Bei lokalen, verkabelten Netzen (LAN, "Local Area Network") dient dazu der Ethernet-Standard, im Rechner steckt dann eine Ethernet-Karte. Eine inzwischen gängige Alternative sind Funkverbindungen via WLAN ("Wireless Local Area Network"). Zur Einwahl ins Internet kommen analoge und DSL-Modems oder ISDN-Karten zum Einsatz. Ob es sich um externe oder eingebaute Geräte handelt, spielt für die Netzwerkkonfiguration keine Rolle. Traditionell steht der Ausdruck Netzwerk für ein lokales Netz, deshalb fallen unter die Kategorie Netzwerkkarten häufig nur Ethernet- und WLAN-Geräte, aber keine Modems.
Die Netzwerkgeräte spricht Linux über ihre Gerätenamen an, die sich aus dem Verbindungstyp ergeben. Die erste Ethernet-Karte trägt den Namen eth0, weitere nummeriert das Betriebssystem mit fortlaufenden Ziffern, also eth1 usw. Funknetzwerkkarten heißen entsprechend wlan0. Geräte, die sich ins Internet einwählen, identifizieren sich bei der Gegenstelle über das zu diesem Zweck entwickelte Point-to-Point-Protokoll und heißen deshalb ppp0. Die Ausnahme bilden ISDN-Karten; sie heißen im Linux-Netzwerksystem ippp0.
Das Kommando ifconfig in der Konsole gibt alle aktiven Netzwerkgeräten und ihre Konfigurationsdaten aus. Bei einigen Distributionen müssen Sie den genauen Verzeichnispfad angeben, wenn Sie ohne Root-Rechte arbeiten, also /sbin/ifconfig. Hängen Sie wie im Listing Die Ausgabe von ifconfig den Namen eines Geräts an, erhalten Sie nur über dieses Auskunft. Mit ifconfig -a sehen Sie auch die derzeit inaktiven Karten.
| Die Ausgabe von ifconfig |
$ /sbin/ifconfig eth0
eth0 Protokoll:Ethernet Hardware Adresse 00:11:D8:BC:04:AA
inet Adresse:192.168.1.242 Bcast:192.168.1.255 Maske:255.255.255.0
inet6 Adresse: fe80::211:d8ff:febc:4aa/64 Gültigkeitsbereich:Verbindung
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:34982 errors:0 dropped:0 overruns:0 frame:0
TX packets:3907 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenlänge:1000
RX bytes:5765177 (5.4 MiB) TX bytes:1719700 (1.6 MiB)
|
In der ifconfig-Ausgabe sehen Sie in der ersten Zeile hinter dem Gerätenamen das Protokoll und im Falle von LAN- oder WLAN-Karten die Hardware-spezifische MAC-Adresse (Media Access Control). Darüber identifiziert sich jedes Netzwerkgerät eindeutig, nach außen hin kann der Anwender diesen Eintrag jedoch manipulieren.
In der nächsten Zeile erfahren Sie die IP-Adresse des Geräts (siehe Kasten IP-Adressen und das Werkzeug host). Bei lokalen Netzen folgen unter Bcast Informationen über den verwendeten Netzwerkteilbereich. Point-to-Point-Geräte, die sich ins Internet einwählen, notieren stattdessen unter P-t-P die Adresse der Gegenseite.
| IP-Adressen und das Werkzeug host |
|
Jeder Computer erhält über das im Internet verwendete TCP/IP-Protokoll eine numerische so genannte Adresse, die IP. Sie besteht aus vier Stellen zwischen 0 und 254. Darüber identifizieren sich die Rechner und kommunizieren miteinander. Dass Internet-Benutzer statt diesen Nummern leichter einprägsame Namen wie www.easylinux.de verwenden können, ermöglicht das Domain Name System. Es weist allen Servern jeder registrierten Domain, z. B. easylinux.de, eine IP-Adresse zu. Zahlreiche Name-Server auf der ganzen Welt speichern diese riesigen Datenbanken jeweils zu Teilen. Gibt ein Benutzer beispielsweise im Web-Browser www.easylinux.de ein, fragt das System bei einem Name-Server nach der zugehörigen IP und leitet den Web-Browser an die richtige Adresse. Auch für Name-Server-Abfragen stellt Linux ein Konsolenwerkzeug bereit. Der Befehl host www.easylinux.de zeigt die zu diesem Server passende IP-Adresse aus. Das funktioniert auch umgekehrt: Geben Sie als host-Parameter eine IP-Adresse ein, erfahren Sie den Server-Namen. Allerdings erhalten Sie in dieser Richtung häufig keine Antwort, da nicht jede IP-Adresse einen Namen trägt. |
Neben den realen Netzwerkgeräten taucht in der ifconfig-Ausgabe ein Eintrag namens lo auf. Unter Protokoll steht hier lediglich Lokale Schleife, denn es handelt sich um ein virtuelles Gerät, das ein rechnerinternes Netzwerk aufbaut. So erreichen Programme auf dem eigenen Rechner laufende Dienste über die IP-Adresse 127.0.0.1.
Wichtigste Aufgabe des Netzwerksystems ist es, den Netzwerkverkehr in geordnete Bahnen zu lenken. Das Kommando route gibt die so genannte Routing-Tabelle aus oder verändert sie. Diese Tabelle legt fest, über welche Schnittstelle, also das Netzwerkgerät, Daten ein- und ausgehen sollen. Sie sortiert dabei nach der IP-Adresse des Verbindungspartners. So spricht das System verschiedene Netzabschnitte über unterschiedliche Schnittstellen an; beispielsweise das eigene Heim-Netz über wlan0 und das Internet über das Modem ppp0. Ohne Parameter aufgerufen, zeigt route die derzeitige Konfiguration (siehe Listing Die Ausgabe von route).
| Die Ausgabe von route |
$ /sbin/route Kernel IP Routentabelle Ziel Router Genmask Flags Metric Ref Use Iface 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0 default gateway 0.0.0.0 UG 0 0 0 eth0 |
Das Feld Iface am Ende jeder Zeile der route-Ausgabe beschreibt das für die unter Ziel stehenden Adressengruppen zu benutzende Netzwerkgerät. In der Beispielausgabe legt die erste Zeile fest, dass die Kommunikation mit allen IP-Adressen, die mit 192.168.1 beginnen, über die Ethernet-Karte eth0 verläuft. Der Spezialeintrag default gilt für alle nicht eigens definierten Adressengruppen. Das Beispiel leitet auch sie über eth0 weiter.
Ein Router ist ein Rechner, der zwischen zwei Netzen vermittelt. Gewöhnlich kommen solche Geräte -- in Heimnetzwerken handelt es sich dabei meist um kleine Boxen -- zum Einsatz, um mehrere Rechner eines internen Netzes mit dem Internet zu verbinden. Die Adresse des Routers steht in der Routing-Tabelle im gleichnamigen Feld. Dadurch weiß das Betriebssystem, dass es zu einem hinter dem Router liegenden Ziel keine direkte Verbindung aufbauen kann.
Wenn eine Seite im Browser nicht erscheint, zeigt ein einfaches Werkzeug, ob überhaupt eine Verbindung besteht. Das Kommando ping (siehe Kasten Ping-Geschichte) verschickt ein Paket, das nichts weiter enthält als die Bitte um Antwort. Der so kontaktierte Rechner gibt ein Netzwerkpaket zurück, und ping zeigt die zwischen Anfrage und Antwort (siehe Listing Die Ausgabe von ping) verstrichene Zeit an.
| Ping-Geschichte |
|
Verschiedene Legenden ranken um die Herkunft Namens ping. Seit 1983 existiert das Unix-Werkzeug, inzwischen gehört es auch zur Standardausstattung der Windows-Kommandozeile. Zeit genug, einen Mythos entstehen zu lassen. Freunde nüchterner Technik kennen PING als Akronym für "Packet InterNet Grouper". Wer es abenteuerlicher mag, zieht die mittlerweile als quasi-offiziell geltende Erklärung heran: Der im Jahr 2000 verstorbene ping-Erfinder Michael John Muuss nannte auf seiner Homepage die regelmäßig ausgesandten Geräusche eines Radarsystems als Inspiration für den Programmnamen. Im auch schon vor fast zwei Jahrzehnten entstandenen Internet-Chat IRC gibt es das Ping-Kommando ebenfalls. Hier erhält ein Chatter auf ein PING die Antwort PONG -- die Tischtennisassoziation stellt die sportliche Variante der Entstehungslegende dar. |
| Die Ausgabe von ping |
$ ping www.kde.org PING www.kde.org (80.232.38.131) 56(84) bytes of data. 64 bytes from www.kde.org (80.232.38.131): icmp_seq=1 ttl=50 time=246 ms 64 bytes from www.kde.org (80.232.38.131): icmp_seq=2 ttl=50 time=188 ms 64 bytes from www.kde.org (80.232.38.131): icmp_seq=3 ttl=50 time=311 ms 64 bytes from www.kde.org (80.232.38.131): icmp_seq=4 ttl=50 time=237 ms --- www.kde.org ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 5209ms rtt min/avg/max/mdev = 188.698/245.900/311.829/43.867 ms |
In der ersten Zeile der Ausgabe nennt ping die zum kontaktierten Server gehörige IP-Adresse. Danach folgt für jedes geschickte Paket eine Auswertung der Antwort. Im letzten Feld time steht die bis zur Rückmeldung verstrichene Zeit in Millisekunden. Daraus lässt sich die Reaktionszeit des Servers ablesen -- eine hohe Zahl erklärt beispielsweise einen trägen Zugriff auf einen Web-Server. Echtzeitanwendungen wie Online-Spiele setzen eine schnelle Antwortzeit für den unterbrechungsfreien Verlauf voraus.
Ohne nähere Angaben schickt ping so lange Pakete, bis der Benutzer es mit [Strg-C] abbricht. Dann gibt es eine zweizeilige Auswertung aus: In der ersten stehen die Anzahl der versandten (packets transmitted) und zurückerhaltenen Pakete (received), der prozentuale Anteil der nicht beantworteten Anfragen (packet loss) und die Dauer des ping-Vorgangs (time). Gewöhnlich gehen keine oder nur sehr wenige Pakete verloren, eine hohe Paketverlustrate lässt auf eine gestörte Verbindung schließen. Die zweite Zeile liefert die schnellste, die durchschnittliche und die langsamste Antwort und schließlich die Standardabweichung vom Durchschnitt.
Möchten Sie mit ping eine feste Paketanzahl schicken, legen Sie sie über den Parameter -c fest: ping -c 10 www.kde.org sendet genau zehn Pakete an den Server www.kde.org und gibt danach die Abschlussstatistik aus. So erhalten Sie vergleichbare Zahlen für verschiedene Verbindungen.
Antwortet ein Rechner, ob im eigenen Netz oder im Internet, nicht auf eine ping-Anfrage, liegt an irgendeiner Stelle in der Netzwerkverbindung ein Fehler vor. Bei Internet-Rechnern muss man bei derartigen Rückschlüssen aber berücksichtigen, dass ein Computer keineswegs gezwungen ist, auf ping-Anfragen zu antworten. Viele Server ignorieren sie, um Bandbreite zu sparen oder um potentielle Angreifer nicht auf ihre Existenz hinzuweisen.
Den Weg, den ein Datenpaket von Ihrem PC zu einem anderen im Netz zurücklegt, verrät er Befehl traceroute. Es zeigt alle Zwischenstationen mit ihrer IP-Adresse und den durch ping ermittelten Antwortzeiten. Der Aufruf erfolgt auf der Kommandozeile beispielsweise mittels traceroute www.easy-linux.de.
Übersichtlicher erfüllt dieselbe Funktion das Programm "My Traceroute", das dazugehörige Konsolenkommando heißt mtr. Es liegt allen Distributionen bei, bei einigen gehört das Paket mtr aber nicht zur Standardinstallation. Gibt es den Befehl mtr auf Ihrem System nicht, spielen Sie es über den Paket-Manager ein. Der Aufruf erfolgt wie der von traceroute, das Listing Die Ausgabe von traceroute zeigt das Resultat von mtr www.kde.org.
| Listing 4: Die Ausgabe von My traceroute |
My traceroute [v0.67]
computer (0.0.0.0)(tos=0x0 psize=64 bitpattern=0x00) Mon Jun 6 15:22:44 2005
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. gateway.test.de 0.0% 511 0.4 0.3 0.3 4.1 0.2
2. welcome.test.de 0.0% 511 1.1 1.1 1.1 6.9 0.3
3. rt7.muc3.m-online.net 0.2% 511 5.6 47.1 5.3 285.3 59.7
4. GW-SF-OSR76-15-S1-1-317.nefkom.de 0.4% 511 18.6 57.1 8.3 304.9 67.5
5. NEFkom.NUE-1-eth120.de.lambdanet.ne 0.2% 511 8.7 56.1 8.3 412.5 65.9
6. FRA-2-eth100.de.lambdanet.net 0.2% 511 12.7 57.8 12.2 315.1 65.2
7. ge1-1.1000M.ffm2nxg1.ip.tele.dk 0.2% 511 14.7 59.9 14.3 333.7 65.3
8. pos0-0.2488M.ffm2nxg2.ip.tele.dk 0.4% 511 13.2 65.1 12.7 357.0 69.7
9. so-1-3-0.2488M.albnxu1.ip.tele.dk 0.2% 511 37.2 85.7 36.8 335.2 65.5
10. pos8-0.2488M.albnxg1.ip.tele.dk 0.8% 511 36.5 81.4 35.8 328.1 62.4
11. pos0-0.2488M.oslo1nxg1.ip.tele.dk 0.0% 511 46.3 90.1 45.8 320.4 61.5
12. pos1-1.622M.osl-nyd-cr1.ip.teledanm 0.0% 511 56.3 91.7 45.8 392.1 65.0
13. pos1-0.622M.noa1nxg2.ip.tele.dk 0.6% 511 46.1 86.3 45.3 333.4 58.7
14. osl-hmg-sw4.ip.tdcnorge.no 0.2% 511 95.1 90.0 46.2 342.3 60.5
15. knoll.linpro.no 0.0% 511 150.7 88.3 46.3 324.2 58.9
16. blindemann.oslo.norway.trolltech.ne 0.0% 510 155.7 99.9 47.4 400.9 60.2
17. www.kde.org 0.0% 510 141.9 103.0 47.3 391.8 61.7
|
Auch mtr läuft ohne anderweite Angaben so lange, bis der Benutzer es unterbricht. Es ermittelt zunächst alle Stationen, die der Datenverkehr zwischen dem eigenen und dem Ziel-Rechner passiert. Danach verwendet es ping, um von jeder eine Statistik über die Erreichbarkeit zu erstellen. Die Spalte Loss% führt die Zahl der verlorengegangenen Pakete auf, die Gesamtanzahl steht in der nächsten Spalte Snt.
Last gibt die Reaktionszeit beim letzten verschickten Paket an, dahinter folgen die von ping bekannten Werte: durchschnittliche, schnellste und langsamste Reaktion und die Standardabweichung.
My Traceroute kombiniert die Fähigkeiten von ping und traceroute. Es erkundet so, welche Zwischenstation eine langsame Verbindung verursacht. Auch wenn ein Internet-Benutzer meist nichts daran ändern kann, dass irgendein außerhalb seines Einflussbereiches liegender Server zögernd reagiert hilft die Information, die Störung einzuordnen.
Einen Überblick über alle Netzwerkdaten verschafft das Werkzeug netstat. Ohne Parameter gibt es eine Liste der so genannten Sockets aus. Dabei handelt es sich um spezielle Dateien, über die Anwendungen miteinander kommunizieren, gewöhnlich ein Server mit seinen Clients. In der ersten Spalte steht das Protokoll; hierbei sind die zahlreichen mit unix gekennzeichneten Sockets für das Netzwerk uninteressant, da sie lediglich der internen Kommunikation dienen.
Die Ausgabe von netstat verfeinern deshalb zahlreiche Kommandozeilenparametern. Zunächst reduziert sie der Aufruf netstat -t auf die für das Internet relevanten Sockets des Protokolls TCP/IP. Gewöhnlich steht jede hier angezeigte Zeile für eine bestehende Netzverbindung. Diese können jedoch auch lediglich lokal stattfinden, wenn eine Anwendung mit einem auf dem gleichen Rechner laufenden Server-Programm kommuniziert.
Der Aufruf netstat -l zeigt, auf welche Verbindungstypen der Rechner wartet, also dafür einen Server-Dienst bereitstellt. Kombiniert mit -t zeigt das Kommando wiederum nur für das Internet relevante Anteile: netstat -l -t (siehe Listing Die Ausgabe von netstat -l -t).
| Die Ausgabe von netstat -l -t |
$ netstat -t -l Aktive Internet-Verbindungen (Nur Server) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:netbios-ssn *:* LISTEN tcp 0 0 *:5900 *:* LISTEN tcp 0 0 *:x11 *:* LISTEN tcp 0 0 localhost.localdoma:ipp *:* LISTEN tcp 0 0 localhost.localdom:smtp *:* LISTEN tcp 0 0 localhost.localdom:6010 *:* LISTEN tcp 0 0 localhost.localdom:6011 *:* LISTEN tcp 0 0 *:microsoft-ds *:* LISTEN tcp6 0 0 *:x11 *:* LISTEN tcp6 0 0 *:ssh *:* LISTEN tcp6 0 0 ip6-localhost:smtp *:* LISTEN tcp6 0 0 ip6-localhost:6010 *:* LISTEN tcp6 0 0 ip6-localhost:6011 *:* LISTEN |
In der Ausgabe steht jede Zeile für einen angebotenen Server-Dienst. Die Spalte Local Address gibt hinter dem Doppelpunkt den Netzwerk-Port -- gerne mit der Hausnummer verglichen -- oder, falls bekannt, den Namen des Dienstes aus. Der Eintrag vor dem Doppelpunkt beschreibt die Adressen, von denen aus fremde Rechner auf den jeweiligen Dienst zugreifen dürfen. Ein Stern bedeutet, dass der Dienst keiner derartigen Einschränkung unterliegt. Steht dort ein einzelner Rechner oder eine Internet-Domain, können nur diese Netzwerkteilnehmer den Server-Dienst nutzen. Häufig wird hier der Name des eigenen Systems (localhost) aufgeführt, um den Zugriff aus dem Netz komplett zu unterbinden.
netstat behält die Netzwerkkonfiguration bei Bedarf dauerhaft im Auge. Dazu kombinieren Sie den Parameter -c mit einem beliebigen netstat-Aufruf. Das Werkzeug liefert auf Wunsch auch die meisten Informationen der oben angeführten Werkzeuge: netstat -r zeigt die Routing-Tabelle, netstat -i die Netzwerkgeräte. Das Kommando netstat -s fasst die Verbindungsinformationen zusammen.
Die vorgestellten Kommandozeilenwerkzeuge diagnostizieren bei Netzwerkstörungen gezielt jeden Teilaspekt der Verbindung. Damit arbeiten Sie sich Schritt für Schritt zur Ursache vor. Die gesammelten Informationen helfen, sie zu beheben. So finden Sie möglicherweise heraus, ob es sich bei einer nicht funktionierenden internen oder Internet-Verbindung um ein Problem mit der Anwendung, der Systemkonfiguration, der Namensauflösung per DNS oder eines der Gegenseite handelt. (csc)
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.
Druckerfreundliche Version |
Feedback zu dieser Seite |
Datenschutz |
© 2012 Linux New Media AG |
Last modified: 2007-04-05 11:10
[Linux-Magazin]
[LinuxUser]
[Linux-Community]
[Admin-Magazin]
[Ubuntu User]
[Smart Developer]
[Linux Events]
[Linux Magazine]
[Ubuntu User]
[Admin Magazine]
[Smart Developer]
[Linux Magazine Poland]
[Linux Community Poland]
[Linux Magazine Brasil]
[Linux Magazine Spain]
[Linux Technical Review]