Netzwerkprobleme beheben

Aus LinuxUser 12/2006

Netzwerkprobleme beheben

Troubleshooter

Wenn es im Netzwerk klemmt, ist oft guter Rat teuer. Dabei bringt beinahe jede Linux-Distribution die nötige Software mit, um Fehler zu entdecken und beheben.

Streikt die Verbindung ins Netzwerk, so liegt das oft nur an einer Kleinigkeit – doch die gilt es erst einmal herauszufinden. Linux bringt zu diesem Zweck alle erdenklichen Tools mit. Allerdings arbeiten die meisten davon auf der Kommandozeile, nicht alle sind einfach zu bedienen. Der Artikel erklärt die Funktionsweise der wichtigsten Helfer und beschreibt deren Anwendung anhand verschiedener Beispiele. Beinahe alle Arbeiten auf der Netzwerkebene von Linux lassen sich nur als root vornehmen, auf entsprechende Hinweise verzichtet der Artikel deshalb im Folgenden.

Netzwerk an?

Den ersten Schritt bei der Fehlersuche stellt das Überprüfen des physikalischen Kontakts dar. Nicht selten liegt der Fehler an einer wackeligen Verbindung des Kabels zur Netzwerkkarte. Ob eine Verbindung besteht, signalisieren praktisch alle NICs mittels einer grünen Leuchtdiode neben dem Stecker.

Besteht der Kontakt, gilt es als nächstes mit ifconfig zu überprüfen, ob die Karte korrekt im Betriebssystem integriert ist. Die Eingabe von ifconfig (Abbildung 1) ohne weitere Angaben listet die aktuell aktiven Netzwerkkarten und deren Einstellungen. Der Devicename ethNummer zeigt an, dass es sich um eine Ethernet-NIC handelt. WLAN-Karten definiert meist der Eintrag wlanNummer. Dabei nummeriert Linux die Schnittstellen jeder Bauart von Null beginnend durch. So heißt das erste Ethernet-Interface eth0. Das Kürzel lo steht für Loopback – also die interne, virtuelle Netzwerkschnittstelle.

Abbildung 1: Mit dem Programm Ifconfig verwalten Sie die Netzwerkschnittstellen Ihres Rechners.

Abbildung 1: Mit dem Programm Ifconfig verwalten Sie die Netzwerkschnittstellen Ihres Rechners.

Sollte die Ausgabe von ifconfig außer dem Loopback-Device keine weiteren Karten anzeigen, aktivieren Sie die NIC mit dem Aufruf ifconfig SchnittstelleIP-Adresse up. Der Aufruf ifconfig Schnittstelle down schaltet die Netzwerkkarte ab. Die Konfigurationsdateien der Netzwerkumgebung für Suse finden Sie im Verzeichnis /etc/sysconfig/network, für Debian-Derivate unter /etc/network und für Mandriva und Fedora unter /etc/networking bzw. /etc/network-scripts.

Zeigt die Ausgabe von ifconfig zwar die Netzwerkkarte, jedoch keine IP-Adresse, liegt das oft daran, dass der Rechner vom DHCP-Server keine Adresse bekommen hat. Überprüfen Sie in diesem Fall, ob der DHCP-Client läuft, (ps -ax | grep dhcpd) und starten Sie diesen gegebenenfalls mit dem Aufruf dhcpd. Sollte die Netzwerkkarte nach wie vor keine IP-Adresse besitzen, schalten Sie diese wie beschrieben ab und wieder an.

