Grundausstattung Bordwerkzeug TCP/IP

Willemers Informatik-Ecke

UNIX stellt einige Werkzeuge für das Netzwerk zur Verfügung. Das Programm ping wurde bereits behandelt. Hier werden noch weitere nützliche Helfer vorgestellt, die man kennen sollte.

ICMP und ping

Die Verbindung zwischen zwei Rechnern wird am einfachsten über ping geprüft. ping gehört zur Protokollfamilie ICMP (Internet Control Message Protocol). ICMP-Pakete werden versandt, wenn

ping prüft Leitungen, nicht Rechner

Die Tatsache, dass ein Rechner auf ein Pingsignal reagiert, heißt nicht zwingend, dass er auch arbeitsfähig ist. So reagiert das OS/2 PC/TCP sogar noch, wenn der Rechner in den Systemabschluss gefahren wurde und noch nicht ausgeschaltet wurde. Aber es sagt genau das, was es soll, dass nämlich eine Netzwerkverbindung zu dem Rechner besteht und zumindest ein minimaler TCP/IP Service läuft.

Mit ping kann man recht schnell einige Problemen erkennen bzw. ausschließen. Hier sind ein paar Handgriffe und ihre Interpretation genannt. Als Beispiel dient ein Computer mit der TCP/IP Nummer 192.168.109.144 namens gaston.

ping auf die eigene IP-Adresse
Dieser Test ist gar nicht so unsinnig, wie es sich anhört. Manchmal hat man einfach die falsche IP-Nummer eingetragen oder der Netzadapter ist einfach nicht ok. Beispiel:

ping 192.168.109.144

ping auf IP-Adresse im eigenen Subnetz
Ist der Anschluss an das Netz ok? Arbeitet die eigene TCP/IP Installation?

ping 192.168.109.99

ping auf den eigenen Hostnamen
Je nachdem, ob der Name per /etc/hosts oder DNS aufgelöst wird, weiß man eine rudimentäre Namensauflösung besitzt.

ping gaston

ping auf einen Rechner hinter dem Router
Meldet der eigene Rechner: >>no route to host<<, stimmen die Routing Tabellen nicht. Kommt die Meldung vom Router, hat er ein Problem. Kommt gar keine Antwort, wird der adressierte Rechner ein Problem mit dem Routing haben oder einfach abgeschaltet sein.

ping 10.4.4.4

ping mit großen Paketen
Man kann den ping als Option größere Pakete senden lassen. Fallen dabei offensichtlich Pakete aus, gibt es Rauschen auf der Leitung oder die Fragmentierung eines beteiligten Rechners klappt nicht. Letzteres passierte auf alten SCO-Versionen, wenn ihnen die Netzwerkpuffer ausgingen. Typischer ist allerdings dieses Problem bei Koaxial Ethernetverbindungen, die oft Probleme durch Wackelkontakte inbesondere an den Abschlusswiderständen haben.

Mit großen Paketen kann man auch eine hohe Netzlast simulieren.
ping -s 40000 192.168.109.143

Wenn ein Ping partout nicht durchkommt, kann es sein, dass eine Firewall ICMP-Pakete nicht durchlässt. Da ICMP oft auch für Angriffe aus dem Internet verwendet werden, werden sie inzwischen immer häufiger von Firewalls nicht mehr durchgelassen. Anfällig sind allerdings höchstens ältere Systeme.
1)

Verbindung zwischen Prozessen: netstat

Die Verbindung zwischen Prozessen wird mit Hilfe des Befehls netstat angezeigt. Bei jeder Verbindung werden die beiden Verbindungsendpunkte aufgelistet. Dies ist die IP-Adresse gefolgt von dem verwendeten Port.

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 gaston.willemer.edu:ftp silver.willemer.ed:1072 ESTABLISHED
tcp        0      0 gaston.willemer.:telnet silver.willemer.ed:1071 ESTABLISHED
tcp        1      0 217.3.183.140:1253      195.30.193.73:www-http  CLOSE_WAIT
tcp        1      0 217.3.183.140:1252      195.30.193.73:www-http  CLOSE_WAIT
tcp        1      0 217.3.183.140:1251      195.30.193.73:www-http  CLOSE_WAIT               

