Zur Netzwerkkonfiguration und Analyse von Netzwerkproblemen existieren für die verbreiteten Betriebssysteme zahlreiche Werkzeuge. In diesem Kapitel finden Sie eine Übersicht über die wichtigsten Kommandozeilenwerkzeuge für Linux-/UNIX-Betriebssysteme. Diese sind häufig unter gleichem oder ähnlichem Namen auch unter Mac OS X oder Microsoft Windows verfügbar oder können mit geringem Aufwand nachinstalliert werden. Tab. 11.1 enthält eine Zuordnung der Werkzeuge zu den Schichten des hybriden Referenzmodells (siehe Abb. 4.3). Bei zahlreichen Werkzeugen ist es nicht möglich, diese nur einer einzigen Schicht zuzuordnen, da sie an den Schnittpunkten der Schichten arbeiten.

Alle in diesem Kapitel vorgestellten Werkzeuge bieten eine große Anzahl an Funktionen. Dementsprechend kann ihr Verhalten mit zahlreichen Kommandozeilenparametern beeinflusst werden. Eine vollständige Auflistung dieser Funktionen und der entsprechenden Kommandozeilenparameter ist im Rahmen dieses Werkes nicht möglich. Es können nur eine knappe Auswahl an konkreten Einsatzszenarien und die wichtigsten Funktionen vorgestellt werden. Für eine detaillierte Auseinandersetzung mit den verfügbaren Kommandozeilenparametern ist eine Recherche der Hilfe- und Dokumentationsseiten (Man-Pages) der Kommandozeilenwerkzeuge unerlässlich.

Tab. 11.1 Werkzeuge für Linux/UNIX zur Netzwerkkonfiguration und -analyse

Mit Kommandozeilenwerkzeugen der Bitübertragungsschicht wie z. B. thtool und mii-tool werden der Verbindungsstatus sowie diverse Verbindungsparameter (u. a. die Datenrate und der Verbindungsmodus) kontrolliert und angepasst. Werkzeuge für WLAN-Funknetze wie z. B. iwlist und iwconfig ermöglichen zudem das Auffinden gewünschter Funknetze und das VerbindenFootnote 1 mit diesen.

Werkzeuge der Sicherungsschicht ermöglichen u. a. die Kontrolle der physischen Adressen (MAC-Adressen) und teilweise auch deren temporäre Änderung. Zudem können einige Werkzeuge (wie z. B. ifconfig und ip) Netzwerkschnittstellen auf der Ebene der Sicherungsschicht aktivieren und deaktivieren.

Mit Werkzeugen der Vermittlungsschicht (z. B. ifconfig und ip) werden die logischen Adressen (IP-Adressen) kontrolliert, manuell zugewiesen und die lokale Routing-Tabelle (z. B. mit route oder ip) angepasst. Dieser Schicht zugeordnet sind auch Werkzeuge wie arp zur Kontrolle und Modifikation der Einträge im lokalen ARP-Cache.

Werkzeuge für die Transportschicht wie z. B. netstat und nmap ermöglichen die Kontrolle der laufenden Serverdienste und damit die Beobachtung der erreichbaren Portnummern.

Die Werkzeuge der Anwendungsschicht sind häufig Client-Anwendungen, die Anwendungsprotokolle verwenden, um mit Serverdiensten zu interagieren. In diesem Kontext findet u. a. die Namensauflösung (z. B. mit nslookup), die automatische Zuweisung von IP-Adressen via DHCP (z. B. mit dhclient), der Transfer von Dateien (z. B. via ftp) und die Fernsteuerung von Rechnern (z. B. via telnet oder ssh) statt.

Ein Grund, warum sich dieses Kapitel auf die Vorstellung der Kommandozeilenwerkzeuge beschränkt, ist, dass deren Namen und die Art und Weise der Anwendung, unabhängig von konkreten Linux-Distributionen, Varianten von Microsoft Windows und Versionen von Mac OS X, meist ähnlich oder gleich sind. Zudem erfordern diese Werkzeuge nur selten die Installation zusätzlicher Softwarepakete, weil sie standardmäßig in den Betriebssystemen enthalten sind. Ein weiterer Vorteil ist, dass die Kommandozeilenwerkzeuge keine grafische Oberfläche voraussetzen. Darum können sie ohne Probleme via Secure Shell (SSH) oder Telnet (siehe Abschn. 9.3) auf entfernten Rechnern zur Administration und Problemanalyse verwendet werden.

