пятница, 26 апреля 2013 г.

UDPXY и Ростелеком

Итак, приветствую всех читателей, наткнувшихся на мой пост.  Сегодня речь пойдет о настройке IP-телевидения  на  linux-прошивке openWRT  для  народного провайдера  "Ростелеком".   И  уже  здесь  следует  сделать  оговорку, что  в разных  филиалах  -  свой "огород".  Я  буду  приводить пример для  Ярославской области, где трафик (на момент написания статьи)  нетегированный. Поэтому  общего how-to не может быть априори.
     Вообще, настроить ip-тв  можно двумя способами: первый - это igmp, а второй - udpxy.
Второй более предпочтителен, потому что лучше работает по wi-fi. Его то и будем рассматривать.

1. После прошивки  коннектимся по ssh к роутеру. По умолчанию логин - root, а  пароль тот что указали в настройках. Перед вами должна появиться  картинка с рецептом непонятного коктейля.


   
2. Далее установим демон udpxy:
opkg update
opkg install udpxy

3. Открываем  стартовый скрипт udpxy:
  vi /etc/init.d/udpxy 
Вот как выглядит он у меня:
root@OpenWrt:~# vi /etc/init.d/udpxy
#
# config 'rule'
#     option 'target' 'ACCEPT'
#     option '_name' 'multicast'
#     option 'src' 'wan'
#     option 'proto' 'all'
#     option 'dest_ip' '224.0.0.0/4'
START=99
STOP=10
SERVICE_DAEMONIZE=1
SERVICE_WRITE_PID=1
OPTIONS="-a 192.168.0.1 -T -S -p 4022"
start() {
        service_start /usr/bin/udpxy $OPTIONS
}
stop() {
        service_stop /usr/bin/udpxy
Нам нужен параметр  OPTIONS. Иногда его обозначают  IGMP_OPTS.
Всё, что я поменял в стартовом скрипте: -a 192.168.0.1 (адрес роутера).  Конечно же можно поменять и порт, и увеличить буфер обмена и много чего еще. Подробнее об этих параметрах вы можете ознакомиться здесь. 

4. После того как все настройки завершены, закрываем файл udpxy и запускаем сервис командой /etc/init.d/udpxy start
Проверить запустилась ли udpxy можно при помощи команды ps |grep udpxy.  Если вы видите в результате только одну строку, возвращайтесь к настройкам и проверяйте что вы сделали не так. В случае если все верно, должно получиться что то вроде  

root@OpenWrt:~# ps | grep udpxy17225 root 840 S /usr/bin/udpxy -a 192.168.0.1 -T -S -p 402217699
 root 1492 S grep udpxy

 5. Теперь можно прописать наш стартовый скрипт в автозагрузку. Для этого достаточно выполнить команду: /etc/init.d/udpxy enable

6. Нужно создать правила для udp трафика: config rule option src wan option proto igmp option target ACCEPT config rule option src wan option proto udp option dest_ip 224.0.0.0/4 option target ACCEPT Эти правила необходимо добавить в /etc/config/firewall, и после этого перезапустить службу командой: /etc/init.d/firewall restart

 7. Есть еще один затык,  когда нет прописанного маршрута для мультикаста. Тогда добавляем этот статический маршрут:  route add -net 224.0.0.0/4 dev eth1 metric 1
 eth1 — это интерфейс на который wan порт прицеплен. Теперь берем список каналов у провайдера, и все ссылки преобразуем так как описано в мануале к udpxy: http://{address}:{port}/{protocol}/{channel_addr}:{channel_port}

либо открываем  ip-tv player и делаем так.
  После  таких  вот простых манипуляций всё должно заработать.