Netzwerkdiagnose-Tools

Aus LinuxUser 08/2006

Netzwerkdiagnose-Tools

Wege durchs Netz

Linux hat die richtigen Tools an Bord, um Fehler im Netz aufzuspüren und den Datenpaketen den Weg wieder frei zu machen.

Läuft die Internetverbindung nicht oder erreichen Sie Computer im lokalen Netz nicht, ist guter Rat oft teuer. Verschiedene Kommandozeilentools helfen bei der Fehlersuche im Netz. So testen Sie beispielsweise mit ping und traceroute die Erreichbarkeit anderer Computer, kontaktieren mit host und dig Nameserver und schauen mit netstat nach, was Ihr Rechner gerade im Netzwerk unternimmt.

Wer bin ich?

Die Netzwerkschnittstellen Ihres eigenen Rechners untersuchen Sie mit dem Programm ifconfig. Das praktische kleine Tool zeigt nicht nur Informationen zur aktuellen Konfiguration an, sondern hilft auch beim Einrichten der Schnittstellen. Um die aktuellen Einstellungen anzuzeigen, rufen Sie /sbin/ifconfig ohne weitere Parameter auf. Da das Programm in /sbin und damit selten im $PATH eines Benutzers liegt, müssen Sie den vollen Pfad angeben.

Listing 1 zeigt das Kommando und die Ausgabe, in der jede Schnittstelle ihren eigenen Abschnitt hat. Der Rechner im Beispiel verfügt über eine Netzwerkkarte (eth0) mit der die IP-Adresse (inet addr) 10.195.34.14. Weiterhin sehen Sie Informationen zur Broadcast-Adresse (Bcast) und Subnetzmaske (Mask). Dass die Schnittstelle aktiv ist, erkennen Sie an UP. RX zeigt die Anzahl empfangener, TX diejenige gesendeter Pakete an.

Weiterhin ist das so genannte Loopback-Interface (lo) konfiguriert. Über diese Schnittstelle lässt sich der Rechner intern stets unter der IP-Adresse 127.0.0.1 und den Namen localhost erreichen. Als dritte Schnittstelle sehen Sie im Listing einen DSL-Anschluss ppp0; der Rechner besitzt im Internet die Adresse 11.22.33.44.

Listing 1

$ /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr 00:30:48:70:4B:40
          inet addr:10.195.34.14  Bcast:10.195.34.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          (…)
          RX packets:1162180567 errors:0 dropped:449 overruns:0 frame:0
          TX packets:2046191782 errors:0 dropped:0 overruns:0 carrier:0
          (…)
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          (…)
ppp0      Link encap:Point-Point Protocol
          inet addr:11.22.33.44  P-t-P:11.22.33.55 Mask:255.255.255.0
          (…)

Wer sind die anderen?

Dank einer praktischen Einrichtung, die sich Domain Name Service nennt, muss sich niemand komplizierte IP-Adressen merken, sondern kann Rechner über ihren Domainnamen kontaktieren. Dass die DNS-Konfiguration auf Ihrer Seite richtig funktioniert, testen Sie beispielsweise mit dig oder host auf der Kommandozeile. Beiden Tools übergeben Sie als Argument entweder einen Domainnamen oder eine IP-Adresse – die Umwandlung funktioniert in beide Richtungen.

Ein Beispiel für eine Dig-Anfrage sehen Sie in Listing 2. Neben der Frage (QUESTION SECTION) präsentiert dig auch die Antwort (ANSWER SECTION). Welche IP-Adresse der eingebene Domainname hat, steht in diesem Bereich hinter A. In die andere Richtung, also von IP-Adresse zum Domainname, geht es, wenn Sie zusätzlich die Option -x einsetzen.

Listing 2

$ dig www.linux-user.de
; <<>> DiG 9.2.4 <<>> www.linux-user.de
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15715
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 1
;; QUESTION SECTION:
;www.linux-user.de.             IN      A
;; ANSWER SECTION:
www.linux-user.de.      73628   IN      A       87.106.38.241
(…)

Das Tool host braucht zur Richtungsangabe keinen Parameter; es verrät nicht ganz so viel wie dig, aber nimmt ohne Probleme IPs und Domainnamen an. Ein Beispiel finden Sie in Listing 3: Oft teilen sich mehrere Domainnamen dieselbe IP-Adresse, etwa wenn ein Webserver mehrere Seiten hostet. Genauso kann ein Domainname auf mehrere IP-Adressen zeigen: Häufig frequentierte Webseiten, wie Google oder eBay, setzen aus Performance-Gründen mehrere Webserver ein.

