The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Проброс IPTV-трафика в локальную сеть при помощи OpenBSD и пакетного фильтра PF
Возникла необходимость обеспечения возможности просмотра IPTV сразу на
нескольких устройствах в домашней сети. Реализации данной схемы мешало то, что
полученный от провайдера модем имел два раздельных порта для данных и для IPTV.
Простейшим решением было бы закорачивание IPTV-порта в домашний коммутатор, но
такая схема  нарушает принципы построения безопасных систем и сулит появление
паразитного трафика. В связи с этим было решено организовать перенаправление
IPTV-трафика через локальный шлюз, на котором используется пакетный фильтр PF и IGMP-прокси.

1. Включаем поддержку переброса между сетевыми интерфейсами мультикаст трафика, для OpenBSD:

   echo "multicast_router=YES" >> /etc/rc.conf.local

перезагружаем систему.

Активируем перенаправление мультисаст трафика:

   sysctl net.inet.ip.mforwarding=1

в /etc/sysctl.conf сохраняем настройку "net.inet.ip.mforwarding=1".

2. Устанавливаем пакет net/igmpproxy с реализацией igmp-прокси:

   pkg_add igmpproxy

Отображаем свои сетевые настройки в файле конфигурации /etc/igmpproxy.conf:

   quickleave
   altnet 0.0.0.0/0    # принимаем igmp-трафик из всех подсетей
   phyint vr2 upstream  ratelimit 0  threshold 1
   phyint vr0 downstream ratelimit 0  threshold 1
   phyint pppoe0 disabled

Добавляем запуск igmpproxy в /etc/rc.local, чтобы прокси запустился после перезагрузки.

3. Настраиваем параметры внешнего сетевого интерфейса, через который приходит
IPTV-поток. Для работы  igmpproxy на интерфейсе должен быть IP-адрес, для
получения которого обычно можно использовать DHCP или назначить вручную (бывают
случаи привязки IP к MAC-адресу телеприставки, что потребует подмены MAC-адреса
на сетевом интерфейсе шлюза).

4. Настраиваем правила для прохождения IGMP-трафика и multicast-потока в
пакетном фильтре PF (в нашем случае - это UDP трафик на 5002 порт).  Основной
проблемой, возникающей в процессе настройки, является то, что в IGMP пакетах
используется опция протокола IP "Router Alert", которая по умолчанию вычищается
из пакетов при использовании PF (для отключения чистки расширенных опций
необходимо использовать параметр allow-opts). В pf.conf добавляем примерно следующее:

   LAN  = "vr0"
   IPTV = "vr2"

   block on $IPTV
   pass in on $IPTV inet proto udp from any to any port 5002
   pass on {$LAN, $IPTV} proto igmp allow-opts
 
22.02.2011 , Источник: http://undeadly.org/cgi?action=arti...
Ключи: igmp, multicast, iptv, pf, openbsd, gateway / Лицензия: CC-BY
Раздел:    Корень / Администратору / Сетевая подсистема, маршрутизация / Пакетные фильтры и фаерволы / Пакетный фильтр в FreeBSD: ipfw, IP-Filter

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Анонимко (?), 02:37, 23/02/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Хочу использовать технологию для доставки сигнала по своим (не мультимедиа) протоколам.
    Что для этого нужно с точки аппаратной стороны и что нужно научиться понимать?

    Мне это видится как подписка на поток сигналов выбранного типа.

     
  • 1.2, mma (?), 10:27, 23/02/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а зачем multicast_router и net.inet.ip.mforwarding когда трафик всеравно проксируется igmpproxy. Помоему оно тут лишнее
     
     
  • 2.4, banzai (?), 06:31, 24/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Нет. IGMP прокси, проксирует только igmp запросы.
    Получает запрос с внутренней сети, и подписывается на поток снаружи и добавляет маршрут в таблицу маршрутизации. ( можно посмотреть netstat -g ). Т.е. до клиента бежит multicast трафик.
    Скорее всего вы перепутали с udpxy, который как раз сам подписывается на поток и перегоняет его к вам уже по unicast.
     
     
  • 3.8, mma (?), 18:20, 24/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    multicast_router не нужен точно. А вот forward нужен, тут я ошибся
     

  • 1.3, Аноним (3), 13:00, 23/02/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Автор! Напишите версию OpenBSD, пожалуйста, на которой вы это делали.
     
  • 1.5, unscrubber (?), 07:33, 24/02/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    у меня такое решение на FreeBSD 7 серии работает и давно уже (более года), раньше правда igmpproxy в портах не было, щас все легко и просто.

    по поводу конфигов, помоему у меня с 0.0.0.0/0 не работало, если такое наблюдается - можно перечислить как это у провайдера сделано например: altnet 10.0.0.0/8 и altnet 224.0.0.0/4

    в PF использовал правила
    mcast_ll= "10.0.0.0/8"
    mcast_as= "224.0.0.0/4"
    pass quick on {$int_if $ext_if} proto igmp to {$mcast_ll $mcast_as} allow-opts modulate state label "mcast"
    pass quick on {$int_if $ext_if} proto udp to {$mcast_ll $mcast_as} port {1234, 9875} keep state label "mcast udp"

    единственное  с чем не доконца разобрался - наблюдал много не очень нужных мне пакетов которые просто решил блокировать:
    block in quick on $ext_if proto 103 all label "block in PIMv2 Cisco Hello spam"

    а в целом отличный проксик, с ключом -d инфы выдает очень много и подробно (если чего не выходит то можно поколупатся и поанализировать), очень благодарен умельцам которые ее с линукса портировали.

     
  • 1.6, АнанистМус (?), 11:13, 24/02/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    udpxy ни как не осилить?
    По дефолту 16 клиентво на один процесс.
     
     
  • 2.7, unscrubber (?), 11:30, 24/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    этому (udpxy) порту всего 13 месяцев, igmpproxy был доступен раньше.
    ну и они разные вещи делают вообщето.
    схожие, но udp и http раздача клиентам в локалкеэто не одно и тоже
     
     
  • 3.14, Leshka (?), 18:27, 01/03/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Что-то я в свое время не осилил igmpproxy. На мой взгляд для локалки не будет заметно разницы между udpxy и igmpproxy по объему генерируемого трафика.
     

  • 1.12, FSA (ok), 06:57, 27/02/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Тема заинтересовала, но у меня всё гораздо проще. IPTV идёт через ADSL модем. С модема убраны все разделдения портов на группы. Интернет настроен через PPPoE в модеме. VPI/VCI с потоком в режиме бридж, так же как и управляющий канал для приставки.
    Из неприятного - приходится отказаться от DHCP. Точнее оно присутствует из-за управляющего канала и выдаёт хитрые адреса с медленным интернетом. Так что при отсутствии приставки можно просто убрать управляющий канал, а при её наличии вбивать адреса устройств руками.
    Ещё встречался с проблемой, что некоторые каналы идут с 200 номера порта. Приходится играть с файерволом и перенаправлять их на порт выше 1024.
     
     
  • 2.13, Alexander Sheiko (?), 19:04, 27/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Укртелеком? Если нет приставки и нужно смотреть передачи на локальном компе, стоящем за опенроутером - как вам удалось всё это сконфигурировать?
     

  • 1.16, _KUL (ok), 19:21, 24/03/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Проброс IPTV для линукса, в примере используется Debian, может кому пригодиться

    http://rukul.ru/system-setting/linux-debian-проброс-multicast-iptv-пробросить

     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру