Настройка IpTv через роутер на FreeBSD

Мой "любимый" провайдер из трех букв (не буду говорить название , что бы не было антирекламы), ввел наконец "новую" услугу Iptv. А поскольку мой телевизор давно поломался и делать я его не собираюсь, решил я себе его настроить это чудо цивилизации, отдельная благодарность знакомому системному администратору из компании-провайдера, за бесплатно предоставленую услугу.

 

После продолжительного лазания по форумам сети , и вопрошания у всех и вся , а юзает ли кто-нить IpTv  на FreeBsd, выяснилось что подовляющее большенство использует igmpproxy. Я тоже его поставил но он переодически при переключении каналов падал с core dumped или segmentation fault, но это еще пол беды иногда случалось так что он рандомно вешал систему намертво, так, что приходилось перезагружать её кнопкой. Меня такое положение дел не устраивало , и я принился искать альтарнативу и о чудо я нашёл udpxy. Именно о нём и моя сегодняшняя статья.



УСТАНОВКА UDPXY

 О, отлично он есть в портах , это облегчает нашу задачу  ;) УСТАНОВКА UDPXY

whereis udpxy
udpxy:/usr/ports/net/udpxy 
cd  /usr/ports/net/udpxy
%sudo make install clean

Самое интересное что у udpxy нет конфигурационного файла, поэтому мы можем его сразу запустить.

%udpxy -m 192.168.1.2 -p 4022

Где 192.168.1.2 - Это Ip интерфейса , который смотрит к провайдеру, а 4022 - номер порта, на котором мы будем "слушать" наше ТВ Проверяем всё ли запустилось.

%sockstat | grep udpxy
root     udpxy      12267 1  dgram  -> /var/run/logpriv
root     udpxy      12267 5  tcp4   *:4022                *:*

Отлично Всё работает. Для тех у кого стоит PF Вот настройки (спасибо SAVER )

### IPTV ###
pass quick proto igmp from any to any allow-opts modulate state
pass quick on $ext_if proto udp from any to any port 1235 allow-opts modulate state

#Провайдер у нас вещает на порту 1235" Для автозапуска добавим следующие строки в rc.conf

udpxy_enable="YES"
udpxy_flags= "-m 192.168.1.2 -p 4022"

Статистику сервера можно так же увидить , через вебинтерфейс. В моем случае это: http://192.168.1.2:4022/status 

 

НАСТРОЙКА КЛИЕНТА.
Для воспроизведения IpTV нам нужен плеер который поддерживает потоковое воспроизведение с HTTP протокола. Я использую vlc, он есть и под Linux и под Windows. Правда имеется один небольшой нюанс. Прежде чем пихать в проигрыватель плейлист скачанный у провайдера нам необходимо его немного модернизировать под наш локальный тв-сервер  
Для этого я использовал вот такой скрипт:
 
$ sed 's|^udp://@|http://192.168.1.2:4022/udp/|'  chanellist.m3u > new-chanellist.m3u
 
Всё загружаем наш канал-лист в плеер и смотрим телевизор