Listing 3

$ host www.google.com
www.google.com is an alias for www.l.google.com.
www.l.google.com has address 66.102.9.104
www.l.google.com has address 66.102.9.147
www.l.google.com has address 66.102.9.99

Gut verbunden?

Ist Ihr Rechner nicht direkt, sondern über einen Router mit dem Internet verbunden, dann überprüfen Sie mit dem Kommando route die so genannte Routing-Tabelle. Auch diesen Befehl rufen Sie unter Angabe des vollen Pfads auf. Geben Sie weiterhin den Parameter -n ein, um statt der Hostnamen die IP-Adressen anzuzeigen.

Als Ausgabe erhalten Sie eine Tabelle, in deren erster Spalte das Ziel steht (Destination). In der letzten Spalte finden Sie die Schnittstelle, über welche die der Paketversand erfolgt. Im Beispiel (Listing 4) werden also alle Pakete an IP-Adressen, die mit 10.195.34. beginnen, über das Netzwerk-Interface eth0 verschickt. Den Anschluss ans Internet sehen Sie in der zweiten Zeile: Beginnt die Empfängeradresse nicht mit 10.195.34., wird das Paket an 10.195.34.5 (den Router) weitergereicht, der sich dann um die Verteilung kümmert.

Listing 4

$ /sbin/route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.195.34.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         10.195.34.5     0.0.0.0         UG    0      0        0 eth0

Ping – Pong

Ob ein Rechner generell erreichbar ist, testen Sie mit dem Befehl ping. Das Programm versteht als Angabe IP-Adressen sowie Rechnernamen und misst die Antwortzeiten der Gegenstelle. Um zu testen, ob Ihre Internetverbindung funktioniert, pingen Sie einen Rechner außerhalb des eigenen Netzwerks an, mit ping -c 8 www.google.de.

Das Programm schickt so genannte ICMP-Pakete an den angegebenen Computer, der in der Regel ebenfalls mit ICMP-Paketen antwortet. Ohne weitere Parameterangabe läuft das solange, bis Sie ping mit der Tastenkombination [Strg]+[C] explizit beenden. Mit der Option -c Anzahl schränken sie die Anzahl der auszutauschenden Pakete ein. Nach dem Ende des Paketwechsels zeigt Ping eine Statistik, die Aufschluss über die Übertragungszeiten und verloren gegangene Pakete gibt (Abbildung 1).

Abbildung 1: Mit Ping überprüfen Sie, ob ein Rechner erreichbar ist.

Abbildung 1: Mit Ping überprüfen Sie, ob ein Rechner erreichbar ist.

Mit ping kommen Sie einer ganzen Reihe von gängigen Fehlern schnell auf die Spur:

  • Starten Sie das Programm, es passiert nichts, und nach kurzer Zeit erscheint eine Meldung wie ping: unknown host www.google.de, deutet das auf ein DNS-Problem hin. Versuchen Sie in dem Fall, eine IP-Adresse anzupingen, um die Netzwerkeinstellungen zu testen.
  • Läuft alles ein bisschen schleppend und ping meldet zunächst nichts, zeigt dann aber die normale Ausgabe an, ist der erste Nameserver höchstwahrscheinlich nicht erreichbar oder hat ein anderes Problem. In dem Fall springt nach einiger Zeit der zweite konfigurierte Nameserver ein.
  • Erscheint keine Meldung, blockiert die Firewall der Gegenseite möglicherweise ICMP-Pakete. Versuchen Sie, eine andere Adresse zu kontaktieren.
  • Verloren gegangene Pakete (packet loss) deuten nicht unbedingt auf ein Problem auf Ihrer Seite hin – manchmal ist schlicht der Router der Gegenstelle zu beschäftigt.

Der richtige Weg

Zwar sagt Ping etwas über die Erreichbarkeit von Servern aus; Sie erfahren aber nicht, welchen Weg die Pakete durchs Netz nehmen. Um das herauszufinden, setzen Sie das Programm traceroute ein. Auch dieses Tool rufen Sie zusammen mit einer IP-Adresse oder einem Hostnamen auf (Abbildung 2).

Abbildung 2: Das Programm Traceroute zeigt Zwischenstationen auf dem Weg von Ihrem zu einem anderen Rechner an.

Abbildung 2: Das Programm Traceroute zeigt Zwischenstationen auf dem Weg von Ihrem zu einem anderen Rechner an.

