Захват пакетов: фильтрация на RX против TX

8

У меня есть проблема с сетью, когда кадры с исходным 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 означает, что мы отправляем его, но если бы был получен дублированный кадр, содержимое фильтра выглядело бы точно так же.

Как можно наблюдать, был ли принят или получен кадр при захвате пакета?

Джошуа Миллер
источник
1
Не работает tcpdump -i <interface> inbound(или "исходящий")?
Страница man, кажется, указывает, что это ограничено SLIP. Когда я пытаюсь использовать его для любого из моих интерфейсов (loopback, eth / em, bond, vlan, tap ...), tcpdump говорит: «tcpdump: входящий / исходящий не поддерживается для linktype 1»
Джошуа Миллер
2
Он не отвечает на ваш вопрос, но, используя iptables и ulogd, вы сможете получить pcap только с интересными пакетами.
августа
используйте tcpdump -Lдля просмотра поддерживаемых интерфейсов,
PersianGulf
использованиеngrep -d dev
PersianGulf

Ответы:

7

Используйте --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.
abacabadabacaba
источник
1
Эта опция доступна только в последней стабильной версии tcpdump - 4.6.2. Но после его построения на Ubuntu, он, кажется, успешно проводит различие между входящими и исходящими кадрами. Ура!
Джошуа Миллер
1
@JoshuaMiller Я только что проверил справочную tcpdumpстраницу в Ubuntu 14.04, и существует опция с точно таким же описанием, но она называется, -Pа не -Q(и длинная форма не упоминается).
Касперд
@kasperd Ты прав! tcpdump 4.5.1 на самом деле имеет -P. Возможно, функциональность не так нова, как я изначально думал.
Джошуа Миллер
0

С 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), которые могут показать вам, что вам нужно. Возможно, он также может пересылать копии пакетов на интерфейс для регистрации с другими инструментами, но у меня не было причин для этого.

mc0e
источник