Ich bin ziemlich neu bei tcpdump. Ich habe es nie benutzt, außer für sehr triviale Aufgaben.
Kürzlich wurde ich gebeten, den folgenden Job zu erledigen.
Was ich habe: Ein Server mit einer Netzwerkschnittstelle, die mit einem Switch verbunden ist. Der gesamte Datenverkehr auf diesem Switch wird auf diesen Server gespiegelt. Was ich brauche: Speichern Sie den gesamten Datenverkehr in einer Datei im PCAP-Format. Die Datei sollte enthalten
- Nur ausgehender oder eingehender Verkehr ist interessiert. Datenverkehr, der nur innerhalb des Subnetzes übertragen wird, wird nicht benötigt und sollte nach Möglichkeit nicht protokolliert werden.
- Der gesamte Multicast- und Broadcast-Verkehr ist nicht interessiert und sollte nach Möglichkeit ignoriert werden
- Ich brauche nur Ethernet -> IPv4 -> TCP, UDP und ICMP. Andere sind nicht interessiert und sollten nach Möglichkeit vernachlässigt werden
- Ich brauche keinen Nachrichtentext. Header (Ethernet, IP und TCP / UDP / ICMP) reichen aus. Daher sollte der Körper nach Möglichkeit nicht protokolliert werden
Der Datenverkehr würde tagsüber ~ 100 MByte / s betragen, und für meine Arbeit ist ein Paketverlust nicht tolerierbar (er muss 24 Stunden lang ununterbrochen sein ).
Wie oben erwähnt, brauche ich sowieso nicht alles.
Frage:
- Wie kann ich den Job machen?
- Worauf sollte ich achten, damit alle Daten (fast) reibungslos und verlustfrei erfasst werden.
Vielen Dank.
Antworten:
Meine beste Wette wäre, etwas zu verwenden wie:
Wo der "knifflige" Teil darin besteht, einen korrekten Wert für den Parameter "-s" (snaplen) zu wählen (snaplen ist die maximale Länge des Pakets, das tcpdump erfasst).
Aus den Manpages von tcpdump:
In diesem Beispiel verwende ich 96, um "fast" sicher zu sein, dass ich 100% der Header-Werte für Ethernet + IP + (icmp || udp || tcp) erfassen würde.
Wenn Ihr Datenverkehr über IP- oder TCP-Optionen (dh Zeitstempel) verfügt und Sie diese Informationen auch erfassen möchten, müssen Sie mit dem Parameter snaplen spielen (dh ihn erhöhen / verringern).
Falls die Länge der Header Ihres Pakets kleiner als snaplen ist, können Sie auch einen Teil der Nutzlast erfassen.
Zum Lesen des erfassten Datenverkehrs würde ich Folgendes verwenden:
Wo der wichtige Teil ist, verwenden Sie die Option "-e", damit Sie die Ethernet-Header drucken können.
Diese Seite gibt Ihnen eine Vorstellung von der Größe der Ethernet / TCP / UDP-Header unter verschiedenen Umständen und kann Ihnen helfen, einen "richtigen" Wert für den Parameter snaplen zu finden.
quelle