Weigert sich das Interface, zu starten, überprüfen Sie mit dem Aufruf lsmod ob das für die Karte benötigte Kernel-Modul geladen ist. Den Typ der am PCI-Slot angeschlossenen Karte erfahren Sie mit dem Aufruf lspci | grep Ethernet. Sollte das Modul nicht geladen sein, prüfen Sie wie folgt, ob ein Kernel-Modul für die Karte verfügbar ist:

  • Geben Sie den Befehl lspci | grep Ethernet ein und merken Sie sich die erste Zahlenkolonne, beispielsweise 02:08.0. Diese Zahl repräsentiert die physikalische Schnittstelle auf dem Motherboard.
  • Geben Sie nun den Befehl lspci -n | grep 02:08.0 ein, um die numerische ID des Gerätes zu erfahren, die in unserem Beispiel 02:08.0 Class 0200: 8086:1050 (rev 02) lautet. Bei der letzten Zahlengruppe der Ausgabe, 8086:1050, handelt es sich um die Vendor- (hier: 8086) und Device-ID (1050).
  • Öffnen Sie danach die Datei /lib/modules/Kernel-Version/modules.pcimap, und vergleichen Sie deren zweite und dritte Zeichenkolonne mit dem zuvor ermittelten Eintrag für Vendor- und Device-ID. Am einfachsten finden Sie die passende Zeile, indem Sie sich in das entsprechende Verzeichnis begeben und mit dem Befehl cat modules.pcimap | grep 'VendorID 0x0000DeviceID' in der Datei suchen. Das zu unserem Beispiel findet sich hier e100 0x00008086 0x00001050 ... in der Liste. Die Zeile beginnt mit dem Namen des passenden Moduls, das in unserem Fall den Namen e100 trägt.
  • Um das Modul zu laden, tippen Sie nun modprobe e100; die etwas brachialere Variante des Befehls lautet insmod e100 und sollte nur im Notfall verwendet werden.

Kein Kontakt

Bei korrekt funktionierender Hardware sollten Sie nun mittels des Befehls ping Verbindung zu anderen Rechnern im lokalen Netz oder auch im Internet aufnehmen können (Abbildung 2, unten). Die Syntax lautet ping -cVersucheIP_oder_Hostname. Dabei begrenzen Sie mit dem Parameter -c die Anzahl der aufzunehmenden Verbindungsversuche, den zu erreichenden Rechner geben Sie über seine IP-Adresse oder den Hostnamen an.

Abbildung 2: Ping gibt Aufschluss über die Kontaktfreudigkeit des Rechners. In der oberen Bildhälfte sehen Sie einen fehlgeschlagenen Verbindungsversuch (hier zu einem nicht vorhandenen Rechner).

Abbildung 2: Ping gibt Aufschluss über die Kontaktfreudigkeit des Rechners. In der oberen Bildhälfte sehen Sie einen fehlgeschlagenen Verbindungsversuch (hier zu einem nicht vorhandenen Rechner).

Klappt die Verbindung ins Netz trotz aktivierter Karte und zugewiesener IP-Adresse nicht, (Abbildung 2, oben) liegt das oft am falschen Eintrag in der Routingtabelle. Diese gibt an, wohin sich der Rechner bei Kontaktversuchen ins Netz wenden soll.

Über das so genannte Default-Gateway schickt das System alle Kontaktversuche, die keine anderen Route beschreibt. Als Default-Gateway dient im Heimnetz oft der Router mit der IP-Adresse 192.168.0.1, die Fritzbox verwendet als Standard 192.168.178.1.

Um die Einstellungen der Routingtabelle in Erfahrung zu bringen, tippen Sie route ein und vergleichen den Eintrag neben default mit der Adresse des tatsächlichen Gateways. Stimmen diese nicht überein, so löschen Sie den Eintrag mit dem Aufruf route del default und erstellen Sie einen neuen mit route add default gw IP-Adresse dev Device-Name, beispielsweise route add default gw 192.168.178.1 dev eth0.

Haben Sie Probleme, andere Rechner im LAN zu erreichen, kommen als Fehlerquelle auch falsche Netzwerksegmente in Betracht. Ein Beispiel: Besitzt Rechner-1 die IP-Adresse 192.168.1.50 und Rechner-2 192.168.2.53, so befinden sich beide in verschiedenen Netzwerksegmenten und können nur über einen Router miteinander kommunizieren. In diesem Fall teilen Sie einem der PCs eine andere IP-Adresse zu, so dass sich beide im gleichen Subnetz befindet – in unserem Beispiel etwa dem Rechner-2 die Adresse 192.168.1.53.