Ebenso wie Ping schickt auch Traceroute Testpakete auf die Reise. Diese tragen eine Art Haltbarkeitsdatum (TTL = “Time To Live”). Kommt ein “abgelaufenes” Paket bei einem Rechner ankommt, schickt er eine Fehlermeldung an den Absender und wirft das Paket weg. Ist das Paket noch gültig, verringert der Rechner die TTL um 1 und reicht es an die nächste Station weiter.

Diese Fehlermeldungen zeichnen den Weg auf: Traceroute erhöht in jedem Schritt die Haltbarkeit, so dass die Pakete immer eine Station weiter wandern: Ein Päckchen mit TTL 2 erreicht den zweiten Zwischenrechner, TTL 3 kommt bis zur dritten Station und so fort. Pro Rechner wiederholt traceroute das ganze dreimal und wartet drei Sekunden auf eine Antwort der einzelnen Rechner.

Dabei kann es passieren, dass Traceroute unterschiedliche Wege beschreitet – kontaktieren Sie zweimal denselben Rechner und sehen unterschiedliche Zwischenstationen, ist das kein Grund zur Sorge. Sehen Sie wie in Abbildung 2 Sternchen, blockiert wahrscheinlich eine Firewall eine Zwischenstation, manchmal gehen Päckchen auch schlicht verloren.

Standardmäßig verschickt Traceroute UDP-Pakete; mit der Option -I teilen Sie dem Programm mit, dass Sie lieber ICMP-Pakete versenden wollen. Sehen Sie in der Ausgabe ungewöhnlich viele Sternchen, rennt sich das Tool also an diversen Firewalls den Kopf ein, greifen Sie zu tcptraceroute. Dieses Programm verschickt TCP-Pakete – in der Vorgabe an Port 80, auf dem normalerweise Webserver lauschen. Wer genau weiß, dass auf dem Zielrechner kein Webserver läuft, hängt den gewünschten Port einfach an den Programmaufruf an. Um eine Maschine also auf Port 22 (SSH) zu kontaktieren, tippen Sie beispielsweise:

$ tcptraceroute Ziel 22

Teamspieler Mtr

Eine gelungene Kombination aus Ping und Traceroute ist mtr. Sie starten das Programm ebenfalls unter Angabe des Zielrechners und sehen in der anschließenden, sich selbständig aktualisierenden Ausgabe, welchen Weg die Pakete wandern. Dabei zeigt Mtr nicht nur die einzelnen Stationen an, sondern pingt immer weiter, bis Sie das Programm explizit mit Druck auf [Q] beenden. Alternativ geben Sie schon beim Start vor, dass nach einer bestimmten Anzahl Schluss ist; so sorgt mtr -c 12 Ziel dafür, dass Mtr nach einem Dutzend Paketen die Arbeit einstellt.

Abbildung 3: Mtr kombiniert die Funktionen von Ping und Traceroute.

Abbildung 3: Mtr kombiniert die Funktionen von Ping und Traceroute.

Was geht?

Ein weiteres Programm, mit dem Sie Fehler oder Schwachpunkte in der Konfiguration des Netzwerks aufspüren, ist netstat. Die Manpage liest sich wie ein Roman, wir zeigen hier nur ein paar Beispiele. Ohne weitere Optionen gibt netstat den Zustand aller offenen Sockets an.

Die Option -e zeigt zusätzliche Informationen zur Benutzerkennung (UID) an, -p die Prozessnummer (PID) sowie den Namen des Programms, das den Socket geöffnet hat. Der Parameter -a sorgt für die Ausgabe aller Dienste – der aktiven und der auf Verbindungen wartenden Serversockets. Wer sich dabei nur für TCP-Verbindungen interessiert, hängt zusätzlich die Option -t. Im Beispiel aus Listing 5 laufen sowohl FTP als auch SMTP als Dienst. Ein Benutzer greift gerade per FTP auf die Maschine zu, ein anderer surft im Netz.

Listing 5

$ netstat -atp | less
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
(…)
tcp        0      0 *:ftp                   *?                     LISTEN     -
tcp        0      0 *:smtp                  *?                     LISTEN     -
(…)
tcp        0      0 <rechner>:ftp           host217-36-121-129:1543 ESTABLISHED-
tcp        0  83308 <rechner>:www           ppp117-248.lns1.bn:2963 ESTABLISHED-            @KE:

Glossar

ICMP

Das Internet Control Message Protocol ist ein Teil der Internetprotokollfamilie; es benutzt (ebenso wie TCP und UDP) das Internet Protocol (IP). ICMP wird zum Austausch von Fehler- und Informationsmeldungen eingesetzt und transportiert anstelle von Nutzerdaten Statusinformationen über das Netzwerk.

LinuxUser 08/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.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben