TL; DR - Выберите один:
sudo ip addr add 233.54.12.234/32 dev eth1 autojoin
socat STDIO UDP4-RECV:22001,ip-add-membership=233.54.12.234:eth1 > /dev/null
Сначала я собирался сказать «просто используйте ip maddress add
и покончите с этим». Проблема ip maddress
касается только групповых адресов канального уровня, а не протокольных групповых адресов ( man 8 ip-maddress
).
Это сказанное использование autojoin
флага с адресным глаголом делает трюк просто приятно.
Это поднимает некоторые последующие вопросы, хотя. Я предполагаю, что так как вы будете работать tcpdump
или tshark
у вас есть права root. В случае, если у вас нет номера 22001, порт с высоким номером, и другие утилиты, как socat
, также сделают это.
Не верьте мне на слово, хотя. Просто чтобы проверить это, мы можем сгенерировать многоадресные UDP-пакеты с помощью socat
или ncat
(обычно упакованные через nmap
/ nmap-ncat
).
На некотором количестве хостов запустите одну из следующих двух комбинаций:
Опция 1:
sudo ip addr add 233.54.12.234/32 dev eth1 autojoin
Вариант 2:
socat -u UDP4-RECV:22001,ip-add-membership=233.54.12.234:eth1 /dev/null &
Первый вариант потребует либо root, либо, по крайней мере, возможность CAP_NET_ADMIN
. Второй вариант не требует root, но также предполагает запуск на переднем плане и, следовательно, может быть менее благоприятным для сценариев (хотя отслеживание идентификатора дочернего процесса и очистка его с помощью trap
BASH может быть именно тем, что вам нужно.
Как только это будет сделано (но прежде чем идти орехи тестирования нашего tcpdump
/ tshark
команды) , убедитесь , что ядро распознает интерфейс, вступив в соответствующую группу IGMP. Если вы чувствуете себя супер фантазией, вы можете сходить с ума, разбирая гекс /proc/net/igmp
, но я бы посоветовал просто бежать netstat -gn
.
Убедившись, что вы видите интерфейс, подписанный на правильную группу, запустите команду tcpdump:
tcpdump -nnXs 0 -i eth1 udp port 22001 and dst 233.54.12.234
В качестве альтернативы, если вы не хотите полностью идти по пути tcpdump (или наткнулись на этот ответ, и вам просто интересно увидеть многоадресную рассылку в действии), вы можете использовать socat
команду выше, чтобы присоединиться и повторить содержимое STDOUT
, заменив /dev/null
на STDOUT
:
socat -u UDP4-RECV:22001,ip-add-membership=233.54.12.234:eth1
Затем с другого компьютера используйте одну из следующих двух опций для отправки простых тестовых данных:
Опция 1:
socat STDIO UDP-DATAGRAM:233.54.12.234:22001
Вариант 2:
ncat -u 233.54.12.234 22001
Когда вы запустите любую из этих команд, она будет интерактивно ожидать ввода. Просто введите некоторые вещи, нажмите Enter, чтобы отправить, а затем, CTRL+D
когда вы закончите, чтобы отправить EOF
сообщение.
К этому моменту вы должны были увидеть тест до конца и с помощью нескольких команд создать худшую, самую небезопасную систему чата в мире.
-p
флаг, в стандартных версиях ТСРйитра, получается смешанным режим выключен , так как это по умолчанию. В смешанном режиме он должен видеть весь трафик, включая многоадресный трафик, независимо от того, установлена ли у вас подписка - если вы не находитесь в коммутируемой сети и необходимо, чтобы подписка была установлена, чтобы коммутатор перенаправлял вам трафик.