LINUX.ORG.RU
ФорумAdmin

UDP-мультикастинг, UPnP и bridge

 , ,


0

1

Есть домашний маршрутизатор. В нём для локалки торчит сетевуха под витую пару (eth1) и сетевуха под Wi-Fi (wlan0). Эти eth1 и wlan0 сведены в мост br0.

Проблема в том, что UDP-мультикаст, который шлёт приложение из локалки, не доходит до маршрутизатора. Конкретно проблема в том, что приложения не могут задействовать UPnP, поднятый с помощью miniupnpd.

Пробовал делать так:

echo 0 >/sys/devices/virtual/net/br0/bridge/multicast_snooping

но не помогло. Ещё пробовал так:

smcroute -j br0 239.255.255.250
smcroute -a br0 0.0.0.0 239.255.255.250 br0

но тоже не помогло. Ещё добавлял такое:

iptables -t mangle -A PREROUTING -i br0 -d 239.255.255.250 -j TTL --ttl-inc 1

но в результате как не работало, так и не работает. Тестил на машинке в локалке так:

upnpc -S

но эта штука рапортует, что никакого UPnP-девайса нет.

Вопрос: куда копать? И правильно ли я понимаю, что проблема как раз в мультикастинге?

не доходит до маршрутизатора

Да ладно. А какой _сетевой агент_ дропает пакеты? Не сам ли роутер?

Krieger_Od ★★ ()
Ответ на: комментарий от post-factum

Какой службы?

Что показывают снифферы трафика на всех узлах?

Krieger_Od ★★ ()
Ответ на: комментарий от Krieger_Od

Нужная служба слушает UDP-порт 1900. На сервере, где работает эта служба, так:

pf@defiant:~$ sudo tcpdump -ni br0 udp and port 1900
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on br0, link-type EN10MB (Ethernet), capture size 65535 bytes
20:49:56.541050 IP 172.17.29.4.43017 > 239.255.255.250.1900: UDP, length 137
20:49:58.543171 IP 172.17.29.4.43017 > 239.255.255.250.1900: UDP, length 132
20:50:00.545130 IP 172.17.29.4.43017 > 239.255.255.250.1900: UDP, length 133
20:50:02.547369 IP 172.17.29.4.43017 > 239.255.255.250.1900: UDP, length 101

На клиенте так:

➜  ~  sudo tcpdump -ni enp2s0 udp and port 1900
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp2s0, link-type EN10MB (Ethernet), capture size 65535 bytes
20:51:03.907929 IP 172.17.29.4.54632 > 239.255.255.250.1900: UDP, length 137
20:51:05.910061 IP 172.17.29.4.54632 > 239.255.255.250.1900: UDP, length 132
20:51:07.912189 IP 172.17.29.4.54632 > 239.255.255.250.1900: UDP, length 133
20:51:09.914311 IP 172.17.29.4.54632 > 239.255.255.250.1900: UDP, length 101

Т.е., трафик уходит с клиента и приходит на интерфейс маршрутизатора. При этом на маршрутизаторе:

pf@defiant:~$ sudo netstat -4nlp | grep 1900
udp        0      0 0.0.0.0:1900            0.0.0.0:*                           9634/miniupnpd
post-factum ★★★★★ ()
Ответ на: комментарий от post-factum

Нужная служба слушает UDP-порт 1900. На сервере, где работает эта служба, так

пакеты есть. в чём тогда проблема?

Т.е., трафик уходит с клиента и приходит на интерфейс маршрутизатора. При этом на маршрутизаторе:

и что? нам же не интересен upnp-агент на роутере.

Krieger_Od ★★ ()
Ответ на: комментарий от Krieger_Od

Как это не интересен? Эти пакеты для того и передаются на маршрутизатор, чтобы их обработал UPnP-демон. Но либо он не обрабатывает, либо к нему не доходит. Вот хочу понять, кто виноват и что делать.

post-factum ★★★★★ ()
Ответ на: комментарий от post-factum

До кого-то из нас не доходит.

На сервере, где работает эта служба, так:

я так тебя понял, что у тебя отдельный сервер в сети. Пожалуйста, внятнее описывай.

Krieger_Od ★★ ()
Ответ на: комментарий от post-factum

Выходит, служба игнорит пакеты. Тут ковырять службу надо.

Krieger_Od ★★ ()
Ответ на: комментарий от Krieger_Od

Давай я ещё раз обрисую ситуацию.

Маршрутизатор А имеет 3 интерфейса: внешний (eth0) и два внутренних (eth1, wlan0). Внутренние интерфейсы объединены в мост (br0). К мосту подключена локалка, она, понятно, за NAT'ом. Клиент Б в локалке хочет с помощью UPnP пробросить себе порт. Служба UPnP поднята на том же маршрутизаторе А. Пакеты (мультикаст UDP) на br0 маршрутизатора А приходят, но к службе, видимо, не доходят.

post-factum ★★★★★ ()
Последнее исправление: post-factum (всего исправлений: 1)
Ответ на: комментарий от post-factum

Посмотри netstat --groups

Протрейсь выполнение службы через strace, читает ли он что-то из сокета.

Попробуй последнюю ревизию службы.

После всего этого имеет смысл пообщаться с мейнтейнером службы.

Krieger_Od ★★ ()

а «echo -n 1 > /sys/devices/virtual/net/br0/bridge/multicast_querier» делал ?

А что за ядро ? А есть ли /proc/sys/net/bridge/bridge-nf-call-iptables и что в нем?

vel ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.