Здравствуйте.
Есть сетевой интерефейс
enp3s1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.3 netmask 255.255.255.0 broadcast 192.168.0.255
ether 00:19:5b:87:17:8c txqueuelen 1000 (Ethernet)
RX packets 3946935 bytes 5374039533 (5.3 GB)
RX errors 0 dropped 1 overruns 0 frame 0
TX packets 318 bytes 16956 (16.9 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
на него прописан маршрут
225.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 enp3s1На этом интерфейсе по очереди присутствует мультикаст на адрес 225.0.0.1:11111 от двух разных источников с одинаковым IP (192.168.0.2)
Задача записать его на комп с помощью ffmpeg.
Прблелема такая - от одного источника пишется нормально, а от второго ffmpeg не видит потока.
TCPDUMP видит пакеты с обеих источников-Этот пишется-
14:17:12.988202 IP (tos 0x0, ttl 16, id 23824, offset 0, flags [DF], proto UDP (17), length 1344)
192.168.0.2.47383 > 225.0.0.1.11111: [udp sum ok] UDP, length 1316
14:17:12.990436 IP (tos 0x0, ttl 16, id 23825, offset 0, flags [DF], proto UDP (17), length 1344)
192.168.0.2.47383 > 225.0.0.1.11111: [udp sum ok] UDP, length 1316
14:17:12.992664 IP (tos 0x0, ttl 16, id 23826, offset 0, flags [DF], proto UDP (17), length 1344)
192.168.0.2.47383 > 225.0.0.1.11111: [udp sum ok] UDP, length 1316Этот не видится-
14:10:40.519952 IP (tos 0x0, ttl 32, id 2546, offset 0, flags [DF], proto UDP (17), length 1344)
192.168.0.2.54752 > 225.0.0.1.11111: [udp sum ok] UDP, length 1316
14:10:40.519957 IP (tos 0x0, ttl 32, id 2547, offset 0, flags [DF], proto UDP (17), length 1344)
192.168.0.2.54752 > 225.0.0.1.11111: [udp sum ok] UDP, length 1316
14:10:40.519960 IP (tos 0x0, ttl 32, id 2548, offset 0, flags [DF], proto UDP (17), length 1344)
192.168.0.2.54752 > 225.0.0.1.11111: [udp sum ok] UDP, length 1316На виндовой машине видятся оба потока.
Куда копать, подскажите, кто в курсе тонкостей...
Спасибо
Разобрался частично.
Проблема была в том, что поток, который не виделся, был в VLAN.
Возник вопрос - как сделать так, чтоб сетевой интерфейс пропускал внутрь потоки вне зависимости от VLAN (как это работает на виндовой машине) ?
> Разобрался частично.
> Проблема была в том, что поток, который не виделся, был в
> VLAN.
> Возник вопрос - как сделать так, чтоб сетевой интерфейс пропускал внутрь потоки
> вне зависимости от VLAN (как это работает на виндовой машине) ?Вариант решения - добавить влан и объединить в бридж? Или указать на свиче, чтобы снимал тэги.
> Вариант решения - добавить влан и объединить в бридж? Или указать на
> свиче, чтобы снимал тэги.А проще никак нельзя? Например, просто отключить теггирование на интерфейсе?
>> Вариант решения - добавить влан и объединить в бридж? Или указать на
>> свиче, чтобы снимал тэги.
> А проще никак нельзя?Дык, куда уж проще - поснимать лишние тэги на порту свича?
> Например, просто отключить теггирование на интерфейсе?
Тэгирование - это расширение стандарта ethernet. И простой драйвер сетевой карты такие пакеты не понимает. tcpdump или wireshark расшифровывает ethernet самостоятельно. А для системы есть драйвер vlan, который в большинстве unix/linux систем включается в ядро отдельно и отбирает предназначенные для указанного в настройках системы влан-a пакеты, "за/расшифровывает" их и передаёт получателю.
Если вы обратите внимание - в *nix системах vlan выглядит как отдельный интерфейс (сетевая карта). И вся его работа с данными заключается в том, что "наш" тэг добавляется в пакет или удаляется из пакета. Всё. И пакет отправляется на передачу в линию или в сетевой стек ядра для последующей отработки.
Так что вам на месте надо решать, что проще - заводить ещё один интерфейс в системе и городить бриджи или указать на свиче снимать тэги на данном порту.
Гуд. Все прояснил для себя. Спасибо огромное за развернутый ответ.