URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 94696
[ Назад ]

Исходное сообщение
"Маршрутизация мультикаста или IGMP over PPTP"

Отправлено P_Dmitrij , 28-Май-13 02:34 
Добрые люди, помогите пожалуйста!
Уже добрую неделю бьюсь с этой проблемой, но пока безрезультатно :(
Ситуация классическая: есть сервер FreeBSD 9.1, в него заходит кабель от провайдера (первая сетевуха) с городской сетью. Через него идет L2TP тунель в инет. Также к нему подключена моя локальная домашняя сеть (вторая сетевуха), в которой стоит NAS и WiFi роутер. На базе MPD5 сделана также возможность подключения по протоколу PPTP к локальной сети извне. На сервере NAS крутится TwonkyServer, который раздает контент по DLNA.

Задача: получить DLNA контент на устройствах, подключенных через PPTP (через инет) к домашней сети.

В интернете такого рода проблема активно обсуждается, но тут просто напасть какая-то! Перепробовал все, скрипты, igmpproxy, udpxy, mrouted и тд и тп. Не работает :(

Если более конкретно:

- Интерфейсы
bge0: Городская сеть, шнур к провайдеру
em0: Локальная сеть
ng0: L2TP туннель в интернет
ng1...ngN: Подключения по PPTP в локальную сеть снаружи


root@home-da:/root # ifconfig
em0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
    options=4019b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,VLAN_HWTSO>
    ether 2c:27:d7:14:f1:ec
    inet 172.17.3.1 netmask 0xffff0000 broadcast 172.17.255.255
    inet6 fe80::XXXX:d7ff:XXXX:f1ec%em0 prefixlen 64 scopeid 0x1
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
    media: Ethernet autoselect (100baseTX <full-duplex>)
    status: active
bge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
    options=c019b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,VLAN_HWTSO,LINKSTATE>
    ether a0:b3:cc:e9:51:76
    inet 10.7.X.X netmask 0xffffffc0 broadcast 10.7.X.X
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
    media: Ethernet autoselect (100baseTX <full-duplex>)
    status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
    options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
    inet6 ::1 prefixlen 128
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x9
    inet 127.0.0.1 netmask 0xff000000
    nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
pflog0: flags=141<UP,RUNNING,PROMISC> metric 0 mtu 33152
    nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1400
    inet 46.164.X.X --> 217.25.X.X netmask 0xffffffff
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
ng1: flags=89d1<UP,POINTOPOINT,RUNNING,NOARP,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1396
    inet 172.17.3.1 --> 172.17.200.10 netmask 0xffffffff
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

cat /boot/loader.conf
ip_mroute_load="YES"

pf:
...
pass in all
pass out all
pass in proto igmp all allow-opts
pass out proto igmp all allow-opts
...

Я теперь и не уверен, а вообще это возможно? Скажите, какая дополнительная информация нужна? Логи там конфиги - все сразу предоставлю!


Содержание

Сообщения в этом обсуждении
"Маршрутизация мультикаста или IGMP over PPTP"
Отправлено михалыч , 28-Май-13 06:12 
> Я теперь и не уверен, а вообще это возможно?

Думаю, что скорее да, чем нет. ))
Попробуйте /usr/ports/net/xorp


"Маршрутизация мультикаста или IGMP over PPTP"
Отправлено P_Dmitrij , 28-Май-13 14:11 
>> Я теперь и не уверен, а вообще это возможно?
> Думаю, что скорее да, чем нет. ))
> Попробуйте /usr/ports/net/xorp

Спасибо за совет, сейчас буду разбираться. Меня не покидает ощущение, что я упускаю что-то важное, что на поверхности лежит. Ведь теоретически все должно было бы сразу заработать, безо всяких прилуд сторонних. Ведь все отлично работает, если я присоединяюсь по вай-фаю к вай-фай роутеру. А это совершенно простая железка, безо всяких там smart-функций. М.б. PPTP вообще не поддерживает IGMP? IGMP - это ж вроде уровень L2, а NG-устройство PPTP туннеля - это уровень L3


"Маршрутизация мультикаста или IGMP over PPTP"
Отправлено mr_gfd , 29-Май-13 14:11 
updxy - это unicast, должно работать поверх соединений точка-точка без проблем.

"Маршрутизация мультикаста или IGMP over PPTP"
Отправлено P_Dmitrij , 29-Май-13 14:15 
> updxy - это unicast, должно работать поверх соединений точка-точка без проблем.