Local Address zeigt die Sockets dieser Maschine und Foreign Address die verbundenen Maschinen. Die Zahlen hinter den Maschinen sind die Sockets, die durch die Namen der Ports ersetzt sind, sofern sie in der /etc/services aufgeführt sind.

Verbindungsstatus

Unter State steht der Status der Verbindung. Er ist ESTABLISHED, wenn die Verbindung angefordert wurde und von der anderen Seite bestätigt ist. FIN oder FIN_WAIT zeigt an, dass eine Verbindung abgebaut wurde. Beim Aufbau einer Verbindung sendet der Client eine SYN-Anfrage. Der Server sendet daraufhin ein SYN-ACK. Der Client sendet anschließend ein ACK-Data.

Einseitig abgebaute Verbindungen blockieren

Bei abbauenden Verbindungen entsteht das Problem, dass der Port nicht sofort wieder vergeben werden kann. Ist also beispielsweise ein Server-Prozess abgestürzt, der eine Verbindung auf den well-known port hielt, kann er erst wieder gestartet werden, wenn die letzte Verbindung zu diesem Port aufgelöst wurde. Das bedeutet, dass alle Clients erst geschlossen werden müssen. Ist das Neustarten des Servers zeitkritisch, kann es sinnvoll sein, die Maschine kurz mit ifconfig le0 down oder gar durch Versetzen in den Single User Modus von den Verbindungsaufforderungen zu befreien.

Anzeigen der Netzwerkadapter

Mit dem Befehl netstat -i kann man sich die vorhandenen Netzwerkschnittstellen anzeigen lassen. Dieser Befehl zeigt auch Informationen über die Pakete, die über die Schnittstelle gelaufen sind. Neben den statischen Ethernetadaptern gibt es aber auch virtuelle Adapter wie ISDN- oder Modemverbindungen, die nur im Augenblick einer Verbindung ansprechbar sind.

gaston> netstat -i
Kernel Schnittstellentabelle
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR   TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0   1500   0       0      0      0      0       4      0      0      0 BMRU
lo    16436   0     259      0      0      0     259      0      0      0 LRU
ppp0   1524   0      31      0      0      0      35      0      0      0 MOPRU
gaston> netstat -i
Kernel Schnittstellentabelle
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR   TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0   1500   0       0      0      0      0       4      0      0      0 BMRU
lo    16436   0     421      0      0      0     421      0      0      0 LRU

In der linken Spalte finden sich die Schnittstellen des Rechners. In der nächsten Spalte die Paketgröße. Es folgen Statistiken über die versandten und die fehlerhaften Pakete. Diese Zahlen werden aufsummiert und sind bei Rechnern, die lange im Netz stehen, manchmal recht hoch.

Netzdevices kommen und gehen

Im Beispiel sieht man bei der ersten Anfrage ein ppp0-Device. Dies ist nur solange vorhanden, wie der Rechner Kontakt zum Internet hat. Beim zweiten Aufruf war die Verbindung bereits wieder geschlossen.

Das folgende Ausgabe stammt von einer HP-UX Maschine. Man sieht hier, dass nicht aktuell aktive Devices zwar angezeigt werden aber nicht belegt sind.

hpsrv# netstat -i
Name  Mtu   Network         Address            Ipkts Ierrs    Opkts Oerrs  Coll
ni0*  0     none            none                   0     0        0     0     0
ni1*  0     none            none                   0     0        0     0     0
lo0   4608  loopback        localhost             86     0       86     0     0
lan0  1497  192.168.109     hpsrv                 75     0       63     0     0
hpsrv#