Im weiteren Verlauf enthält dieses Kapitel zu jedem in Tab. 11.1 aufgeführten Werkzeug einen erklärenden Abschnitt. Die Reihenfolge der Abschnitte entspricht der Reihenfolge der Einträge in der Tabelle.

11.1 ethtool

Die Einstellungen lokaler Ethernet-Schnittstellen können auf der Ebene der Bitübertragungsschicht mit dem Kommandozeilenwerkzeug ethtool untersucht und verändert werden. Damit ist es u. a. möglich, den Verbindungsstatus (verbunden oder nicht verbunden) und die unterstützten Datenraten zu kontrollieren sowie eine Datenrate festzulegen. Es kann auch informieren, ob eine Verbindung im Modus Vollduplex oder Halbduplex (siehe Abschn. 3.4.3) ist. Diese Einstellung kann manuell festgelegt werden. Auch Informationen zum Treiber und zur Firmware sowie statistische Daten zu den über eine bestimmte Ethernet-Schnittstelle gesendeten und empfangenen Daten kann ethtool ausgeben.

Kann eine physische Ethernet-Schnittstelle nicht sicher einer Schnittstelle im Betriebssystem zuordnet werden, ist es hilfreich, die LED der physischen Schnittstelle mit ethtool manuell zum Blinken bringen.

Mit ethtool ist es auch möglich, die MAC-Adresse lokaler Ethernet-Schnittstellen abzufragen. Mit den Werkzeugen ifconfig und ip ist die temporäre Veränderung der MAC-Adresse möglich.

Tab. 11.2 enthält einige Aufrufbeispiele für ethtool. Dabei dient eth0 als Beispiel für eine Ethernet-Schnittstelle.

Tab. 11.2 Aufrufbeispiele für ethtool

11.2 mii-tool

Auch mit dem Kommandozeilenwerkzeug mii-tool ist es möglich, den Verbindungsstatus (verbunden oder nicht verbunden) sowie den Verbindungsmodus (Vollduplex oder Halbduplex) und die Datenraten von Netzwerkschnittstellen zu kontrollieren und anzupassen. Das Werkzeug gilt als veraltet und bietet einen geringeren Funktionsumfang als ethtool.

11.3 iwconfig

Wird iwconfig ohne weitere Kommandozeilenparameter aufgerufen, gibt es WLAN-spezifische Informationen zu allen erkannten Netzwerkschnittstellen aus. Die Ausgabe informiert u. a. darüber, ob eine Netzwerkschnittstelle überhaupt WLAN unterstützt. Ist das der Fall, werden u. a. der Netzwerkname (SSID) und Informationen zur Verbindungsqualität und Datenrate ausgegeben. Zudem informiert iwconfig darüber, ob die Schnittstelle mit einer Basisstation (Access Point) verbunden ist. Wenn ja, enthält die Ausgabe auch deren MAC-Adresse.

Mit iwconfig ist es nicht nur möglich, die genannten Einstellungen der WLAN-Netzwerkschnittstellen zu kontrollieren. Diese lässt sich durch das Werkzeug auch anpassen. Das folgende Kommando weist der Netzwerkschnittstelle wlan0 die SSID Mein Netzwerk zu, damit sich die Netzwerkschnittstelle an der Basisstation mit der entsprechenden SSID anmeldet.

figure a

Um Einstellungen zu verändern, ist es nötig, iwconfig mit den Rechten des Systemadministrators (root) aufzurufen.

11.4 iwlist

Das Kommandozeilenwerkzeug iwlist gibt eine Liste aller erreichbaren WLAN-Funknetze aus. Für jede Basisstation gibt es u. a. folgende Informationen aus: MAC-Adresse der Basisstation, verwendeter Kanal (die Frequenz), Netzwerkname (SSID), Signalstärke, angebotene Verschlüsselungsalgorithmen und unterstützte Datenraten.

