У меня проблема с многоадресной маршрутизацией на "с нуля" (Debian, а не LFS;)) linux router / firewall. Дома настроил пользователя и серверную сеть. Между ними находится маршрутизатор / брандмауэр (плата APU2E4), который, помимо прочего, должен маршрутизировать мультимедийные данные (UPnP) от медиа-сервера (контейнера на сервере Proxmox VE) клиентам. Для этого я использую smcroute. В течение нескольких месяцев все шло хорошо - и время от времени он переставал работать (не менял ни капли конфигурации). (Раньше у меня были подобные проблемы два или три раза, но я мог «решить» их, просто перезапустив брандмауэр.)
Через некоторое время после запуска smcroute tcpdump больше не обнаруживает ни одного из ожидаемых многоадресных пакетов на межсетевом экране (tcpdump -i enp1s0 host 239.255.255.250 and port 1900
). До этого момента пакеты действительно поступали через этот интерфейс. (Я также проверил другие интерфейсы, но таких пакетов - UPnP - тоже нет. Но это ожидаемое поведение, поскольку клиенты должны и могут подключаться только к enp1s0.)
TTL рассматриваемых пакетов больше 1 (проверено на клиентском хосте). Я даже позволяю iptables на маршрутизаторе увеличивать TTL, если такой пакет имеет значение 1.
Когда кажется, что на enp1s0 больше нет пакетов ip maddress
по-прежнему перечисляет этот интерфейс как член группы:
2: enp1s0
link 33:33:00:00:00:01
link 01:00:5e:00:00:01
link 33:33:ff:54:2b:98
link 01:00:5e:7f:ff:fa
inet 239.255.255.250
inet 224.0.0.1
inet6 ff02::1:ff54:2b98 users 2
inet6 ff02::1
inet6 ff01::1
Но ip mroute
больше не перечисляет (динамически устанавливаемые) маршруты:
Перед:
root@gw-srv:~# ip mroute
(10.0.0.20,239.255.255.250) Iif: enp2s0 Oifs: enp1s0 State:
resolved
(192.168.0.20,239.255.255.250) Iif: enp1s0 Oifs: enp2s0 State:
resolved
(192.168.0.2,239.255.255.250) Iif: enp1s0 Oifs: enp2s0 State:
resolved
(192.168.0.1,239.255.255.250) Iif: enp1s0 Oifs: enp2s0 State:
resolved
После:
root@gw-srv:~# ip mroute
(10.0.0.20,239.255.255.250) Iif: enp2s0 Oifs: enp1s0 State:
resolved
Когда я указываю исходный адрес типа 192.168.0.2 в smcroute.conf, соответствующий маршрут не «исчезает» (10.0.0.20 - это медиа-сервер в другой подсети). Однако проблема все еще существует.
Я также проверил с помощью iperf на маршрутизаторе, работает ли многоадресная рассылка между двумя хостами:
Маршрутизатор: iperf -s -u -B 239.255.255.250 -i 1
Клиент: iperf -c 239.255.255.250 -u -T 32 -t 3 -i 1
Когда smcroute только что был запущен, сервер принимает пакеты. Через несколько минут ничего не приходит (пока я не перезапущу smcroute или вручную не выйду из группы многоадресной рассылки). Когда в этот момент я использую любой другой многоадресный адрес (например, 239.255.255.249), пакеты попадают на брандмауэр (сервер iperf). А когда smcroute вообще не работает, проблемы не возникает (с 239.255.255.250).
В целом мне кажется, что, когда через несколько минут был установлен многоадресный маршрут, маршрутизатор больше не может принимать многоадресный трафик на соответствующий адрес.
Вы можете понять это? Пока не нашел ни малейшего намека на такую проблему.
Большое спасибо за предложения.