In den Spalten Ipkts und Opkts werden die Anzahl der Pakete seit dem Booten angezeigt. Ierrs und Oerrs sind dabei die Fehlerpakete. Dabei steht I für Input und O für Output. Damit kann der Datenverkehr genauer analysiert werden. Die Spalte Coll zeigt die Kollision von Paketen auf dem Netz. Bei Ethernet gehören Kollisionen zum Protokoll. Liegt der Anteil aber merkbar hoch, kommt es häufig zu Kollisionen. Dann sollte man versuchen, die Netzlast zu reduzieren.

Anzeigen der Routingtabelle

Zum Anzeigen und Kontrolle der eingetragenen Routen dient der Befehl netstat mit der Option -r.

gaston# netstat -r
Kernel IP routing table
Destination    Gateway Genmask       Flags MSS Window irtt Iface
192.168.109.0  *       255.255.255.0 U       0 0         0 eth0
loopback       *       255.0.0.0     U       0 0         0 lo

Dieser Rechner hat nur einen Netzadapter und loopback. Es gibt auch nur die eine Route auf sein eigenes Netz. Die angezeigten Flags haben die folgende Bedeutung

Flag Bedeutung
U used: die Route wird verwendet
G gateway: die Route zeigt auf ein ganzes Netz über ein Gateway
H host: diese Route zeigt nur auf einen einzelnen Rechner
D dumped: wurde durch dynamisches Routen abgeschaltet

Routen verfolgen: traceroute

Der Befehl traceroute (tracerou im PCTCP, tracert unter MS-Windows) liefert Informationen darüber, welche Gateways auf dem Weg von diesem Rechner zum Zielrechner passiert werden. Richtig interessant ist der Befehl natürlich, wenn man Internetadressen anfragt. Als Parameter nimmt der Aufruf Rechnername oder IP-Nummer. Als Beispiel wird die Route zur www.willemer.de verfolgt.

gaston#  traceroute www.willemer.de
traceroute to www.willemer.de (212.227.118.90), 30 hops max, 40 byte packets
 1  217.5.127.105 (217.5.127.105)  59 ms  50 ms  50 ms
 2  217.5.127.94 (217.5.127.94)  50 ms  50 ms  50 ms
 3  FL-EB1.FL.DE.net.dtag.de (62.154.11.159)  50 ms  50 ms  50 ms
 4  F-gw12.F.net.DTAG.DE (62.154.17.194)  60 ms  60 ms  60 ms
 5  62.156.128.106 (62.156.128.106)  60 ms  60 ms  70 ms
 6  so-1100.gw-backbone-a.ka.schlund.net (212.227.112.85)  60 ms  60 ms  61 ms
 7  c1.gw-core-a.ka.schlund.net (195.20.224.19)  59 ms  70 ms  60 ms
 8  * kundenserver.de (212.227.118.90)  71 ms  70 ms
gaston#

Wenn bei der Routenverfolgung nur noch Sterne angezeigt werden, dann deutet dies auf einen Fehler ab der letzten angezeigten, also funktionierenden Route hin. Interessant ist diese Information um festzustellen, ob ein Problem innerhalb oder außerhalb der eigenen Routenverantwortlichkeit liegt und um evtl. weitere Schritte einleiten zu können.

HP-UX: lanadmin

HP-UX stellt mit dem lanadm ein interaktives Programm zur Verfügung, mit dem man Statistiken auf der Paketebene sehen kann. Nach dem Starten erreicht man ein Menü, von dessen Punkten lan interessant ist. Im nächsten Menü kann man die Statistik wieder zurücksetzen. Mit dem Kommando display erhält mein eine Statistik. Mit clear werden die Statistiken zurückgesetzt.


1 vgl. Ziegler, Robert: Linux Firewalls. Markt+Technik, München, 2000. S. 61.

Diese Seite basiert auf Inhalten aus dem Buch Arnold Willemer: Wie werde ich UNIX-Guru
Verlagsrechte bei galileo computing


Homepage (C) Copyright 2002 Arnold Willemer