Tab. 11.3 enthält einige Aufrufbeispiele für iwlist. Dabei dient wlan0 als Beispiel für eine WLAN-Schnittstelle. Um eine aktuelle Liste aller erreichbaren WLAN-Funknetze auszugeben, muss das Werkzeug mit den Rechten des Systemadministrators (root) aufgerufen werden.

Tab. 11.3 Aufrufbeispiele für iwlist

11.5 arp

Mit arp ist es möglich, den lokalen ARP-Cache (siehe Abschn. 6.10) auszugeben sowie Eintragungen in den ARP-Cache vorzunehmen. Das folgende Kommando gibt den lokalen ARP-Cache aus, ohne die Hostnamen aufzulösen.

figure b

Das Kommandozeilenwerkzeug arp wird unter Linux zunehmend durch ip ersetzt.

11.6 ifconfig

Das Kommandozeilenwerkzeug ifconfig (interface configurator) ermöglicht es, Netzwerkschnittstellen zu aktivieren und zu deaktivieren sowie die IP-Adresse und die Netzmaske und die Broadcast-Adresse festzulegen. Zudem kann ifconfig die MAC-Adresse temporär ändern. Darum arbeitet dieses Werkzeug nicht nur auf der Vermittlungsschicht, sondern auch auf der Sicherungsschicht.

Das folgende Kommando weist der Netzwerkschnittstelle eth0 die IP-Adresse 10.0.0.2 zu und legt fest, dass es sich bei dem verwendeten Subnetz um ein vollständiges Klasse-C-Subnetz (Netzmaske \(=\) 255.255.255.0) mit der Broadcast-Adresse 10.0.0.255 handelt.

figure c

Tab. 11.4 enthält einige Aufrufbeispiele für ifconfig. Dabei dient eth0 als Beispiel für eine Ethernet-Schnittstelle.

Tab. 11.4 Aufrufbeispiele für ifconfig

Das Kommandozeilenwerkzeug ifconfig wird unter Linux zunehmend durch ip ersetzt.

Unter Microsoft Windows existiert mit ipconfig  ein Kommandozeilenwerkzeug, das einen ähnlichen Funktionsumfang wie ifconfig bietet.

11.7 ip

Zukünftig soll das Kommandozeilenwerkzeug ip die etablierten Werkzeuge arp, ifconfig, netstat und route ersetzen. Es erweitert deren Funktionsumfang und fasst ihn in einem einzigen Kommando zusammen.

Tab. 11.5 Aufrufbeispiele für ip

Mit ip ist es u. a. möglich, die Adressen der Netzwerkschnittstellen auf der Sicherungsschicht und auf der Vermittlungsschicht zu kontrollieren und zu verändern. Zudem kann das Werkzeug den lokalen ARP-Cache und die Routing-Tabelle ausgeben und deren Einträge verändern.

Das folgende Kommando weist der Netzwerkschnittstelle eth0 die IP-Adresse 10.0.0.2 zu und legt fest, das es sich bei dem verwendeten Subnetz um ein vollständiges Klasse-C-Subnetz (Netzmaske = 255.255.255.0) mit der Broadcast-Adresse 10.0.0.255 handelt. Die Broadcast-Adresse entspricht dem Standard und muss in einem solchen Fall nicht explizit angegeben werden.

figure d

Tab. 11.5 enthält einige Aufrufbeispiele für ip. Dabei dient eth0 als Beispiel für eine Netzwerkschnittstelle.

Das Werkzeug ip kann auch dazu verwendet werden, Virtual Local Area Networks (siehe Abschn. 10.2) einzurichten und zu entfernen.

11.8 iftop

Das Kommandozeilenwerkzeug iftop ermöglicht die Überwachung des Datenverkehrs in Echtzeit. Das folgende Kommando führt dazu, dass iftop alle Netzwerkverbindungen der Netzwerkschnittstelle eth0 in Echtzeit erfasst und detaillierte Informationen zum gesendeten und empfangenen Datenverkehr ausgibt.

figure e

11.9 tcpdump

