Butovo.com Forum
Вход не произведен [Вход - Регистрация]
Вниз
Версия для печати  
Автор Тема IPTV Linux Howto
AlexUnder Construction
Посетитель
**




Сообщения: 42
Зарегистрирован: 25-1-2009
Пользователя нет на форуме

Настроение: Just Fun

[*] размещено 9-4-2009 в 12:48
IPTV Linux Howto


IPTV Linux Howto

Недавно стал счастливым абонентом сети "Butovo.com".
Первым делом была установлена простенькая станция в качестве шлюза на базе OS Linux Debian (Lenny).
Настроив iptables, DHCP, DNS и Squid для своей внутренней сети озадачился настройкой IPTV.

Единственной проблемой стала настройка multicast routing. На форуме нашел множество сообщений по настройке точек тоступа типа D-Link и других, а описания конфигурации Linux системы найти не удалось. Возможно данный хелп кому-нибудь поможет.

Привожу пример своих настроек.

IpTables.
Если используется iptables в качестве роутера/фаервола, то необходимо добавить следющие правила:
Код:

# Accept multicast for IP-TV
iptables -I FORWARD -p igmp -s 192.168.1.2 -d 224.0.0.0/4 -j ACCEPT
iptables -I FORWARD -p udp --dport 20000 -s 77.94.170.0/24 -d 224.0.0.0/4 -j ACCEPT
iptables -A INPUT -p igmp -d 224.0.0.0/4 -j ACCEPT
iptables -A FORWARD -p igmp -s 234.5.2.0/24 -d 224.0.0.0/4 -j ACCEPT


IgmpProxy.
Для маршрутизации multicast-пакетов решил воспользоваться igmpproxy: http://sourceforge.net/projects/igmpproxy . Поскольку в стандартных репозиториях Debian'а его нету, качаем исходники:
cd /usr/src
wget -c http://switch.dl.sourceforge.net/sourceforge/igmpproxy/igmpproxy-sr...
Распаковываем:
tar xvzf igmpproxy-src-0.1-beta2.tar.gz
Компилируем:
cd igmpproxy/src
make
Создаем и устанавливаем deb-пакет:
checkinstall -D -y --pkgname=igmpproxy --pkgversion=0.1-beta2 --nodoc

Редактируем конфигурационный файл /etc/igmpproxy.cong:
Код:

quickleave
phyint eth0 upstream ratelimit 0 threshold 1
altnet 192.168.1.2/32 # Роутер butovo.com
altnet 77.94.170.0/24 # Подсеть откуда вещается телевидение
phyint eth1 downstream ratelimit 0 threshold 1
altnet 192.168.0.0/24 # Внутренняя сеть
phyint lo disabled # Убираем loopback-интерфейс

Запускаем igmpproxy:
igmpproxy

Если что-то не работает смотрим логи, через tcpdump смотрим пакеты, разбираемся, настриваем.


Поскольку все настройки производил удаленно с работы через ssh, пришлось "поднять" VPN через ssh-tunnel.
С удаленной машины:
ssh -p [PortNumber] -w 0:0 [IP-of-my-home-GW]

Таким образом создаются виртуальные интерфейсы tun0 на локальной и удаленной станции. Далее настраиваем сеть.
На локальной станции:
iptables tun0 172.16.0.2 netmask 255.255.255.0
На удаленной станции:
iptables tun0 172.16.0.1 netmask 255.255.255.0
С локальной станции для проверки запускаем:
ping 172.16.0.1
Теперь на локальной станции необходимо в таблицу маршрутизации добавить маршрут к серверам iptv:
route add -net 234.5.2.0/24 dev tun0
Убедимся в настройках маршрутизации:
route -n

На удаленной станции правим файл /etc/igmpproxy.conf:
Вместо:
phyint eth1 downstream ratelimit 0 threshold 1
altnet 192.168.0.0/24
Прописать:
Код:

phyint eth1 downstream ratelimit 0 threshold 1
phyint tun0 downstream ratelimit 0 threshold 1
altnet 192.168.0.0/24
altnet 172.16.0.0/24

Перезапустить сервис igmpproxy.

Теперь я на работе могу смотреть любой из 135-и каналов телевидения. :)

При желании осталось лишь написать стартовый скрипт для igmpproxy либо через /etc/init.d/, либо через /etc/network/if-up.d/, либо любым другим способом.

Да, в качестве плеера использую на десктопе под Линуксом VLC, установленный из репозитория Debian - все прекрасно работает, проблем не наблюдал.
Просмотреть профиль пользователя Просмотреть все сообщения этого пользователя

  Наверх

 Яндекс.Метрика
Powered by XMB
XMB Forum Software © 2001-2009 Группа XMB