У меня проблема с сетью, когда кадры с исходным MAC-адресом, который совпадает с одним из исходных MAC-адресов моего хоста, поступают на хост - очевидный дублированный MAC, или петля, или другая проблема L2.
Я считаю, что это ситуация, потому что таблицы MAC (таблицы CAM) моего Linux-моста регистрируют локальный MAC (для размещенной виртуальной машины) как находящийся на восходящем порту, а журналы ядра показывают ошибки:
bridgename: received packet on bond0.2222 with own address as source address
Я хотел бы получить более подробную информацию об этих «мошеннических» пакетах / кадрах, но я не могу понять, как их сосредоточить. С помощью tcpdump вы можете фильтровать конкретный исходный MAC ('ether src MAC'), но это основано на байтах в кадре, а не на том, был ли кадр «отправлен» или «получен». Обычно мы предполагаем, что кадр с нашим исходным MAC-адресом означает, что мы его отправляем, но если бы был получен дублирующийся кадр, содержимое для фильтра выглядело бы точно так же.
Как можно определить, был ли кадр получен или передан при захвате пакета?
Использовать --direction
опция tcpdump:
-Q direction
--direction=direction
Choose send/receive direction direction for which packets should be
captured. Possible values are `in', `out' and `inout'. Not available on
all platforms.
С iptables у вас есть разные «цепочки» для входящих и исходящих пакетов. На странице руководства iptables (8):
... the chains INPUT and OUTPUT are only traversed for packets coming into
the local host and originating from the local host respectively. Hence
every packet only passes through one of the three chains (except
loopback traffic, which involves both INPUT and OUTPUT chains) ...
iptables может вести журнал (-l), который может показать вам, что вам нужно. Предположительно, он также может пересылать копии пакетов в интерфейс для регистрации с помощью других инструментов, но у меня не было причин для этого.