К сожалению, не работает :( Проверял подключившись с iPad через программы AirAV и 8player. Без туннеля работает все отлично.


"Маршрутизация мультикаста или IGMP over PPTP"
Отправлено mr_gfd , 29-Май-13 14:54 
>> updxy - это unicast, должно работать поверх соединений точка-точка без проблем.
> К сожалению, не работает :( Проверял подключившись с iPad через программы AirAV
> и 8player. Без туннеля работает все отлично.

А мануал читать к софту ?

Еще раз, медленно. Udpxy - это прокси из мультикаста в http unicast. Для него нужно соответственно плейлист отдавать иной. Для DLNA не подойдет. Тут, скорее, сработает OpenVPN в на tap интерфейсе, которым на IOS и не пахнет особо.  


"Маршрутизация мультикаста или IGMP over PPTP"
Отправлено P_Dmitrij , 29-Май-13 15:01 
>>> updxy - это unicast, должно работать поверх соединений точка-точка без проблем.
>> К сожалению, не работает :( Проверял подключившись с iPad через программы AirAV
>> и 8player. Без туннеля работает все отлично.
> А мануал читать к софту ?
> Еще раз, медленно. Udpxy - это прокси из мультикаста в http unicast.
> Для него нужно соответственно плейлист отдавать иной. Для DLNA не подойдет.
> Тут, скорее, сработает OpenVPN в на tap интерфейсе, которым на IOS
> и не пахнет особо.

Задача стоит:
>получить DLNA контент на устройствах, подключенных через PPTP (через инет) к домашней сети.

Я понимаю, что есть иные способы доставки контента. Но интересует именно этот. К сожалению, tap действительно не работает в iOS, соотв. мост не получилось сделать с OpenVPN.


"Маршрутизация мультикаста или IGMP over PPTP"
Отправлено mr_gfd , 29-Май-13 14:57 
Прошу игнорировать мой коммент про udpxy как вредный. Все Вами написанное - для iptv годится, но не для DLNA.
Можно попробовать if-up/if-down скриптом передергивать Twonky с привязкой к ng* интерфейсу, может и сработает малой кровью. Самому пробовать - лень :)

"Маршрутизация мультикаста или IGMP over PPTP"
Отправлено P_Dmitrij , 29-Май-13 15:11 
> Можно попробовать if-up/if-down скриптом передергивать Twonky с привязкой к ng* интерфейсу,
> может и сработает малой кровью. Самому пробовать - лень :)

Twonky же крутится на другом сервере физически, на Qnap TurboNAS. Там нет ng интерфейсов, только сетевуха, которая смотрит в локальную домашнюю сеть. Я думаю над тем, что поставить на фряхе DLNA-сервер, а на NASе отключить. Но пока хотелось бы запустить именно в такой конфигурации, если это конечно вообще возможно.


"Маршрутизация мультикаста или IGMP over PPTP"
Отправлено P_Dmitrij , 29-Май-13 15:06 
Еще не совсем понимаю, почему не проходит IGMP трафик между ng1 <-> em0, если PPTP интерфейс ng1 имеет туже подсеть, что и интерфейс локальной домашней сети em0? Вроде как тут даже никакая дополнительная маршрутизация не нужна, сеть то - одна.

"Маршрутизация мультикаста или IGMP over PPTP"
Отправлено mr_gfd , 29-Май-13 15:30 
> Еще не совсем понимаю, почему не проходит IGMP трафик между ng1 <->
> em0, если PPTP интерфейс ng1 имеет туже подсеть, что и интерфейс
> локальной домашней сети em0? Вроде как тут даже никакая дополнительная маршрутизация
> не нужна, сеть то - одна.

*поскипано цензурой*,
172.17.200.10 netmask 0xffffffff != 172.17.3.0 netmask 0xffff0000 - это раз.
Два -  ну прочитайте, пожалуйста, документацию, что такое IGMP и уясните, что к DLNA он имеет совсем никакого отношения, а также погуглите на предмет Dial-to-Connect VPN System for Remote DLNA Communication.
*поскипано цензурой*!


"Маршрутизация мультикаста или IGMP over PPTP"
Отправлено P_Dmitrij , 29-Май-13 16:03 
> 172.17.200.10 netmask 0xffffffff != 172.17.3.0 netmask 0xffff0000 - это раз.

Разумеется я пробовал с маской 172.17/16 (устанавливал через ifconfig ng1 netmask 255.255.0.0) Просто невозможно выложить все пройденные попытки в этот пост, это тогда книга получится :)

> Два -  ну прочитайте, пожалуйста, документацию, что такое IGMP и уясните,
> что к DLNA он имеет совсем никакого отношения,

