Netzwerkprobleme debuggen

Aus wiki.freifunk.net
Wechseln zu: Navigation, Suche

Dieser Artikel beschreibt die Vorgehensweise zum Debuggen von Verbindungsproblemen und stellt dazu nützliche Werkzeuge vor.

Einloggen

Via SSH auf dem Router einloggen.

IP-Adresse vorhanden und Device UP?

ifconfig

Beispielausgabe für Device ath0:

 root@10-0-0-1:~# ifconfig
 [...]
 ath0      Link encap:Ethernet  HWaddr 00:0B:6B:XY:XY:XY  
           inet addr:10.0.0.1  Bcast:10.0.255.255  Mask:255.255.0.0
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:507 errors:0 dropped:0 overruns:0 frame:0
           TX packets:114 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:0 
           RX bytes:147932 (144.4 KiB)  TX bytes:27919 (27.2 KiB)
 [...]

Wir sehen hier, das Device hat eine IP (10.0.0.1 mit Netzmaske 255.255.0.0) und der Status ist UP. Auch werden Pakete empfangen und gesendet. (RX/TX bytes)

ip

Alternativ kann man auch ip verwenden:

 root@10-0-0-1:~# ip a
 [...]
 8: ath0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN 
     link/ether 00:0b:6b:XY:XY:XY brd ff:ff:ff:ff:ff:ff
     inet 10.0.0.1/16 brd 10.0.255.255 scope global ath0
[...]

Routen vorhanden?

Wir wollen feststellen, ob eine Defaultroute vorhanden ist und ob Routen von OLSR, B.A.T.M.A.N. oder einem sonstigen Routingdämon gesetzt wurden.

route

 root@10-11-0-101:~# route
 [...]
 10.0.0.3        10.0.0.2        255.255.255.255 UGH   2      0        0 ath0
 [...]
 default         192.168.178.1   0.0.0.0         UG    0      0        0 eth0
 [...]
 

Die erste Route ist eine Hostroute die vom Routingdämon gesetzt wurde. Sie besagt, dass wir 10.0.0.3 über den Gateway 10.0.0.2 erreichen können. Davon kann es in großen Netzen eine ganze Menge geben. Darunter steht hier die Defaultroute die 192.168.178.1 als Gateway hat.

ip r

Auch mit "ip r" kann man sich die Routing-Tabelle ausgeben lassen:

 root@10-11-0-1:~# ip r
 [...]
 10.1.0.3 via 10.1.0.2 dev ath0  metric 2 
 [...]
 default via 192.168.178.1 dev eth0

Verbindung prüfen

Ping

Mit ping kann überprüft werden, ob ein anderer Rechner/Knoten erreichbar ist. Dabei empfiehlt es sich zunächst den Ping auf eine IP-Adresse zu testen, hier z.B. 8.8.8.8 (ein nameserver von google).

 root@10-0-0-1:~# ping 8.8.8.8
 PING 8.8.8.8 (8.8.8.8): 56 data bytes
 64 bytes from 8.8.8.8: seq=0 ttl=55 time=54.293 ms
 [...]

Kommen hier Antworten (64 bytes from 8.8.8.8) dann erreichen wir den Rechner.

Im nächsten Schritt können wir einen Ping auf eine Domain versuchen, damit sehen wir auch gleich ob die Auflösung von Domainnamen zu IP-Adressen funktioniert. Bei Erfolg sieht das so aus:

 root@10-0-0-1:~# ping heise.de
 PING heise.de (193.99.144.80): 56 data bytes
 64 bytes from 193.99.144.80: seq=0 ttl=248 time=46.744 ms
 [...]

traceroute

Traceroute zeigt die Route eines Pakets durchs Netz. Damit lässt sich feststellen, wo Pakete "stecken" bleiben.

Zunächst ein erfolgreiches traceroute:

 root@10-0-0-1:~# traceroute 8.8.8.8   
 traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 38 byte packets
 1  192.168.178.1 (192.168.178)  0.525 ms  0.446 ms  0.363 ms
 2  rdsl-agsb-de01.nw.mediaways.net (213.20.57.2)  61.494 ms  36.844 ms  35.408 ms
 [...]
 11  209.85.254.126 (209.85.254.126)  51.096 ms  209.85.249.162 (209.85.249.162)  54.538 ms  209.85.254.126 (209.85.254.126)  45.853 ms
 12  google-public-dns-a.google.com (8.8.8.8)  66.212 ms  46.839 ms  48.698 ms

Der erste Hop ist dabei der Defaultgateway aus der Routingtabelle. Danach gehts weiter zum Provider und kommt bei Hop 12 schliesslich am Ziel an.

Versuchen wir traceroute zu einem nicht erreichbaren Rechner, sieht das dagegen so aus:

root@10-0-0-1:~# traceroute 8.3.3.3   
traceroute to 8.3.3.3 (8.3.3.3), 30 hops max, 38 byte packets
 1  192.168.178.1 (192.168.178.1)  0.499 ms  0.431 ms  0.354 ms
 2  rdsl-agsb-de01.nw.mediaways.net (213.20.57.2)  35.736 ms  36.867 ms  35.637 ms
 [...]
16  ge-4-0-60.ipcolo1.LosAngeles1.Level3.net (4.69.144.46)  203.102 ms !H  *  214.853 ms !H

Bei Hop 16 gehts also nicht mehr weiter.

Pakete anzeigen

tcpdump

Mit tcpdump kann man sich Pakete im Netzwerktraffic anzeigen lassen um so Probleme zu finden. Um z.B alle Pakete auf der Schnittstelle ath0 anzuzeigen:

 tcpdump -i ath0

iptables Firewall

Um auszuschliessen, dass die Netzwerkprobleme mit der Firewall zuammenhängen ist es oft hilfreich, zu Testzwecken in der Firewall alles zu erlauben:

 iptables -I INPUT -j ACCEPT
 iptables -I FORWARD -j ACCEPT
 iptables -I OUTPUT -j ACCEPT