Das sieht mir doch komisch aus: dmesg von dem Play:5, der mit Ethernet am Netz hängt:
(3)eth0: Promiscuous mode enabled. (3)device eth0 entered promiscuous mode (3)eth1: Promiscuous mode enabled. (3)device eth1 entered promiscuous mode
Äh, promiscuous mode ist die Betriebsart, in der die Netzkarte jedes Paket aufnimmt, was bei ihr vorbeigeflogen kommt, auch wenn es gar nicht für sie bestimmt ist. Es ist sozusagen der Schnüffel-Mode.
Warum macht der Sonos das?
Um die Frage eventuell beantworten zu können, schnüffel ich eben selber 😉 Natürlich kann ich nicht sehen, was der Sonos mit den Daten macht, die bei ihm vorbeigeflogen kommen. promiscuous mode ist rein passiv, er sammelt die Pakete nur ein. Aber das macht nur Sinn, wenn man die Daten verarbeitet und das Ergebnis irgendwo ablädt — und das müßte über den Router laufen. Da mein Routerchen mit OpenWRT läuft, ist das kein Problem, nur: wohin mit den Daten? Ich will die ja später auswerten, und der Router hat kaum „Festplattenplatz“. Irgendwie müßten die Daten auf einen anderen Rechner mit mehr Kapazitäten kommen…
Und hier kommt netcat ins Spiel: Wir starten einfach auf der Dockstar (dem Rechner, auf dem die Logs dann ankommen sollen) einen netcat-Prozss, der an Port 999 lauscht und lassen ihn in die Datei sonos.pcap schreiben:
nc -l -p 9999 > sonos.pcap
Und nun auf dem Routerchen noch tcpdump starten und via netcat aufs Ziel schreiben lassen:
tcpdump -s 0 -U -n -w - -i br-lan host 192.168.1.47 or host 192.168.1.48 or host 192.168.1.49 or host 192.168.1.51 and not net 224.0.0.0/3 and not arp | nc 192.168.1.15 9999
192.168.1.15 ist die Dockstar, auf der der andere netcat-Prozess auf Daten wartet. Dazu habe ich noch 2 Filter gesetzt: kein Multicast, kein ARP.
Und nun warte ich wie ein Angler 😉