Столкнулся с проблемой прошивки на своем роутере. Никак не хотел работать стабильно. В итоге, перепробовав кучу разных прошивок, остановился на OpenWRT. Для желающих установить ее следуем сюда.
Итак, я отвлёкся. Мой провайдер предоставляет доступ к IPTV, поэтому изредка за работой я включаю себе что-нибудь из телепередач. Перейдя на данную прошивку заметил, что стандартной настройки UDP-HTTP в ней нет. Поэтому начал рыть рунет на предмет чего-нибудь, что поможет мне в данной ситуации. В результате набрел на статью Silver_Clash «Настройка IPTV в OpenWRT», однако по описанному методу у меня сделать ничего не получилось. Провозившись до 5 утра и найдя в комментариях заветные строки, я его запустил. Теперь хочу поделиться инструкцией с читателями.
Первым делом заходим на ваш роутер по ssh под root пользователем. Все настройки будем производить из консоли.
Устанавливаем udpxy:
opkg update
opkg install udpxy
После успешной установки проверим что udpxy запускается:
/usr/bin/udpxy
Если всё в порядке, команда выведет версию udpxy и ее основные опции.
Перейдем, собственно, к настройке (мне было удобнее работать с файлами на роутере через графический интерфейс приложения WinSCP). Открываем файл настроек udpxy (как вам будет удобнее, но напишу для тех, кто работает в putty):
vi /etc/config/udpxy
*в случае, если будет установлена новая версия, возможен вариант изменения названия файла настроек, тогда команда будет выглядеть так:
vi /etc/config/udpxy-opkg
*
Скорее всего, вы увидите что-то такое:
config udpxy
option verbose '0'
option status '1'
# option bind '0.0.0.0'
option port '4022'
# option source '0.0.0.0'
# option max_clients '5'
# option log_file '/var/log/udpxy'
# option buffer_size '4096'
# option buffer_messages '-1'
# option buffer_time '-1'
# option nice_increment '0'
# option mcsub_renew '0'
Тут вам необходимо изменить (или оставить как есть) порт, на котором будет крутиться udpxy.
Изменили? Тогда идем далее.
Запускаем кодировщик командой:
/etc/init.d/udpxy start
Проверить запустилась ли udpxy можно при помощи команды:
ps |grep udpxy
Если вы видите в результате только одну строку, возвращайтесь к настройкам и проверяйте, что вы сделали не так. Если все верно, вы увидите что-то вроде:
2035 root 844 S /usr/bin/udpxy -T -p 4022 -S
2158 root 1476 S grep udpxy
Можно открыть в браузере страничку 192.168.1.1:4022/status для проверки что всё работает.
Теперь нужно прописать наш стартовый скрипт в автозагрузку.
/etc/init.d/udpxy enable
Теперь необходимо настроить фаервол для 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
Есть еще одна проблема, когда нет прописанного маршрута для мультикаста (у меня этот момент был критичным).
Тогда добавляем этот статический маршрут в cron:
@daily route add -net 224.0.0.0/4 dev eth0.2 metric 1
И для надежности прописываем в ssh:
route add -net 224.0.0.0/4 dev eth0.2 metric 1
eth0.2 — это интерфейс, на который wan порт прицеплен.
Теперь можно перезагрузить и сам роутер, чтобы убедиться, что все необходимые службы запускаются, и все работает именно так, как мы задумали.
Берем список каналов у провайдера и все ссылки преобразуем так, как описано в мануале к udpxy:
http://{address}:{port}/{protocol}/{channel_addr}:{channel_port}
То есть если у вас в списке каналов указано:
udp://@239.77.0.93:1234
То на выходе должно получиться:
http://192.168.1.1:4022/udp/239.77.0.93:1234
Спасибо за внимание.
Автор: Darxfame