Diese und andere Probleme umgehen Sie am geschicktesten mit dem Einsatz eines DHCP-Diensts, der dem PC nach dem Booten automatisch sowohl die richtige IP-Adresse liefert, als auch das Default-Gateway korrekt einrichtet. Daneben stellt DHCP auch den Nameserver ein, der für das Auflösen von Hostnamen (etwa www.linux-user.de) in IP-Adressen verantwortlich zeichnet. Eine Fehlkonfiguration erkennen Sie unter anderem daran, dass die Kommunikation zu Rechnern im Internet über die IP-Adresse zwar reibungslos klappt, aber der Aufruf einer Webseite über den Domainnamen mit der Fehlermeldung Seite konnte nicht angezeigt werden scheitert.

Ob der Nameservice wirklich der Übeltäter ist, finden Sie am einfachsten mithilfe des Befehls nslookup heraus. Bei einer funktionierenden Namensauflösung erhalten Sie die IP-Adresse des Nameservers sowie des nachzuschlagenden Hostnamens zurück geliefert:

$ nslookup www.linux-user.de
Server:         192.168.1.1
Address:        192.168.1.1#53
Non-authoritative answer:
Name:   www.linux-user.de
Address: 87.106.38.241

Führt der Aufruf dagegen zu einer Ausgabe wie connection timed out; no servers could be reached, konnte das System keinen funktionierenden Nameserver erreichen. In diesem Fall öffnen Sie mit einem Editor die Datei /etc/resolv.conf: Sie enthält einen oder mehrere Einträge des Typs nameserver IP-Adresse. Im heimischen Netz ist die IP-Adresse oft identisch mit der des Default-Gateways – also meist des Routers. Alternativ tragen Sie in dieser Datei eigene, im Internet verfügbare Nameservices ein. Eine Liste freier Nameservices finden Sie unter [1]. Da der Resolver bei jedem Aufruf die resolv.conf neu einliest, ist nach deren Modifikation kein Neustart des Netzwerkes erforderlich.

Verschwundene Dienste

Oft haben die unerklärlichsten Erscheinungen die trivialsten Ursachen. Erreichen Sie beispielsweise per Ping einen Rechner, nicht jedoch eine dort verfügbaren Dienst, so könnte das daran liegen, dass Ihre Firewall den Zugriff verhindert. Überprüfen Sie deshalb mit iptables -L den Status des Paketfilters. Eine Ausgabe wie in Listing 1 signalisiert, dass die Firewall deaktiviert ist.

Listing 1

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Stehen die Default Policies dagegen nicht auf ACCEPT, und enthalten die einzelnen Chains Regeln, so arbeitet die Firewall. Eine detailliertere Anzeige, welche Regel wie oft “gematcht” hat, erhalten Sie mit dem Aufruf iptables -L -v. Um die Treffer für einen bestimmten Dienst – beispielsweise FTP – anzuzeigen, filtern Sie die Ausgabe:

iptables -L -v | grep ftp

Um die Firewall zu deaktivieren, löschen Sie die Regeln mit der Eingabe von iptables -F. Die Aufrufe iptables -P INPUT ACCEPT und iptables -P OUTPUT ACCEPT setzen die Regeln auf den Defaultwert “alles erlauben” (ACCEPT) zurück.

Um zu überprüfen, ob der eigene oder der Zielrechner den gewünschte Service überhaupt anbieten, eignen sich Portscanner wie das weit verbreitete Programm nmap (Abbildung 3). Die Eingabe von nmap IP-Adresse scannt das angegebene Ziel nach geöffneten Well-known-Ports. Eigene Port-Bereiche definieren Sie mit der Option -p von-bis, beispielsweise nmap 192.168.1.152 -p 1-1024. Um das verwendete Betriebssystem des Zielrechners anhand des Fingerprints in Erfahrung zu bringen, genügt die Eingabe von nmap -O IP-Adresse.