Das Kommandozeilenwerkzeugtcpdump ermöglicht die Überwachung des Datenverkehrs. Es ist ein hilfreiches Werkzeug zur Analyse von Netzwerkproblemen sowie zur Entdeckung unerwünschter Verbindungen. Das folgende Kommando führt dazu, dass tcpdump Informationen zum kompletten Datenverkehr ausgibt, der über die Netzwerkschnittstelle eth0 gesendet und empfangen wird.

figure f

Das Werkzeug stellt zahlreiche Kommandozeilenparameter zur Verfügung, um den Datenverkehr zu filtern. Das folgende Kommando gibt Informationen über den Datenverkehr aus, der zu einer angegeben Portnummer einer bestimmten Adresse geht und von dieser kommt.

figure g

Standardmäßig enthält die Ausgabe von tcpdump Informationen aus den Headern der Pakete der Vermittlungsschicht und Segmente der Transportschicht. Der Kommandozeilenparameter -e weist an, dass das Werkzeug auch Informationen aus den Headern der Rahmen der Bitübertragungsschicht ausgibt.

Als Adresse für das zu überprüfende Ziel kann eine IP-Adresse oder ein Hostname angegeben werden. Der Kommandozeilenparameter -n weist an, dass Hostnamen in der Ausgabe nicht aufgelöst werden. Der Kommandozeilenparameter -q weist an, dass weniger Protokollinformationen ausgeben werden, was die Zeilenlänge der Ausgabe verkürzt.

Wird mit dem Parameter -w<Datei> die Ausgabe in eine Datei geschrieben, kann diese später zum Beispiel mit dem grafischen Werkzeugen Wireshark geöffnet werden, um den Datenverkehr zu analysieren.

11.10 route

Das Kommando route kann die Routing-Tabelle ausgeben. Zudem ist es mit diesem Werkzeug möglich, Einträge in die Routing-Tabelle einzufügen und aus dieser zu entfernen. Das folgende Kommando gibt die Routing-Tabelle aus, ohne die Hostnamen aufzulösen.

figure h

Eine Standardroute legt das nachfolgende Kommando fest. In diesem Beispiel hat der Router die IP-Adresse 10.0.0.1.

figure i

Das Kommandozeilenwerkzeug route wird unter Linux zunehmend durch ip ersetzt.

11.11 ping

Das Kommandozeilenwerkzeug ping sendet eine oder mehrere ICMP Echo-Anfragen. Damit kann untersucht werden, ob ein Zielsystem erreichbar ist. Als Adresse für das zu überprüfende Ziel kann eine IP-Adresse oder ein Hostname angegeben werden.

Standardmäßig sendet ping kontinuierlich eine ICMP Echo-Anfrage pro Sekunde an die angegebene Zieladresse. Die Anzahl der zu sendenden ICMP Echo-Anfragen kann genauso wie die zu verwendende Netzwerkschnittstelle und das Intervall, also die Pause zwischen den ICMP Echo-Anfrage angegeben werden.

Das folgende Kommando sendet alle zwei Sekunden eine ICMP Echo-Anfrage über die Netzwerkschnittstelle wlan0 an den Webserver des Springer-Verlages. Insgesamt sendet das Kommando fünf ICMP Echo-Anfragen.

figure j

Mit ping6 existiert eine zum Vermittlungsprotokoll IPv6 kompatible Version von ping.

11.12 traceroute

Das Werkzeug traceroute ermittelt, über welche Router IP-Pakete bis zur Zieladresse weitergeleitet werden. Als Adresse für das zu überprüfende Ziel kann eine IP-Adresse oder ein Hostname angegeben sein. Das folgende Kommando ermittelt den Weg vom Router des lokalen Netzes zum Webserver des Springer-Verlages.

figure k

Mit traceroute6 existiert eine zum Vermittlungsprotokoll IPv6 kompatible Version von traceroute.

11.13 netstat

Das Kommandozeilenwerkzeug netstat (network statistics) ermöglicht es zu überprüfen, welche Ports auf dem lokalen System geöffnet sind und welche Netzwerkverbindungen zu entfernten Rechnern bestehen.

Das folgende Kommando zeigt an, welche Netzwerkdienste auf dem lokalen System unter welchen Portnummern über die Transportprotokolle TCP oder UDP erreichbar sind. Zudem gibt das Kommando für jeden Socket die numerischen Benutzer-IDs des Eigentümers aus.