DLNA реализован на протоколе UPnP. На вики говорят, что для обнаружения UPnP-сети используется Simple Service Discovery Protocol (SSDP):

>SSDP is a text-based protocol based on HTTPU. It uses the User Datagram Protocol (UDP) as the underlying transport protocol. Services are announced by the hosting system with multicast addressing to a specifically designated IP multicast address at UDP port number 1900. In IPv4, the multicast address is 239.255.255.250

Насколько я понимаю, это протокол IGMP. Да и tcpdump показывает наличие этих пакетов на интерфейсах.

> а также погуглите на предмет Dial-to-Connect VPN System for Remote DLNA Communication.

Погуглил, прямых ссылок по такому запросу 5 штук, к сожалению ничего полезного. Мб у тебя есть подходящаю ссылка? Я конечно еще попробую с таким запросом повозиться, но с наскока ничего не находится, что можно бы на практике применить.


"Маршрутизация мультикаста или IGMP over PPTP"
Отправлено P_Dmitrij , 30-Май-13 06:09 
Нашелся некоторый обходной путь!
Если запустить DLNA сервер (MediaTomb) на интерфейсе PPTP (ngN), то плейер с другой стороны туннеля видит его! Соответственно можно запускать копии сервера при создании туннеля. Ну и один на домашнюю сеть (на интерфейсе em0).

Вопрос, что мешает DLNA траффику (похоже, пакетам IGMP) пройти с интерфейса em0 на интерфейс ng1 (оба в одной подсети) на FreeBSD - остается открытым.


"Маршрутизация мультикаста или IGMP over PPTP"
Отправлено Аноним , 03-Июн-13 12:20 
> Вопрос, что мешает DLNA траффику (похоже, пакетам IGMP) пройти с интерфейса em0
> на интерфейс ng1 (оба в одной подсети) на FreeBSD - остается
> открытым.

Здравствуйте, Вам правильно подсказали, не стоит искать никакого соотношения между DLNA и IGMP это разные вещи, если DLNA использует мультикаст адрес для оповещения клиентов о наличии сервера, это не значит что используется IGMP, как вариант возможно следует проверить открытость портов используемых сервисами, ну или пересмотреть метод подключения, на сколько знаю через pptp можно юзать мультикаст, внутри сети раздавать его вам ничто не мешает вне зависимости от того как настроена ваша локальная сеть, если только это не режется где то на роутере либо сервере. Для начала опишите Вашу сеть, какой трафик откуда идет и куда вы его хотите запихнуть, из выше сказанного по крайней мере мне мало что понятно.


"Маршрутизация мультикаста или IGMP over PPTP"
Отправлено P_Dmitrij , 04-Июн-13 15:42 
Здравствуйте!

Я нарисовал сеть: http://www.flickr.com/photos/96954350@N02/8947478900/
Трафик идет так. Физически мой сервер FreeBSD имеет 2 сетевые карты: bge0 и em0. Интерфейс bge0 подключен шнурком к городской сети. К интерфейсу em0 (домашняя сеть) подключен wifi-router в режиме моста. К wifi-router подключен NAS, на котором крутится DLNA сервер. На сервере запущен mpd5 l2tp клиент, который соединен по l2tp с провайдером (физически, через bge0). Ему соответствует виртуальный интерфейс ng0. С него в сервер заходит интернет. Также на сервере запущен mpd5 pptp сервер. Если к нему подключиться, то будет создан виртуальный интерфейс ng1(2,3,...)

Для тестирования работы DLNA используется iPad. Результат такой:
1) Если iPad находится дома и подключен через wifi-router -> dlna работает корректно
2) Если iPad находится дома, подключен через wifi-router _и_ включен PPTP-тунель  -> dlna работает корректно
3) Если iPad находится в инете и включен PPTP-тунель -> dlna сервер не виден. Остальные ресурсы сети работают корректно.

Нигде ничего не режется, все порты открыты, pf имеет только правила nat и pass all.  
Если я что-то непонятно описал, с удовольствием отвечу на вопросы. Также могу выложить любые логи.

Заранее спасибо за помощь!


"Маршрутизация мультикаста или IGMP over PPTP"
Отправлено Аноним , 06-Июн-13 10:11 
> Нигде ничего не режется, все порты открыты, pf имеет только правила nat
> и pass all.
> Если я что-то непонятно описал, с удовольствием отвечу на вопросы. Также могу
> выложить любые логи.
> Заранее спасибо за помощь!

Здравствуйте.

Если соединение pptp происходит через freebsd и на нем же поднят nat, может быть стоит поковырять именно nat? Переадресацию маршрутов и тд.