Beachten Sie: Ein Scan des eigenen Rechners verwendet immer (auch bei Angabe der von außen erreichbaren IP-Adresse) das Loopback Device – und listet damit auch Ports, die sich von außen nicht erreichen lassen.

Abbildung 3: Nmap entdeckt nicht nur offene Ports auf dem Zielrechner, sondern ermittelt anhand bestimmter Eigenarten auch das Betriebssystem des Rechners.

Abbildung 3: Nmap entdeckt nicht nur offene Ports auf dem Zielrechner, sondern ermittelt anhand bestimmter Eigenarten auch das Betriebssystem des Rechners.

Zu viele Köche

Eine weitere – wenn auch eher selten anzutreffende – Störungsquelle im Netz stellen mehrfach vergebene IP-Adressen dar. Das kommt allerdings nur dann vor, wenn kein DHCP-Server die Adressverwaltung übernimmt. Da Linux für diesen Fall keine Sicherheitsvorkehrungen kennt, kann eine solche Vergabe ein ganzes Netzwerk lahm legen oder zumindest nachhaltig stören, wenn ein Host beispielsweise die gleiche IP-Adresse wie der Gateway oder Nameserver besitzt.

Die einfachste Möglichkeit, einer solchen Doppelvergabe auf die Schliche zu kommen, ist der Einsatz von Arpwatch [2]. Das Programm lauscht als Daemon an der Netzwerkkarte und meldet via Mail Änderungen an der IP/MAC-Zuordnung, womit solche Unregelmäßigkeiten sofort aufallen.

Die jeweils aktuelle Zuordnung von MAC- zu IP-Adressen erhalten Sie mit dem Aufruf arp. Dieser zeigt an, welche MAC-Adresse zu welcher IP-Adresse der letzten Verbindungen gehört. Das Kommando arping sendet wie Ping einen Request an den Zielhost, bekommt jedoch als Rückgabewert unter anderem die ARP-Adresse des Rechners übermittelt.

Manchmal liegt der Fehler nicht in der eigenen Konfiguration, sondern am Übertragungsweg. Erreichen Sie beispielsweise einen bestimmten Host im Internet nicht, reicht oft ein traceroute IP-Adresse, um herauszufinden, wo die Verbindung stockt. Dieser Befehl gibt neben den Hops (Router, welche die Pakete passieren) auch deren Reaktionszeiten aus (Abbildung 4).

Abbildung 4: Mit dem Befehl <code srcset=

traceroute verfolgen Sie den Weg der Datenpakete zu ihrem Ziel. Der Parameter -I sorgt dabei für die Verwendung von Paketen des Typs, die auch ping nutzt – eine sehr kompatible Methode.” width=”300″ height=”80″ /> Abbildung 4: Mit dem Befehl traceroute verfolgen Sie den Weg der Datenpakete zu ihrem Ziel. Der Parameter -I sorgt dabei für die Verwendung von Paketen des Typs, die auch ping nutzt – eine sehr kompatible Methode.

Verkehrskontrolle

Zur Anzeige offener Netzwerkverbindungen eignet sich das Programm netstat. Der Befehl netstat -l | grep -e ^tcp -e ^udp zeigt alle geöffneten TCP- und UDP-Ports an, netstat -C | grep -e ^tcp -e ^udp alle aktiven Verbindungen. Die Option -c führt zu einer fortlaufende Ausgabe des Netzwerkstatus und gibt Ihnen damit die Möglichkeit, Veränderungen sofort zu erkennen.

Deutlich informativer gibt sich iptraf. Es zeigt neben den Verbindungen auch die Anzahl der übertragenen Pakete und optional die MAC-Adresse des Versenders. Das Programm erlaubt neben dem Einstellen der abgehörten Netzwerkschnittstelle – wahlweise auch im Promiscous Mode – diverse Anzeigeoptionen. Neben der Standardansicht (Abbildung 5) zählt das Programm im Modus General Interface Statistics alle an- und abgehenden Pakete, aufgeschlüsselt nach Netzwerkschnittstellen. Die Option Detailed Interface Statistics verfeinert die Ausgabe und listet die Paketzähler nach IP-Protokoll sortiert.

