OK, ecco un suggerimento per indicarti la giusta direzione.
La sfida era: "Scrivi una tcpdump / windump filtro che cattura pacchetti ICMPv6 Multicast Listener".
Sembra facile, vero?
Con un piccolo aiuto da parte di Google vi accorgerete che il "tipo" per Multicast Listener è di 130, e il campo di tipo ICMPv6 è il primo byte nell'intestazione. Quindi questo dovrebbe essere facile come:
tcpdump-NN-p-v-s 0 icmp6 [0] = 130
tuttavia se si esegue il comando potrà tornare indietro:
tcpdump: IPv6 protocollo di livello superiore non è supportato da proto [x]
In altre parole, è possibile utilizzare "icmp6" per vedere tutti i pacchetti ICMPv6, ma non è possibile utilizzare per filtrare su uno dei campi di intestazione ICMPv6.
Quindi abbiamo bisogno di un "Piano B". Capire piano B e hai risolto la sfida. ![]()
Related posts:


La soluzione pragmatica è, naturalmente,
tcpdump-l-i qualsiasi icmp6 | grep-E '\ B160 \ b'
o simili.
La soluzione basata su pcap dipende se si desidera supportare le intestazioni di estensione IPv6 o no. In caso contrario, si può semplicemente utilizzare un offset dal intestazione IP, se si vuole sostenerlo, si avvia sempre più male (guardate tcpdump-d ip6 protochain 58 per un esempio BPF di inseguire queste intestazioni!), Ma poi di nuovo, icmp6 in realtà non sembrano sostenere che sia. C'è una soluzione che non comporta la scrittura del proprio BPF, e supporta inseguendo le catene del protocollo?
/ * Steinar * /
Grep concordato è il più facile attuazione. Rende solo più difficile salvare i file pcap.
Per citare RFC 2710: "Tutti i messaggi MLD descritti in questo documento vengono inviati con un indirizzo link-local Fonte IPv6, un limite di 1 Hop IPv6, IPv6 e un opzione Router Alert [RTR-ALERT] in un Hop-by-Hop Options intestazione. "
Quindi si dispone di un header di estensione da affrontare. Per quanto riguarda dover inseguire le intestazioni, finora ho visto solo i pacchetti Multicast Listener con l'hop-by-hop header. Anche se io non vedo nulla nel 2710 vietando l'uso di intestazioni aggiuntive.
Si potrebbe immaginare opzioni IPsec, ma suona un po 'oscuro per MLD ...
Credo che se si assume che non c'è solo la RTR-alert opzione, è di lunghezza fissa e si potrebbe utilizzare l'offset. Non ho idea se si può effettivamente fare iterazione o indiretto nei filtri pcap testuali.
/ * Steinar * /
Ciao, questa funzione non è supportata per i livelli superiori.
Non sono sicuro che è questo funzionerà se un colpo di testa successivo saranno inclusi.
Quindi, se si desidera filtrare icmp6 packtes da è di tipo e tu sai che IPv6 è di 20 byte si può semplicemente fare ip6 [21] e 130! = 0. Mezzi primo byte di intestazione dopo l'IPv6, e ci dovrebbe essere un colpo di testa ICMPv6