Запись многоадресного потока на хосте Linux с несколькими компьютерами

2668
snacky

У меня есть то, что звучит как простейший из возможных вариантов использования, и все же ничего не удовлетворительное.

У меня есть хост с несколькими домами, и я хотел бы слушать многоадресные передачи на eth1 и помещать всю полезную нагрузку (НЕ включая заголовки пакетов UDP, только полезную нагрузку) в файл. Вот некоторые вещи, которые я уже пробовал,

  • Сокат. Похоже, это был бы идеальный инструмент, но я понятия не имею, какой синтаксис использовать, и все примеры, которые я нахожу, предназначены для гораздо более сложных вариантов использования. Я не могу на самом деле делать головы или хвосты из примеров, которые я вижу. Если кто-нибудь знает, как я мог заставить socat сделать это? Не стесняйтесь называть меня идиотом за то, что я не понял этого.
  • VLC. Изредка отбрасывает пакеты, что недопустимо. Мне нужно, чтобы он работал долго без потери одного пакета. Я вижу это случайное падение во многих версиях VLC на разных платформах, и я просто не доверяю этому.
  • Wireshark. Это работает и никогда не сбрасывает пакеты, такие как vlc (даже при одновременном запуске), но на самом деле мне не нужен дамп пакета, только полезная нагрузка. После этого я могу использовать wireshark, чтобы записать всю полезную нагрузку в файл, используя функцию «следить за потоком UDP», но это занимает много времени и не позволяет мне сохранять полезную нагрузку в реальном времени. Кроме того, это возможно только в графическом интерфейсе Wireshark. Мой рабочий процесс был бы намного проще без некоторого графического интерфейса.
  • Netcat. Звучит как правильный инструмент, но не делает дерьмо, когда дело доходит до получения многоадресной рассылки. Не знаю, как отлаживать или просто не работает с многоадресной рассылкой. Кроме того, я использую nemesis для принудительного соединения igmp, и с помощью tcpdump я вижу, что это работает. Пожалуйста, предложите, если я что-то упускаю глупо.
  • Кс6. тот же результат, что и у netcat.
2

1 ответ на вопрос

3
NuclearDog
socat -u UDP4-RECV:6666,ip-add-membership=224.1.0.1:0.0.0.0 CREATE:test.out 

Возможно, не оптимально, но должно работать.

Приведенный выше ответ от NuclearDog выглядит ОТЛИЧНО, хорошего дня. snacky 11 лет назад 0