Содержимое /etc/fstab кажется неправильным, но это не так

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.

На этом этапе вы должны были увидеть сквозное тестирование и с помощью нескольких команд построить самую худшую и самую небезопасную систему чата в мире.

Н.Б. Если вы хотите оставить группу многоадресной рассылки, присоединенную с помощьюip addr add...(опции 1 ), вы можете сделать это:

sudo ip addr del 233.54.12.234/32 dev eth1 autojoin

2
05.12.2020, 14:29
1 ответ

Оказывается, использование rootfs, созданного с помощью LXC, не подходит для создания реальных установок. Вместо этого мы должны использовать multistrap.

Инструкции по полному решению вышеуказанной проблемы доступны по адресу multistrap -helpers@2ada86fd . Если вы создаете rootfs с помощью multistrap, то инструкция install-to-diskработает отлично. Эта проблема возникает, если вы создаете rootfs с lxc-create.

1
18.03.2021, 22:45

Теги

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