
Я использую tcpdump для захвата многоадресных пакетов и мне пришлось написать собственную программу для присоединения к многоадресным каналам, чтобы tcpdump "увидел" пакеты. Просто интересно, может ли netcat или какие-либо другие приложения выполнять эту функцию вместо этого?
решение1
Этот ответ был отозван.
решение2
Можно использовать socat для подписки на группы. Это отлично работает как для подписки L2, так и для подписки L3:
socat STDIO UDP4-DATAGRAM:239.101.1.68:8889,\
ip-add-membership=239.0.1.68:10.100.201.1
Это подпишется на группу, 239.0.1.68
используя интерфейс с адресом 10.100.201.1
. UDP4-DATAGRAM:239.101.1.68:8889
Бит прослушивает пакеты на фиктивной группе и порту udp, которые не должны получать никаких данных, чтобы предотвратить вывод socat всего на stdout. Если вместо этого вы хотите направить полезную нагрузку на stdout, измените эту группу и порт на фактические группу и порт, на которые вы хотите подписаться.
Можно указать несколько директив, разделенных запятыми, ip-add-membership
для подписки на несколько групп одновременно. Когда socat завершает работу, он, похоже, очищает и подписки IGMP.
решение3
В дополнение к socat
ответу, вот тяжеловесное решение -смкроут. Это приложение работает как демон и может управляться «на лету»:
smcroutectl join eth0 239.1.1.27
smcroutectl leave eth0 239.1.1.27
решение4
В pimd FRR вы можете сделать следующее:
interface vlan2000
ip address A.B.C.D/24
ip igmp
ip igmp join 239.0.110.219
ip igmp join 239.0.110.220
ip igmp version 2