J'ai un problème de réseau où des trames avec un MAC source qui correspond à l'un des MAC source de mon hôte arrivent sur l'hôte - un MAC ou une boucle en double apparent ou un autre problème L2.
Je crois que c'est la situation parce que les tables MAC (tables CAM) de mon pont Linux enregistrent un MAC local (pour une machine virtuelle hébergée) comme étant sur le port en amont, et les journaux du noyau montrent des erreurs:
bridgename: received packet on bond0.2222 with own address as source address
J'aimerais obtenir plus de détails sur ces paquets / trames "voyous", mais je ne sais pas comment les cibler. Avec tcpdump, vous pouvez filtrer sur un MAC source particulier ('ether src MAC'), mais cela est basé sur les octets dans la trame - pas si la trame a été "envoyée" par rapport à "reçue dans". Nous supposons généralement qu'une trame avec notre MAC source signifie que nous l'envoyons, mais si une trame en double était reçue, le contenu serait exactement le même pour le filtre.
Comment peut-on observer si une trame a été reçue ou transmise dans une capture de paquets?
tcpdump -i <interface> inbound
(ou "sortant")?tcpdump -L
pour voir les interfaces prises en charge,ngrep -d dev
Réponses:
Utilisez l'
--direction
option pour tcpdump:la source
tcpdump
page de manuel sur Ubuntu 14.04, et une option avec la même description existe, mais elle est appelée-P
plutôt que-Q
(et la forme longue n'est pas mentionnée).Avec iptables, vous avez différentes «chaînes» pour les paquets entrants et sortants. Depuis la page de manuel iptables (8):
iptables peut effectuer une journalisation (-l), ce qui pourrait vous montrer ce dont vous avez besoin. Il peut vraisemblablement également transmettre des copies de paquets à une interface pour se connecter avec d'autres outils, mais je n'ai pas eu de raison de le faire.
la source