IPtv multicast



  • Кто настраивал на пфсенсе телевидение через мультикаст?
    поделитесь опытом?



  • А в чём проблема?



  • @Eugene:

    А в чём проблема?

    Если у Вас не возникло проблем с просмотром и настройкой IPTV через роутер на pfsense - выложите пожалуйста хотя бы коротенькую инструкцию как это сделать, спасибо!
    p.s. машина за роутером на WinXP SP3



  • Нет, я не настраивал, пытаюсь понять, что хотите сделать.
    Где сервер, который мультикастит - на LAN или на WAN? и где машина принимающая? машина одна или несколько хотят принимать?



  • Сервер который мультикастит на WAN (сервер провайдера), адрес WAN (серый) получаю также у провайдера через DHCP. Также есть локалка дома за роутером (NAT) , соединены через свитч, т.е. LAN. Адреса раздаю через DHCP на системы WinXP и Vista (2 ноута). Пока настроить IPTV хотя бы на одной машине с WinXP.



  • А как провайдер начинает давать Вам multicast? Вы должны послать IGMP-membership request? На какой IP провайдера идёт трафик?



  • Насколько я понял да, я должен послать IGMP-membership request , мой IP-адрес WAN (на роутре) такого вида 172.22.x.x , ip-адрес ноута в домашней сетке 192.168.0.15. Предполагаю что и IP-адрес сервера осуществляющий трансляцию IPTV также вида 172.22.x.x.
    Добавлено:
    Сеть из которой идет вещание у моего провайдера 224.0.0.0/4



  • Нужно во-первых понять на какой-адрес идёт мультикаст 224.x.x.x для этого запускаем tcpdump на LAN примерно так
    tcpdump -i <lan interface="" name="">-n -s0 net 224.0.0.0/4
    Потом запускаем ваше приложение, которое должно брать TV и смотрим IGMP.
    Далее на этот IGMP адрес создаём правило на LAN
    Разрешить с сетки LAN IGMP протокол на наш 224.x.x.x
    Возможно заработает, если нет, то в-первых надо посмотреть на WAN:

    1. проходит ли IGMP запрос с LAN на WAN
    2. начинает ли Ваш провайдер мультикастить на Ваш сегмент сети.</lan>


  • Насколько я понял из гугла , ядро должно быть скомпилировано с опцией MROUTING для возможности форварда мультикаст трафика, pfsense 1.2.3-RC1 - ей поддерживает? Где можно посмотреть опции с которыми скомпилировано ядро?
    tcpdump - вечером сделаю.



  • У меня еще хуже
    интернет приходит по PPPoe
    а локальная сеть в которой идет вещание IP-TV по DHCP

    приходится прописывать
    WAN = PPPoe  (интернет)

    а локалка выпадает, т-к. на одну сетевуху pfsense не позволяет привесить DHCP +PPPoe

    даже если получить адрес с помощью dhclient то управлять этой подсетью не получается.
    Но это оставим на будущее.

    Для начала если сказать что WAN =DHCP  то по идее для трансляции мультикаста надо настраивать igmpproxy что у меня тоже не получилось.



  • tcpdump на LAN интерфейсе поймал следующие пакеты:

    12:54:58.919844 IP 192.168.1.15 > 224.0.0.22: igmp v3 report, 1 group record(s)
    12:54:59.449206 IP 192.168.1.15 > 224.0.0.22: igmp v3 report, 1 group record(s)
    12:55:00.467064 IP 192.168.1.15 > 224.0.0.22: igmp v3 report, 1 group record(s)

    Создал правило для LAN разрешить IGMP протокол с 192.168.1.15 на 224.0.0.22 - не заработало.
    на WAN интерфейсе tcpdump поймал следующие пакеты:

    12:59:02.759448 IP 172.25.0.1 > 224.0.0.1: igmp query v2
    12:59:10.164216 IP 172.25.0.1 > 224.0.0.13: PIMv2, Hello, length 42
    12:59:10.165510 IP 172.25.0.1 > 224.0.0.13: PIMv2, Hello, length 42
    12:59:10.166887 IP 172.25.0.1 > 224.0.0.13: PIMv2, Hello, length 42
    12:59:10.168778 IP 172.25.0.1 > 224.0.0.13: PIMv2, Hello, length 42
    12:59:10.170064 IP 172.25.0.1 > 224.0.0.13: PIMv2, Hello, length 42

    как проверить что проходит IGMP запрос с LAN на WAN ?



  • Проверить просто - подержать подольше (минуты три) tcpdump на WAN и посомотреть проходят "igmp v3 report" или нет.
    Можно глянуть на это правило: "Разрешить с сетки LAN IGMP протокол на наш 224.x.x.x"
    лучше через```
    pfctl -sr | grep <lan interface="" namve=""></lan>

    По поводу мультикаст рутинга (видите PIM на WAN - провайдер хочет раутинг) - на pfSense это не заработает. Мы пытаемся работать, как простой клиент IGMP. Для этого необходимо и достаточно отправить IGMP membership request/report провайдеру и дальше пропустить multicast stream извне на LAN.
    Давайте сначала попробуем IGMP победить, ибо без этого ничего не выйдет.


  • Не проходят igmp v3 report - дампил больше 3х минут, ни один не попался…



  • А rule всё-таки не показали…
    Ладно, "мы пойдём другим путём" (с) не моё.
    Создайте Loadbalancer в Services->Loadbalancer Type=Gateway(failover) на интерфейсе WAN с мониторингом DefaultGatewayWAN.
    Далее в созданном ранне правиле для IGMP поменяйте gateway с default на только что созданный Loadbalancer.
    IGMP должны начать проходить с LAN на WAN. Если нет, то всё-таки нужен или скриншот правил на LAN, или pfctl -sr | grep<lan interface="" name=""></lan>



  • Не не проходят IGMP, по чему непонятно…
    Вот правила LAN
    pass in quick on re0 inet proto udp from any port = bootpc to 255.255.255.255 port = bootps keep state label "allow access to DHCP server on LAN"
    pass in quick on re0 inet proto udp from any port = bootpc to 192.168.1.1 port = bootps keep state label "allow access to DHCP server on LAN"
    pass out quick on re0 inet proto udp from 192.168.1.1 port = bootps to any port = bootpc keep state label "allow access to DHCP server on LAN"
    block drop in on ! re0 inet from 192.168.1.0/24 to any
    block drop in on re0 inet6 from fe80::2e0:42ff:fe38:1b1 to any
    pass out quick on re0 proto icmp all keep state label "let out anything from firewall host itself"
    pass out quick on re0 all flags S/SA keep state label "let out anything from firewall host itself"
    pass in quick on re0 inet from any to 192.168.1.1 flags S/SA keep state label "anti-lockout web rule"
    pass in quick on re0 proto igmp all keep state label "USER_RULE: LAN_IGMP"
    pass in quick on re0 inet from 192.168.1.0/24 to any flags S/SA keep state label "USER_RULE: Default LAN -> any"
    pass in quick on re0 inet proto tcp from any to 127.0.0.1 port = ftp-proxy flags S/SA keep state label "FTP PROXY: Allow traffic to localhost"
    pass in quick on re0 inet proto tcp from any to 127.0.0.1 port = ftp flags S/SA keep state label "FTP PROXY: Allow traffic to localhost"



  • Я не вижу loadbalancer'а в Ваших правилах.



  • @Eugene:

    Я не вижу loadbalancer'а в Ваших правилах.

    Сорри, loadbalancer - создавал. И менял правило для LAN. Он создался с ip-адресом WAN интерфейса + 10 в последнем разряде, после этого я генерировал IGMP запросы? но по tcpdump -i <wan interface="" name="">-n -s0 net 224.0.0.0/4  -  ни один igmp v3 report так и не прошел. Чуть позже смогу выложить правила для LAN c loadbalancer-ом.</wan>



  • Правила с включённым лоадбаленсером:

    pass in quick on re0 inet proto udp from any port = bootpc to 255.255.255.255 port = bootps keep state label "allow access to DHCP server on LAN"
    pass in quick on re0 inet proto udp from any port = bootpc to 192.168.1.1 port = bootps keep state label "allow access to DHCP server on LAN"
    pass out quick on re0 inet proto udp from 192.168.1.1 port = bootps to any port = bootpc keep state label "allow access to DHCP server on LAN"
    block drop in on ! re0 inet from 192.168.1.0/24 to any
    block drop in on re0 inet6 from fe80::2e0:42ff:fe38:1b1 to any
    pass out quick on re0 proto icmp all keep state label "let out anything from firewall host itself"
    pass out quick on re0 all flags S/SA keep state label "let out anything from firewall host itself"
    pass in quick on re0 inet from any to 192.168.1.1 flags S/SA keep state label "anti-lockout web rule"
    pass in quick on re0 proto igmp from any to <vpns>keep state label "NEGATE_ROUTE: Negate policy route for local network(s)"
    pass in quick on re0 route-to (fxp0 84.52.X.X) inet proto igmp all keep state label "USER_RULE: LAN_IGMP"
    pass in quick on re0 inet from 192.168.1.0/24 to any flags S/SA keep state label "USER_RULE: Default LAN -> any"
    pass in quick on re0 inet proto tcp from any to 127.0.0.1 port = ftp-proxy flags S/SA keep state label "FTP PROXY: Allow traffic to localhost"
    pass in quick on re0 inet proto tcp from any to 127.0.0.1 port = ftp flags S/SA keep state label "FTP PROXY: Allow traffic to localhost"</vpns>

    и то что удалось надампить на WAN - во время попыток посмотреть IPTV:

    19:59:28.773573 IP 172.25.0.1 > 224.0.0.1: igmp query v2
    19:59:30.174871 IP 172.25.0.1 > 239.255.10.60: igmp query v2 [max resp time 10] [gaddr 239.255.10.60]
    19:59:31.173620 IP 172.25.0.1 > 239.255.10.60: igmp query v2 [max resp time 30] [gaddr 239.255.10.60]
    19:59:34.228291 IP 172.25.0.1 > 239.255.10.60: igmp query v2 [max resp time 30] [gaddr 239.255.10.60]
    19:59:46.566442 IP 172.25.0.1 > 224.0.0.13: PIMv2, Hello, length 42
    20:00:02.286527 IP 172.25.0.1 > 224.0.0.13: PIMv2, Bootstrap, length 36
    20:00:02.287693 IP 172.25.0.1 > 224.0.0.13: PIMv2, Bootstrap, length 36
    20:00:13.530540 IP 192.168.90.22.37266 > 233.34.28.6.1001: UDP, length 1316
    20:00:15.865689 IP 172.25.0.1 > 224.0.0.13: PIMv2, Hello, length 42
    20:00:15.866983 IP 172.25.0.1 > 224.0.0.13: PIMv2, Hello, length 42
    20:00:15.883895 IP 172.25.0.1 > 224.0.0.13: PIMv2, Hello, length 42
    20:00:15.885180 IP 172.25.0.1 > 224.0.0.13: PIMv2, Hello, length 42
    20:00:15.886464 IP 172.25.0.1 > 224.0.0.13: PIMv2, Hello, length 42
    20:00:17.115696 IP 172.25.0.1 > 239.255.10.41: igmp query v2 [max resp time 10] [gaddr 239.255.10.41]
    20:00:18.111663 IP 172.25.0.1 > 239.255.10.41: igmp query v2 [max resp time 30] [gaddr 239.255.10.41]
    20:00:21.127125 IP 172.25.0.1 > 239.255.10.41: igmp query v2 [max resp time 30] [gaddr 239.255.10.41]
    20:00:28.771786 IP 172.25.0.1 > 224.0.0.1: igmp query v2
    20:00:45.764935 IP 172.25.0.1 > 224.0.0.13: PIMv2, Hello, length 42
    20:00:45.766224 IP 172.25.0.1 > 224.0.0.13: PIMv2, Hello, length 42



  • Должен признать, я был не прав. На сегодняшний день, видимо, смотреть IPtv через pfSense невозможно. И проблема не в том, что мультикаст передать через pfSense нельзя, это похоже работает:

    20:00:13.530540 IP 192.168.90.22.37266 > 233.34.28.6.1001: UDP, length 1316
    

    Проблема в том, что невозможно передать IGMP. Будем ждать пока кто-нибудь не соорудить igmpproxy пакетикт для pfSense.
    Прошу прощения за то, что морочил Вам голову.



  • @Eugene:

    Должен признать, я был не прав. На сегодняшний день, видимо, смотреть IPtv через pfSense невозможно. И проблема не в том, что мультикаст передать через pfSense нельзя, это похоже работает:

    20:00:13.530540 IP 192.168.90.22.37266 > 233.34.28.6.1001: UDP, length 1316
    

    Проблема в том, что невозможно передать IGMP. Будем ждать пока кто-нибудь не соорудить igmpproxy пакетикт для pfSense.
    Прошу прощения за то, что морочил Вам голову.

    Да на самом деле igmpproxy уже есть в пакетах, которые предлагаются через Web-интерфейс, в pfSense 1.2.3RC1 - точно есть. У меня он стоит, но как его настроить тоже непонятно. Был бы благодарен если бы подсказали верные настройки. В Web-интерфейсе есть выбор : WAN/LAN , upstream/Downstream и Network Address - что и куда нужно прописать?



  • Как говорят наши американские друзья "уау!", не знал, не знал… у меня везде 1.2-RELEASE стоит. На досуге обязательно гляну и отпишу.



  • Удалось ли заставить работать IPTV через IGMP ?



  • Пока нет. Разработчики pfSense молчат  -(



  • Для правильной работы igmp-proxy нужно ядро с опцией MROUTING
    настройки igmp-proxy стандартные найдено в сети:

    После этого лезем в /usr/local/etc/ и исправляем igmpproxy.conf
    У меня это:
    ##Начало конфига
    quickleave
    phyint rl0 upstream ratelimit 0 threshold 1
    ##rl0 заменть на буквенное обозначение внешнего(интернет) интерфеса.
    ##Кто забыл как посмотреть - ifconfig
    altnet 239.255.1.0/24
    altnet 239.255.0.0/24
    altnet 212.48.127.0/24
    altnet 212.49.127.0/24
    ##Сегменты сети с мультикаст траффиком. Одинаковы для всей планеты.
    phyint dc0 downstream ratelimit 0 threshold 1
    ##Заменить dc0 на буквенное обозначение внутреннего интерфеса
    phyint lo disabled
    ##Отключаем передачу мультикаст траффика на внутренний интерфес
    ##(петлю loopback) ОБЯЗАТЕЛЬНО!
    ##Конец конфига



  • @filosoff96:

    Для правильной работы igmp-proxy нужно ядро с опцией MROUTING
    настройки igmp-proxy стандартные найдено в сети:

    После этого лезем в /usr/local/etc/ и исправляем igmpproxy.conf
    У меня это:
    ##Начало конфига
    quickleave
    phyint rl0 upstream ratelimit 0 threshold 1
    ##rl0 заменть на буквенное обозначение внешнего(интернет) интерфеса.
    ##Кто забыл как посмотреть - ifconfig
    altnet 239.255.1.0/24
    altnet 239.255.0.0/24
    altnet 212.48.127.0/24
    altnet 212.49.127.0/24
    ##Сегменты сети с мультикаст траффиком. Одинаковы для всей планеты.
    phyint dc0 downstream ratelimit 0 threshold 1
    ##Заменить dc0 на буквенное обозначение внутреннего интерфеса
    phyint lo disabled
    ##Отключаем передачу мультикаст траффика на внутренний интерфес
    ##(петлю loopback) ОБЯЗАТЕЛЬНО!
    ##Конец конфига

    Это все хорошо известно. У Вас есть "ядро с опцией MROUTING" для pfsense и которое работает с igmpproxy, т.е. на компе можно смотреть IPTV ?



  • Все выходные бились над этим вопросом.
    Ядро взяли 7.1 GENERIC откомпилировали с нужной опцией а вот подсунуть в PFSens не вышло …
    Может есть исходники PFSensa или может подскажете как подсунуть?



  • Тут Eugene отписался, что возможно скоро все заработает в тестовой сборке от разработчиков.



  • Ставил последнюю Альфу от 6 августа вроде
    все так же не работает ….



  • Пока пробовать что-либо бесполезно. Ошибка в коде igmpproxy. Ошибка найдена и поправлена, остаётся ждать, когда исправленный вариант будет скомпилирован и доступен всеобщему пользованию. Я дам знать - потестируете.

    PS: ядро в pfSense скомпилировано с опцией MROUTING



  • Тогда ждемс …
    Вопрос а при помощи диска разработчика можно откомпилировать и собрать свой PFSENSE ?

    PS Хотя по логам igmpproxy пишет что то вроде "не могу включить маршрут тк не поддерживает ядро"
    и на сайте лазил и не видел в настройках включенную опчию



  • pfSense-Developers-1.2.2.iso.gz здесь http://files.pfsense.org/mirror/downloads/
    Можно глянуть на лог igmpproxy?



  • К сожалению логи показать не могу тк поставил на эту машину FreeBSD.
    Вопрос другой, а если установить пакет igmpproxy не через WEB интерфейс а при помощи pkg_add -r igmpproxy и дальнейшей настройкой в ручную -работать будет?
    Теоретически должно работать если подключена опция ядра MROUTONG …

    Кто нибудь так пробовал?



  • Работать не будет



  • Да действительно не работает …



  • Ну когда же появится версия PFSense с рабочим IGMP proxy?



  • Похоже это долгая история. Могу прислать по мэйлу бинарник для теста.



  • Ок.
    Вышли пожалуйста :)
    электронка в личном…



  • Та же история

    Aug 19 23:29:57 php: /pkg_edit.php: Started Igmpproxy service sucsesfully.
    Aug 19 23:29:57 igmpproxy: Note: RECV Membership query from 192.168.0.1 to 224.0.0.1 (ip_hl 20, data 8)
    Aug 19 23:30:29 igmpproxy: Note: RECV Membership query from 192.168.0.1 to 224.0.0.1 (ip_hl 20, data 8)
    Aug 19 23:30:37 igmpproxy: Note: The source address 192.168.0.99 for group 239.192.152.143, is valid DOWNSTREAM VIF #0.
    Aug 19 23:30:37 igmpproxy: Note: New origin for route 239.192.152.143 is 192.168.0.99, flood 0
    Aug 19 23:30:37 igmpproxy: Note: Adding MFC: 192.168.0.99 -> 239.192.152.143, InpVIf: 0
    Aug 19 23:31:00 igmpproxy: Note: RECV Membership query from 192.168.0.1 to 224.0.0.1 (ip_hl 20, data 8)
    Aug 19 23:31:10 igmpproxy: Note: Removing MFC: 192.168.0.99 -> 239.192.152.143, InpVIf: 0
    Aug 19 23:31:10 igmpproxy: Note: Route is not active. No kernel updates done.



  • tcpdump -ni <lan inteface="">igmp
    и
    tcpdump -ni <wan interface="">igmp
    Запускаем программу-ресивер и смотрим tcpdump'ы

    а также пожалуйтса /tmp/igmpproxy.conf</wan></lan>



  • Хорошо попробуем.
    До этого так же было, единственное что igmpproxy устанавливал через порты при помощи pkg_add -r


Locked