Здравствуйте 😉
те кто привык смотреть тв хотят видеть его и по 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
сохраняем и все 😉
Всем спасибо все свободны =)