Abbildung 5: Das Statistik- und Analyseprogramm Iptraf zeigt in Echtzeit alle Netzwerkverbindungen mit dem anfallenden Traffic an.

Abbildung 5: Das Statistik- und Analyseprogramm Iptraf zeigt in Echtzeit alle Netzwerkverbindungen mit dem anfallenden Traffic an.

Manchmal ist es durchaus hilfreich, sich nicht nur die Verbindungen anzusehen, sondern auch den Inhalt der Pakete. Die dafür geeigneten Programm heißen Sniffer und geben bitgenaue Auskunft über den Inhalt empfangener und versandter Netzwerkpakete. Das derzeit verbreitetste Programm dafür ist tcpdump. Es beschränkt sich jedoch auf die Ausgabe des Paket-Headers, ohne Auskunft über deren Inhalt zu liefern. Ruft man Tcpdump ohne weitere Argumente auf, zeigt es als Ausgabe die Kopfdaten aller Pakete. Die Option -i Interface schränkt die Anzeige auf das gewählte Interface ein. Kommt ein host Hostname_oder_IP dazu, liefert das Programm lediglich Informationen über den Datenfluss zwischen dem gewählten Rechner und dem eigenen.

Die genaueste Analyse erlaubt das Programm Wireshark ([3], bekannter unter seinem früheren Namen Ethereal) (Abbildung 6). Es listet alle Pakete auf, sortiert nach Empfänger, Absender, Größe oder Protokoll. Die Auswahl von Follow TCP-Stream beim Rechtsklick auf ein Paket erlaubt Ihnen, gesniffte Datenverbindungen wieder zusammenzubauen und somit in der Textansicht zu analysieren, woraus die übertragene Information bestand.

Abbildung 6: Wireshark erlaubt Ihnen die bitgenaue Kontrolle des Datenflusses von und zu Ihrem Rechner.

Abbildung 6: Wireshark erlaubt Ihnen die bitgenaue Kontrolle des Datenflusses von und zu Ihrem Rechner.

Glossar

NIC

Network Interface Card. Gebräuchliches Kürzel für Netzwerkkarte.

DHCP

Dynamic Host Configuration Protocol. Es ermöglicht die dynamische Zuweisung von IP-Adressen und weiterer Konfigurationsparameter an Computer in einem Netzwerk.

Well-known-Ports

Die TCP- und UDP-Ports mit Portnummern von 0 bis 1023, die zu fest zugeordneten Diensten gehören.

Promiscous Mode

Besonderer Empfangsmodus von Netzwerkschnittstellen, in dem diese den gesamten einlaufenden Datenverkehr zur Verarbeitung an das Betriebssystem weiterreichen. Normalerweise würden nur die direkt an die Schnittstelle gerichteten Pakete verarbeitet.

LinuxUser 12/2006 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

2 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Boy
3 Jahre her

Hallo. Ich finde kein: modules.pcimap in dem verzeichnis. Ich habe modules und dann alias, builtin, dep, devname, order, softdep und symbols aber leider nicht das gesuchte. Wo finde ich diese Information? Benutze mint in der aktuellen version

Editor
3 Jahre her
Reply to  Boy

Hallo,

bitte beachten Sie, dass der Artikel aus dem Jahr 2006 stammt. Ubuntu und somit auch Linux Mint nutzen die Datei “modules.pcimap” nicht mehr. Weitere Informationen hierzu finden Sie unter folgendem Link:

https://stackoverflow.com/questions/24832032/modules-usbmap-and-modules-pcimap-missing-on-ubuntu-based-distro

Sofern Sie ein Netzwerkproblem haben, können Sie dieses in unserem Forum schildern. Den Link dorthin finden Sie ganz oben im Menü.

Beste Grüße,

Tim Schürmann

Nach oben