У меня есть проблема с сетью, когда кадры с исходным 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 означает, что мы отправляем его, но если бы был получен дублированный кадр, содержимое фильтра выглядело бы точно так же.
Как можно наблюдать, был ли принят или получен кадр при захвате пакета?
tcpdump -i <interface> inbound
(или "исходящий")?tcpdump -L
для просмотра поддерживаемых интерфейсов,ngrep -d dev
Ответы:
Используйте
--direction
опцию для tcpdump:источник
tcpdump
страницу в Ubuntu 14.04, и существует опция с точно таким же описанием, но она называется,-P
а не-Q
(и длинная форма не упоминается).С iptables у вас есть разные «цепочки» для входящих и исходящих пакетов. Из справочной страницы iptables (8):
iptables может сделать некоторые записи (-l), которые могут показать вам, что вам нужно. Возможно, он также может пересылать копии пакетов на интерфейс для регистрации с другими инструментами, но у меня не было причин для этого.
источник