fragen stichworte

Multicast-Tcpdump und -Abonnements

Vom Multicast-Howto:

IP_ADD_MEMBERSHIP.

Recall that you need to tell the kernel which multicast groups you are interested in. If no process is interested in a group, packets destined to it that arrive to the host are discarded.

Wenn Sie dies nicht tun, werden diese Pakete nicht mit tcpdump angezeigt.

  • Ist es möglich, den gesamten Multicast-Verkehr zu abonnieren, damit ich für den gesamten vorhandenen Verkehr einen TCP-Speicherauszug ausführen kann? Ich würde denken, IGMP erlaubt dies nicht, also wahrscheinlich nicht .. aber vielleicht können Sie einen Switch so konfigurieren, dass er trotzdem den gesamten Multicast-Verkehr sendet. Ist das möglich?
  • Ist es möglich, mit einem Befehlszeilentool ein Abonnement (für eine bestimmte IP-Adresse) durchzuführen? (Hinweis: Ich weiß, wie man das in C .. macht, würde aber lieber ein vorhandenes Werkzeug verwenden und kein eigenes Programm dafür kompilieren.)

antworten

Es hängt von Ihrer Multicast-Infrastruktur ab: Beispielsweise könnten Sie über viele Multicast-Router und verschiedene Regeln für Ihre Switches verfügen (die Abonnements statisch oder dynamisch machen oder sogar für bestimmte Ports/Knoten verboten sind).

Aber wenn Sie eine Multicast-Gruppe abonnieren möchten ... Abonnieren Sie einfach. Senden Sie ein IGMP JOIN-Paket über eine Infrastruktur, für die IGMP-Snooping offensichtlich aktiviert ist. Sie können ein IGMP-Paket mit verschiedenen Tools erstellen.

Verwenden Sie iperf, um einen Schritt auf eine höhere Ebene zu gehen, um eine Multicast-Gruppe zu abonnieren. Wenn Ihre Netzwerkinfrastruktur nicht zu komplex ist und Sie "berechtigt" sind, eine Multicast-Gruppe zu abonnieren, verwenden Sie Folgendes:

iperf -s -u -B 239.100.100.100 Dabei ist 239.100.100.100 Ihre Multicast-Gruppenadresse.

tcpdump gleichzeitig, um einen detaillierten Bericht zu erhalten.

Ich denke, dass iperf nur IGMP v1 und v2 unterstützt. Wenn Sie ein IGMP v3 JOIN-Paket erstellen möchten, sollte es nicht zu schwer sein, ein Programm zu schreiben, wie Sie bereits sagten. Es gibt aber noch viel mehr Tools, die wahrscheinlich dasselbe tun würden.

Die Linked-to-Seite des Multicast-HOWTO sagt nichts über tcpdump aus.

Tcpdump verwendet libpcap, um Netzwerkpakete zu erfassen, und bei Ethernet unterstützt libpcap beide:

  • Promiscuous-Modus, in dem der Netzwerkadapter jedes Paket unabhängig von der Zieladresse an den Host liefert und der Netzwerkstapel jedes Paket, das den Filter passiert, an den Erfassungsmechanismus liefert und

  • nicht-promiskuitiver Modus, in dem der Netzwerkadapter Unicast-Pakete, Broadcast-Pakete und Multicast-Pakete an den Host liefert, deren Auslieferung konfiguriert ist, und der Netzwerkstapel alle diese Pakete liefert, die den Capture-Filter an den Server übergeben Fangmechanismus.

Tcpdump verwendet standardmäßig den Promiscuous-Modus; In diesem Modus sehen Sie sogar Unicast-Pakete, die nicht an Ihren Host gesendet werden (solange Sie sich nicht in einem geswitchten Netzwerk oder in einem geswitchten Netzwerk befinden, sondern an einen "Mirror" -Port angeschlossen sind, der den gesamten Datenverkehr empfängt).

Wenn Sie tcpdump das -p -Flag übergeben, wird der nicht promiske Modus angefordert. In diesem Fall sehen Sie nur die Pakete, die Ihr Rechner "bekommen" sollte; Wenn in diesem Fall kein Prozess ein Interesse an einer bestimmten Multicast-Gruppe registriert hat, sehen Sie keine Pakete, die an die Multicast-Adresse dieser Gruppe gesendet werden. In diesem Fall handelt es sich jedoch nicht um einen Fehler, sondern um eine Funktion. t nichts mit diesen Paketen machen.

Wenn Sie also alle Pakete sehen wollen (Unicast-Pakete an alle Hosts, Multicast-Pakete an alle Multicast-Adressen und Broadcast-Pakete), führen Sie tcpdump (oder Wireshark oder was auch immer) im Promiscuous-Modus aus Netzwerk, auf einem "Mirror-Port" oder "SPAN-Port" oder was auch immer der Switch-Anbieter nennt (wenn er "Mirror-Ports" unterstützt).

Siehe die Wireshark-Wiki-Seite zur Ethernet-Paketerfassung für viele Details zum Promiscuous-Modus und zu geswitchten Netzwerken; Die Informationen auf dieser Seite gelten für alle Paket-Sniffer, einschließlich tcpdump, nicht nur für Wireshark.