Настройка UDP мультикаста в OpenWrt

InternetTV / OTT
Ответить
Аватара пользователя
atu
Гуру
Сообщения:271
Зарегистрирован:21 июл 2014, 22:54
Настройка UDP мультикаста в OpenWrt

Сообщение atu » 25 фев 2016, 12:28

Ранее я уже описывал настройку мультикаста в роутерах под управлением OpenWrt для сети КиевНет, но это было сделано в общей теме.
Для большего удобства поиска информации, я перенесу описанное ранее в новую тему и также напишу о весьма важных моментах, про которые не писал ранее. Они сязаны с RTSP и помогают устранить проблемы с рассыпанием картинки на простеньких MIPS процессорах.

Процитирую то, что уже было сказано:
atu писал(а):На Берковцах мультикаст успешно зарабтал.
Оборудование: ONU от BDCOM + Роутер TL-WR740N с прошивкой OpenWRT.
Небольшой мануал с настройками для нуждающихся.
В стандартной сборке OpenWRT не присутствует IGMP Proxy, для активации мультикаста необходимо его установить вручную.
Подключаемся к роутеру по SSH.
В консоле вводим команду на обновление списка актуальных пакетов и установку IGMP Proxy: *WRITE*

Код: Выделить всё

opkg update
opkg install igmpproxy
IGMP Proxy установлен.
Теперь настроим интерфейсы для приема IGMP пакетов (внешний) и для передачи (локальный).

Код: Выделить всё

cd /etc/config/
- поменяли рабочую директорию на директорию с конфигами

Код: Выделить всё

vi igmpproxy
- открыли конфиг IGMP Proxy в редакторе Vim.
Теперь передвигаем стрелками курсор в нужное место файла и нажимаем клавишу insert.
Заполняем файл следующими данными: *WRITE*

Код: Выделить всё

config igmpproxy
	option quickleave 0

config phyint wan
	option network wan
	option direction upstream
	list altnet 0.0.0.0/0

config phyint lan
	option network lan
	option direction downstream

(lan и wan - стандартные названия внешнего интерфейса и моста между локальным свитчем и WiFi. Если вы называли их по другому, не забудьте написать свои опция quickleave позволяет быстро переключать каналы, но подводный камень в том, что при просмотре одного и того же канала несколькими пользователями, после получения сервером от одного из них IGMP сообщения leave group стрим канала вышибет обоим. Я ее включал, понимаю, что роутер для нескольких клиентов слабоват и зная, что у меня будет одновременно только одно устройство. Если на вам действительно мешает, пишите option quickleave 1).
После окончания редактирования нажимаем клавишу ESC
Пишем: *WRITE* - заставляет Vim записать изменения в файл - закрывает наш редактор и возвращает в стандартный BusyBox.
Теперь для пропуска пакетов IGMP и UDP перенаправления стрима каналов нужно настроить Firewall.
Пишем *WRITE*

Код: Выделить всё

vi firewall
Аналогично передвигаем стрелками курсор в нужное место файла и нажимаем клавишу insert.
Заполняем файл в самом его конце следующими данными: *WRITE*

Код: Выделить всё

config rule
	option name 'Allow-IGMP'
	option src 'wan'
	option proto 'igmp'
	option target 'ACCEPT'

config rule
	option name 'Allow-IPTV-IGMPPROXY'
	option src 'wan'
	option proto 'udp'
	option dest 'lan'
	option dest_ip '239.0.0.0/4'
	option target 'ACCEPT'
После окончания редактирования нажимаем клавишу ESC
Пишем: *WRITE* Перезапускаем демон нашего брандмауэра:
Пишем: *WRITE*

Код: Выделить всё

/etc/init.d/firewall restart
Если этого не сделать, с трафиком UDP каналов будет нечто такое: *WALL* ))) (На то ж его и назвали огненной стеной :D )
Добавляем IGMP Proxy в автозагрузку для автоматического его старта после включения роутера и тут же его запускаем: *WRITE*

Код: Выделить всё

/etc/init.d/igmpproxy enable
/etc/init.d/igmpproxy start
Мультикаст успешно настроен.
Берем IPTV Player и как описывалось в шапке его настраиваем.
Если Firewall вашего компьютера ничего не блочит, пойдет картинка, у меня стоял Avast Internet Security и он потребовал дополнительной настройки, которую я опишу позже.
----------------------------------------------------------------------------------------------------------------
Дополнение:
Эти процедуры описывают настройку Firewall и нашего прокси и проверены мною лично на работоспособность.
Однако, при возрастании нагрузки на роутер "посторонним" трафиком, возникает процесс его "захлебывания" и картинка начинает сыпаться, а звук прерываться.
Решается данная проблема очень просто, всего в две команды.
Нам нужно просто облегчить процесс пропуска RTSP через NAT, благо в OpenWrt для этого присутствует пакет, освобождающий нас от лишней ручной работы: kmod-ipt-nathelper-rtsp (название пакета актуально для Chaos Calmer 15.05, в других версиях, если мне не изменяет память, пакет назывался по-другому, можно уточнить в репозитории).
Что ж, приступим к установке:
  1. Подключаемся к роутеру через SSH, используем Putty для Windows или

    Код: Выделить всё

    ssh root@192.168.1.1
    для Linux
  2. Код: Выделить всё

    opkg update
    обновляем список пакетов
  3. Код: Выделить всё

    opkg install kmod-ipt-nathelper-rtsp
    устанавливаем наш хелпер.
  4. Перезапустим Firewall и igmpproxy

    Код: Выделить всё

    /etc/init.d/firewall restart
    /etc/init.d/igmpproxy restart
    
  5. Profit
Данный хелпер является неким подобием RTSP ALG в стандартной TP-Link прошивке
Don't lose your brain :-) :D
Ответить