Paket-Socket im Promiscuous-Modus, der nur lokalen Datenverkehr empfängt

Ich habe eine Steckdose mit erstelltsocket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)), und ich habe es in den Promiscuous-Modus gesetzt mit:

struct ifreq ifr;
strncpy((char*)ifr.ifr_name, interface, IF_NAMESIZE);
if(ioctl(sock, SIOCGIFINDEX, &ifr)<0) fail(2);

struct packet_mreq mr;
memset(&mr, 0, sizeof(mr));
mr.mr_ifindex = ifr.ifr_ifindex;
mr.mr_type = PACKET_MR_PROMISC;
if(setsockopt(sock, SOL_PACKET, PACKET_ADD_MEMBERSHIP, &mr, sizeof(mr)) < 0) fail(2);

Das Problem ist, dass wenn ich aread() Über den Socket werden nur Daten zurückgegeben, die von meinem Computer stammen oder auf ihn gelangen.

Wie kann ich es dazu bringen, alle Pakete im Netzwerk zu lesen und zu verarbeiten?

Wireshark zeigt alle Pakete gut an, daher weiß ich, dass es nicht mein Computer oder meine Netzwerkkarte ist.ifconfig meldet, dass es istPROMISC wenn es läuft.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage