поведение сети с tcpdump

Чтобы найти что-то конкретное в командах на справочной странице, вы можете использовать:

man echo | grep output.

А вот для поиска переключателей (например-n)надо использовать вот так:

man echo | grep -- -n
0
07.11.2019, 18:48
1 ответ

TL;DR :запустите ip link set dev eth0 allmulticast onдля решения вашей проблемы (адаптируйте имя карты ). Правильное исправление может означать модификацию вашего приложения, чтобы оно поддерживало -многоадресную рассылку и присоединялось к (IPv4 )группам многоадресной рассылки, в которых оно заинтересовано.

tcpdumpпереводит интерфейс в неразборчивый режим , если не указано иное (-p), что означает, что он будет передавать в систему любой увиденный кадр Ethernet, даже если он не был отправлен специально на MAC-адрес карты (). Вы можете убедиться, что использование tcpdumpс дополнительной опцией -pбольше не заставит вашу установку работать.

Исходя из этого, это означает, что вашему интерфейсу никогда не говорили прослушивать многоадресный трафик, и он будет получать только одноадресные кадры Ethernet с собственным MAC-адресом в качестве адреса назначения (, а также широковещательные кадры ). Обычно ваше приложение должно использовать параметры сокета для присоединения к многоадресным группам IPv4, как в этом примере, взятом из strace :

.
setsockopt(5, SOL_IP, IP_ADD_MEMBERSHIP, {imr_multiaddr=inet_addr("239.255.1.5"), imr_interface=inet_addr("192.0.2.2")}, 12) = 0

... который, помимо прочего, зарегистрирует дополнительный хэш IP-адреса, отображаемый в формате Ethernet MAC , в специальную таблицу MAC-адресов многоадресной рассылки карты. Многоадресные кадры Ethernet легко распознаются картой :, у них младший бит первого байта MAC-адреса назначения установлен в 1, что оказывается самым первым битом MAC-адреса назначения , передаваемым по провод.

Если вы заранее знаете все используемые (IPv4 )группы многоадресной рассылки и их количество ограничено, вы можете самостоятельно вычислить полученные MAC-адреса многоадресной сети Ethernet , а затем добавить их непосредственно в таблица многоадресной рассылки карты, используя что-то похожее на эту команду (хэш для 239.255.1.5):

ip maddress add dev eth0 01:00:5e:7f:01:05

Если вы не можете этого сделать, вы все равно можете настроить свою карту для прослушивания всего многоадресного трафика:

ip link set dev eth0 allmulticast on

Если позже будет вставлен коммутатор, выполняющий отслеживание IGMP , этого может быть недостаточно без надлежащего изменения приложения.

Вы можете использовать тест отsocatдо с многоадресной рассылкой .

3
28.01.2020, 02:29

Теги

Похожие вопросы