Месяц: Январь 2014

udpxy nginx FreeBSD

Здравствуйте 😉

те кто привык смотреть тв хотят видеть его и по wifi и ещё и на телефоне … )

что бы не ходить вокруг да около скажу что роутеры wifi болезненно относятся к  udp трафику он может нафиг положить их процессор и в итоге роутер перестанет вообще работать либо картинка будет сплошная каша и радости от такого IPTV не будет … за сим народом было придумано множество вариантов как же все таки смотреть iptv на wifi мы будем рассматривать самый хороший как по мне udpxy в связке с nginx для удобства фильтрации )

в примере используется последняя версия udpxy

и так что нужно сделать с чего начать )

с проверки фаервола у меня это pf на наличие правил которые могут не пропускать udp трафик

то проще всего будет добавить такие строки :

pass in quick proto { igmp udp } from any to { 224.0.0.0/4 } allow-opts modulate state

pass in quick proto igmp all allow-opts
pass out quick proto igmp all allow-opts

Дальше систему нужно тюнинговать да бы при нагрузке не получить кваканье и квадратики

для этого :
sysctl kern.ipc.maxsockbuf=16384000

sysctl net.inet.udp.recvspace=4096000

sysctl net.inet.tcp.sendspace=1648576

+ желательно нафиг выключить на сетевых всякие rxcsum txcsum

ifconfig em0 -rxcsum -txcsum

ifconfig em1 -rxcsum -txcsum

теперь собственно udpxy сразу дает возможность смотреть через себя мультики но тогда зачем nginx ?) например что бы настроить откуда могут смотреть с помощью geoIP

Итак запускаем udpxy

/usr/local/bin/udpxy -p 4022 -S -m 172.16.33.1 -a 127.0.0.1

где -p 4022 порт который слушает udpxy

где -m 172.16.33.1  ип интерфейса откуда получаем мультикаст

где -a 127.0.0.1 где будет слушать udpxy

ну и теперь сам nginx

server {
listen 1.1.1.1:4022;
server_name localhost;

proxy_redirect off;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;

location / {
proxy_pass http://127.0.0.1:4022;

allow 172.16.101.0/24;
deny all;

}

}

 

тут думаю все понятно окромя объясню зачем у меня есть allow и deny

allow 172.16.101.0/24; разрешает  мою домашнюю сеть

deny all; запрещает всех остальных

с GeoIP опишу позже )

на этой ноте можно попробовать посмотреть мультики …

объяснение http://1.1.1.1:4022 ип адрес и порт нашего сервера @239.3.3.3:1234 ип и порт iptv канала нужно заменить их на свои.

открываем vlc вводим http://1.1.1.1:4022/udp/@239.3.3.3:1234  и ничего не работает

а ларчик просто открывается 😉

route add 224.0.0.0/4 172.33.33.1 и вуаля тестируем ещё раз и получаем картинку 😉

как это все добавить в автозагрузку :

touch /usr/local/etc/rc.d/iptv.sh

chmod +x /usr/local/etc/rc.d/iptv.sh

Редактируем файл iptv.sh

ee /usr/local/etc/rc.d/iptv.sh

Туда кладем содержимое :

#!/bin/sh

/usr/local/bin/udpxy -p 4022 -S -m 172.16.33.1 -a 127.0.0.1

route add 224.0.0.0/4 172.33.33.1

сохраняем  и все 😉

Всем спасибо все свободны =)