ABSTRACT: tcpdump zum debugen von netzwerkproblem wird erklaert. schwerpunkt sind arp requests. AUDIENCE: junior admin SYSTEM: any unix SECTION: basic unix commands AUTHOR: mond COPYRIGHT: GNU Free Documentation Licence http://www.gnu.org/licenses/fdl.txt als wir "ifconfig" besprochen haben waren wir tcpdump schon kuzr kennengelernt. heute wollen wir es genauer betrachten. tcpdump -n -i eth0 bzw tcpdump -ni eth0 zeigt uns alle netzwerk packte auf der ethernetkarte eth0 an. mit control-c koennen wir es wieder abbrechen. das -n besagt dass wir keine aufloesung von IP addressen auf hostnamen haben wollen. was die sache beschleunigt und meist uebersichtlicher macht. aber vorsicht: wenn wir den befehl von remote ausfuehren und z.b. via ssh auf dem rechner eingelogt sind und die bildschirmausgaben von tcpdump wieder ueber die leitung gehen auf der wir sniefen generieren wir ein flut von packeten... um das zu vermeiden schreiben wir z.b.: tcpdump -ni eth0 not port 22 das wuerde keine packte von port 22 anzeigen. oder tcpdump -ni eth0 not host 12.34.56.78 das wuerde keine packte anzeigen die von oder zur IP 12.34.56.78 gehen. wenn das unsere IP ist von der aus wir sshen dann sehen wir unseren eigenen traffic auch nicht. trozdem kann es sein dass noch viel netzwerk traffic auf dem interface ist. damit wir das sehen was wir wollen koennen wir weiter einschraenken: tcpdump -ni eth0 icmp wuerde nur ICMP packte (pings, u.ae.) anzeigen. tcpdump -ni eth0 arp wuerde nur ARP (address resolution protocol) packte anzeigen. (arp packete dienen dazu dass die computer die zuordnung zwischen der ethernet addresse der netzwerkkarte (jede netzwerkkarte weltweit hat (sollte) eine eindeutige addresse vom hersteller sie wird meist als 6 hexadezimalzahlen geschrieben. meist mit : getrennt: 0:30:4f:b:5c:75 waere z.b. eine ethernet addresse (auch "mac" addresse genannt) mit der option -e sehen wir auch die mac addressen der packte. z.b: tcpdump -nei eth0 arp 0:30:4f:b:5c:75 ff:ff:ff:ff:ff:ff 0806 42: arp who-has 33.44.6.1 tell 33.44.6.2 0:2:b3:1f:b1:fb 0:30:4f:b:5c:75 0806 60: arp reply 33.44.6.1 is-at 0:2:b3:1f:b1:fb hier unterhalten sich 2 computer. der erste mit der mac addresse 0:30:4f:b:5c:75 fragt mit einem arp packet: arp who-has 33.44.6.1 tell 33.44.6.2 die ziel mac addresse besteht hier aus latuer ff. das ist die broadcast mac addresse. diese packet bekommen also immer alle computer auf diesem netzwerksegment zu sehen. darauf meldet sich der computer mit der mac addresse 0:2:b3:1f:b1:fb und sagt auf welcher netzwerkkarte die gewuenschte IP addresse gefunden wurde. arp reply 33.44.6.1 is-at 0:2:b3:1f:b1:fb pingt man z.b. auf eine netzwerkaddresse auf der kein computer ist so werden ein paar arp requests ausgesendet. kommt laenger keine antwort so gilt der rechner als unereichbar. arp -an zeigt uns die tabelle an wo der computer die gelernten arp zuordnungen speichert. koennte z.b. so aussehen: ? (33.44.6.1) at 00:02:B3:1F:B1:FB [ether] on eth0 arp zuordnungen sollten nach kurzer zeit (typisch 2 minuten) timeouten und mit neuen arp packeten nachgefragt werden ob die hardware addresse noch gueltig ist. im falle von einer defekten netzwerkverbindung (kein kabel) etc.. werden die einzigen packte die man auf einem tcpdump sieht ausgehende arp packete sein mit denen der computer nachfragt wo denn sein gateway ist. zurueck zu tcpdump man kann die filterregeln auch kombinieren: tcpudmp -ni eth0 host 12.34.56.78 and port 22 wuerde nur ssh traffic von und zu dieser IP anzeigen. EXERCISES: * benutze tcpdump um dir verschiedenartigsten netzwerk traffic anzusehen. achte vorallem auch auf arp packete. REFERENCES: man tcpdump man arp