figure l

Das Werkzeug netstat kann auch Routing-Tabellen der lokalen Netzwerkgeräte und statistische Daten zu den gesendeten und empfangenen IP- und ICMP-Paketen sowie zu den Verbindungen mit lokalen TCP- und UTP-Sockets ausgeben. Tab. 11.6 enthält einige Aufrufbeispiele für netstat.

Tab. 11.6 Aufrufbeispiele für netstat

Umfangreiche Informationen gibt netstat nur dann aus, wenn das Werkzeug mit den Rechten des Systemadministrators (root) aufgerufen wird. Da es mit netstat auch möglich ist, statistische Daten zu den Protokollen IP und ICMP abzufragen, arbeitet dieses Werkzeug nicht nur auf der Transportschicht, sondern auch auf der Vermittlungsschicht.

11.14 nmap

Das Kommandozeilenwerkzeug nmap (network mapper) ist ein Portscanner. Mit diesem ist es möglich, die Portnummern auf dem lokalen System oder auf entfernten Systemen zu untersuchen. Das Werkzeug versucht herausfinden, welche Netzwerkdienste unter welchen Portnummern erreichbar sind. Damit ist es unter anderem möglich, offene Ports und eventuell unerwünschte, im Hintergrund laufende Netzwerkdienste zu entdecken. Zudem kann das Werkzeug die Versionsnummern der Netzwerkdienste und Informationen über das Betriebssystem herausfinden.

Das folgende Kommando testet alle Adressen im Klasse-C-Subnetz 10.0.0.0 auf Erreichbarkeit über ping und überprüft so in kurzer Zeit, welche Systeme im lokalen Subnetz erreichbar sind.

figure m

Detaillierte Informationen zu den erreichbaren Netzwerkdiensten, deren Versionsnummern und Portnummern sowie Informationen zum laufenden Betriebssystem liefert das folgende Kommando:

figure n

Als Adresse für das zu überprüfende Ziel kann eine IP-Adresse oder ein Hostname angegeben sein.

11.15 dhclient

Der DHCP-Client dhclient ermöglicht die automatisierte Zuweisung logischer Adressen auf der Vermittlungsschicht von einem DHCP-Server mit Hilfe des Anwendungsprotokolls DHCP (siehe Abschn. 9.2).

Das folgende Kommando versucht, für die Netzwerkschnittstelle eth0 von einem DHCP-Server eine Netzwerkkonfiguration zu erhalten.

figure o

Mit dem Kommandozeilenparameter -4 können explizit IPv4-Adressen angefordert werden. Alternativ fordert dhclient mit dem Kommandozeilenparameter -6 IPv6-Adressen an.

11.16 dig

Mit dem Werkzeug dig ist es möglich, die Server des Domain Name System (DNS)  abzufragen. Das DNS (siehe Abschn. 9.1) ist ein Protokoll zur Namensauflösung. Das Werkzeug gibt die Antworten von DNS-Servern aus, die diese bei einer Namensauflösung zurücksenden. Auf diese Weise erleichtert dig die Fehlersuche im DNS-System.

Das folgende Kommando führt eine Namensauflösung für den Hostnamen www.springer.de durch und gibt die Antwort des verwendeten DNS-Servers aus.

figure p

11.17 ftp

Ein FTP-Client für die Kommandozeile ist ftp. Damit ist es möglich, mit Hilfe des Anwendungsprotokolls FTP (siehe Abschn. 9.7) von FTP-Servern Dateien herunterzuladen und zu diesen hochzuladen.

Beim folgenden Kommando versucht der FTP-Client, eine Verbindung mit einem FTP-Server über Portnummer 21 am System mit dem Hostnamen ftp.kernel.org aufzubauen.

figure q

11.18 nc

Das Kommando nc bzw. netcat ermöglicht die Interaktion mit verschiedenen Netzwerkdiensten und gilt als eine Art Schweizer Taschenmesser für Netzwerkadministratoren. Mit diesem Werkzeug lassen sich Netzwerkdienste analysieren und Daten direkt zwischen Systemen versenden. Die Möglichkeiten sind so vielfältig, dass an dieser Stelle nur eine kurze Auswahl an Beispielen erfolgt.

Das folgende Kommando fordert die Webseite auf dem Webserver des Springer-Verlages an und gibt die Antwort des Servers auf der Kommandozeile aus.

figure r

Das folgende Kommando überprüft die Erreichbarkeit einiger Portnummern auf dem lokalen System.

figure s

Um eine beliebige Datei (unverschlüsselt) mit nc über ein Netzwerk zu versenden, genügt es auf dem empfangenden System mit dem Kommandozeilenparameter -l einen Server zu starten. Wichtig sind noch die Angabe einer freien Portnummer (in diesem Beispiel 8888) und einer Zieldatei.

figure t

Das folgende Kommando überträgt als Client eine Quelldatei zum angegebenen System und der angegebenen Portnummer.

figure u

11.19 netperf

Eine Möglichkeit, um die Übertragungsrate zwischen zwei Computern innerhalb einer festgelegten Zeit zu messen, bietet netperf. Das Kommandozeilenwerkzeug benötigt zur Messung der Übertragungsrate den Server netserver. Dieser wird bei der Installation von netperf üblicherweise automatisch installiert und gestartet. Das folgende Kommando prüft, ob netserver aktuell läuft.

figure v

Das folgende Kommando startet netserver manuell und legt die Portnummer fest, unter der der Server erreichbar sein sein wird.

figure w

Die Messung der Übertragungsrate geschieht durch einen Aufruf des Clients netperf. Die Syntax von netperf ist:

figure x

Die Adresse kann eine IP-Adresse oder ein Hostname sein. Der Kommandozeilenparameter -l <Sekunden> ermöglicht die Angabe der Test-Länge in Sekunden. Der Kommandozeilenparameter -f M verbessert die Lesbarkeit des Ergebnisses, denn er legt fest, dass Übertragungsrate in MB/s ausgeben wird.

11.20 nslookup

Wie dig ermöglicht es das Kommandozeilenwerkzeug nslookup, bei Servern des Domain Name System (DNS)  nach einem Domainnamen zu fragen und so die zugehörige IP-Adresse zu erhalten.

Das folgende Kommando führt eine Namensauflösung für den Hostnamen www.springer.de durch und gibt die Antwort des verwendeten DNS-Servers aus.

figure y

11.21 ssh

Das Anwendungsprotokoll SSH ermöglicht die Fernsteuerung von Rechnern und ist eine sichere Alternative zu Telnet. Es ermöglicht eine verschlüsselte und damit sichere Verbindung zwischen unterschiedlichen Rechnern über ein unsicheres Netzwerk. Die Syntax des SSH-Clients ssh ist:

figure z

Die Adresse kann eine IP-Adresse oder ein Hostname sein. Ist keine Portnummer angegeben, versucht der Client, eine Verbindung zu einem Netzwerkdienst an Port 22 herzustellen. Ist beim Aufruf von ssh kein Benutzername festgelegt, versucht der Client, sich mit dem aktuellen Benutzernamen am SSH-Server anzumelden.

11.22 telnet

Mit telnet ist es möglich, über das Anwendungsprotokoll Telnet (siehe Abschn. 9.3) Rechner fernzusteuern. Die Syntax von telnet ist:

figure aa

Die Adresse kann eine IP-Adresse oder ein Hostname sein. Ist keine Portnummer angegeben, versucht der Client, eine Verbindung zu einem Netzwerkdienst an Port 23 herzustellen.

Zur Fehlersuche bei lokalen oder entfernten Netzwerkdiensten ist telnet ein hilfreiches Werkzeug. Beispiele sind Web-Server, FTP-Server oder SMTP-Server. Ein weiteres Einsatzgebiet ist die Administration von Datenbanken.

Die Kommunikation via Telnet erfolgt im Klartext. Das bedeutet, dass auch Passwörter unverschlüsselt zwischen Client und Server übertragen werden. Telnet eignet sich darum nur in sicheren Umgebungen zur Fernsteuerung von Rechnern oder Analyse von Netzwerkdiensten. Eine sichere Alternative zur Fernsteuerung von Rechnern ist ssh. Eine alternative Lösung zur Fehlersuche bei lokalen oder entfernten Netzwerkdiensten ist das Werkzeug nc.