IPTV через UDPXY Общая инструкция

Post new topic   Reply to topic    DD-WRT Forum Index -> Оборудование на основе Atheros WiSOC
Goto page 1, 2, 3 ... 9, 10, 11  Next
Author Message
XsoWie
DD-WRT User


Joined: 24 Aug 2009
Posts: 145

PostPosted: Wed Feb 02, 2011 18:16    Post subject: IPTV через UDPXY Общая инструкция Reply with quote
!!!Работает на процах AR23**!!! проверено на dlink dir-300 rev.A и DIR-400

Проверено на моделях TP-LINK TL-WR1043ND, TL-WR741ND. Будет работать на большинстве процов Atheros.

Написаное ниже выполнялось на TL-WR741ND (в нем нет поддержки JFFS2, файл сохранить некуда)

"Безопасноcть-Брандмауэр"
Защита с помощью брандмауэра - оставляем "Включить"
чекбокс "Безопасность-Брандмауэр Фильтр многоадресных потоков" оставляем включеным

"Техобслуживание-Команды"
Code:
wget http://xkr446.hotbox.ru/udpxy -P /tmp
chmod +x /tmp/udpxy
/tmp/udpxy -p 82 -M 30 -B 1Mb -a `nvram get lan_ipaddr`

Сохр. параметры запуска
==============
Для DIR-300
Code:
wget http://xkr446.hotbox.ru/ar23/udpxy -P /tmp
chmod +x /tmp/udpxy
/tmp/udpxy -p 82 -M 30 -B 256kb -a `nvram get lan_ipaddr`

==============

Code:
iptables -I INPUT -i eth0 -p udp -d 239.0.0.0/8 --dport 1224 -j ACCEPT
iptables -D INPUT -p igmp -j DROP

Сохр.брандмауэр
==============
Для DIR-300
Code:
iptables -I INPUT -i vlan2 -p udp -d 239.0.0.0/8 --dport 1224 -j ACCEPT
iptables -D INPUT -p igmp -j DROP

==============
Перегружаем роутер.

http://xkr446.hotbox.ru/udpxy - здесь файл стопроцентов подходящий для процов Atheros. Сервак постоянно в сети, можно прям эту ссылку себе прописать.
скачал тут
http://downloads.openwrt.org/backfire/10.03.1-rc4/atheros/packages/
===============
http://xkr446.hotbox.ru/ar23/udpxy - здесь файл стопроцентов подходящий для процов Atheros 23xx
Сервак постоянно в сети, можно прям эту ссылку себе прописать.
скачал тут
http://alestar.dyndns.org/udpxy

-M 30 - периодически возобновлять подписку на мультикаст-канал [по
умолчанию - 0 (секунд), т.е. не возобновлять]
-p 82 - порт на котором UDPXY принимает подключения (если занят, можно указать любой другой незанятый)
-B 1Mb - буфер UDPXY (мне хватает одного мегабайта)
-i eth0 - интерфейс на который провайдер вещает IPTV (у меня этот, у вас может быть другой)
239.0.0.0/8 --dport 1224 - подсеть и порт с которой вещают IPTV
iptables -D INPUT -p igmp -j DROP - это удаляет в IPTABLES правило режущее igmp трафик.(у меня без него не показывает)

Все. Правим плейлист, или настраиваем IPTVPlayer и наслаждаемся IPTV хоть по кабелю, хоть по вайфаю.

UPD1: У кого в роутере есть место на флешке или в JFFS2 файл можно положить туда, и запускать непосредственно с роутера.
UPD2: Мне кажется что вычисление источников по методу DJArtyUA будет несколько сложно для рядового пользователя, тем более пользователя windows, поэтому правила фаера оставляю как есть.
Брать lan_ipaddr из nvram вполне разумная мысль. Спасибо. Поправил.
UPD3: исправил подсеть с 239.0.0.0/20 на 239.0.0.0/8
По наблюдениям, люди тупо копипастят эту подсеть в фаер, а у них например c 239.1.1.1:1234 вещание прет.
Может неправильно идеологически, но кому надо сообразят и исправят на подсеть поменьше, а у тех кому не надо, будет достигнут желаемый результат.
UPD4: на DIR-300 rev.A все таки сильно проц нагружается. Прям почти под сотку процентов. Но в один поток смотреть можно.
UPD5: на DIR-400 тоже запустили успешно
http://dd-wrt.com/phpBB2/viewtopic.php?p=541188#541188
Однако пишут что смотреть невозможно.
UPD6: Если вы счастливый пользователь Windows операционки, и пользуетесь IPTVPlayer, то плейлист можно не исправлять
Достаточно указать ip адрес и порт который слушает ваш настроеный udpxy в настройках. Скриншот прилагается:

Для linux-систем я пользуюсь простым скриптом:
Code:

#!/bin/bash
wget http://myttk.ru/tv/nsk.m3u -P /tmp
sed -e 's/^udp:\/\/\@/http:\/\/192.168.1.1:82\/udp\//' -i /tmp/nsk.m3u
vlc /tmp/nsk.m3u

Спасибы:
DJArtyUA,andrey_als,Basilio

_________________
DIR-320,DIR-300rev.A&B,WR741ND,WR1043ND
JID: xsowie@seekwell.ru


Last edited by XsoWie on Mon May 23, 2011 8:07; edited 12 times in total
Sponsor
balbesenok
DD-WRT User


Joined: 22 Jan 2011
Posts: 50

PostPosted: Sun Feb 06, 2011 10:10    Post subject: Reply with quote
Под
XsoWie wrote:
-a 192.168.50.31 - локальный IP адрес вашего роутера (у вас другой)
что именно понимается? Адрес роутера в моей внутренней сети, который я сам назначил (типа 192.168.1.30) или тот адрес, который провайдер назначает WAN-порту (типа 172.27.25.50)? Дело в том что у меня IPTV поступает на тот же порт что и весь остальной инет, на WAN, а "провайдерский" IP тоже можно локальным назвать, если это не "белый" Real-IP, отсюда и вопрос...
И еще, не подскажете, в команде
Code:
/tmp/udpxy -p 82 -M 30 -B 1Mb -a 192.168.50.31
что обозначает параметр -М? Просто интересно Smile

P.S. Сам пакет UDPXY я смотрю считанные килобайты весит, так если роутер позволяет, немного места в /jffs есть (у меня на TL-1043ND 700Kb есть свободных к примеру), может целесообразнее пакет не качать каждый раз, а 1 раз телнетом положить его в /jffs, там же изменить на него права
Code:
wget http://seekwell.ru/files/udpxy -P /jffs
chmod +x /jffs/udpxy

а в автозапуске оставить только строчку
Code:
/jffs/udpxy -p 82 -M 30 -B 1Mb -a 192.168.50.31

Как считаете? Smile
y_mach
DD-WRT Novice


Joined: 03 Oct 2010
Posts: 19

PostPosted: Wed Feb 09, 2011 19:17    Post subject: Re: IPTV через UDPXY Общая инструкция Reply with quote
XsoWie wrote:

Написаное ниже выполнялось на TL-WR741ND (в нем нет поддержки JFFS2, файл сохранить некуда)

"Безопасноcть-Брандмауэр"
Защита с помощью брандмауэра - оставляем "Включить"
чекбокс "Безопасность-Брандмауэр Фильтр многоадресных потоков" оставляем включеным

"Техобслуживание-Команды"
Code:
wget http://seekwell.ru/files/udpxy -P /tmp
chmod +x /tmp/udpxy
/tmp/udpxy -p 82 -M 30 -B 1Mb -a 192.168.50.31

Сохр. параметры запуска
Code:
iptables -I INPUT -i eth0 -p udp -d 239.0.0.0/20 --dport 1224 -j ACCEPT
iptables -D INPUT -p igmp -j DROP

Сохр.брандмауэр
Перегружаем роутер.

и.... VLC не пашет. Sad Говорит:
[0x875c688] main stream error: cannot pre fill buffer
[0x845a038] main access error: Read error: Соединение сброшено другой стороной

Запускаю на роутере (192.168.10.100 - IP роутера):
root@wrt:~# /tmp/udpxy -p 82 -M 30 -B 1Mb -a 192.168.10.100 -v -T
2011-02-09 22:00:20.499643 UTC 1452 udpxy 1.0-Chipmunk (build 16) standard: /tmp/udpxy -p 82 -M 30 -B 1Mb -a 192.168.10.100 -v -T
2011-02-09 22:00:20.500041 UTC 1452 Starting server [1452]; capacity=[3] clients
2011-02-09 22:00:20.500344 UTC 1452 Setting up listener for [192.168.10.100:82]
2011-02-09 22:00:20.500661 UTC 1452 Server socket=[6] is set up
2011-02-09 22:00:20.500817 UTC 1452 Entering server loop
2011-02-09 22:00:27.030104 UTC 1452 Accepted socket=[8]
2011-02-09 22:00:27.030359 UTC 1452 Reading command from socket [8]
2011-02-09 22:00:27.032354 UTC 1452 Request=[udp/239.0.1.1:5000], length=[18]
2011-02-09 22:00:27.032988 UTC 1452 Command [udp] with params [239.0.1.1:5000] read from socket=[8]
2011-02-09 22:00:27.033227 UTC 1452 udp_relay : new_socket=[8] param=[239.0.1.1:5000]
2011-02-09 22:00:27.035772 UTC 1452 Client process=[1457] started for socket=[8]
2011-02-09 22:00:27.036482 UTC 1457 min socket buffer = [65536], max space to use = [1500], Rmsgs = [1]
2011-02-09 22:00:27.036867 UTC 1457 Setting up multicast listener
2011-02-09 22:00:27.037154 UTC 1457 current receive buffer size is [112640] bytes for socket [4]
2011-02-09 22:00:27.038181 UTC 1457 multicast-group [ADD]
2011-02-09 22:00:27.038379 UTC 1457 Mcast listener socket=[4] set up
2011-02-09 22:00:27.038534 UTC 1457 min socket buffer = [65536], max space to use = [1500], Rmsgs = [1]
2011-02-09 22:00:27.038784 UTC 1457 Data buffer will hold up to [1] messages
2011-02-09 22:00:27.039260 UTC 1457 UDP stream, RTP check enabled
2011-02-09 22:00:27.039514 UTC 1457 current send buffer size is [16384] bytes for socket [8]
2011-02-09 22:00:27.039716 UTC 1457 current receive buffer size is [112640] bytes for socket [4]
2011-02-09 22:00:27.039899 UTC 1457 send buffer size set to [112640] bytes for socket [8]
2011-02-09 22:00:27.040316 UTC 1457 Sent HTTP response code=[200], reason=[OK] to socket=[8]
2011-02-09 22:00:27.040865 UTC 1457 Relaying traffic from socket[4] to socket[8], buffer size=[1048576], Rmsgs=[1], pauses=[0]
2011-02-09 22:00:27.041278 UTC 1452 Added client: pid=[1457], maddr=[239.0.1.1], mport=[5000], saddr=[192.168.10.1], sport=[34604]
2011-02-09 22:00:27.041564 UTC 1452 Closed accepted socket [8]
2011-02-09 22:00:32.035061 UTC 1457 read_buf: read: Resource temporarily unavailable
2011-02-09 22:00:32.035229 UTC 1457 read_data - EOF
2011-02-09 22:00:32.035358 UTC 1457 Exited relay loop: received=[-1], sent=[0], quit=[0]
2011-02-09 22:00:32.036182 UTC 1457 multicast-group [DROP]
2011-02-09 22:00:32.036525 UTC 1457 Mcast listener socket=[4] closed
2011-02-09 22:00:32.036991 UTC 1457 Child process=[1457] exits with rc=[0]
2011-02-09 22:00:32.037625 UTC 1452 *** Caught SIGCHLD in process=[1452] ***
2011-02-09 22:00:32.037961 UTC 1452 Client [1457] has exited.
2011-02-09 22:00:32.038114 UTC 1452 Deleted client: pid=[1457]

Всё. Хоть убейся. падает процесс и все тут. в статусе (http://192.168.10.100:82/status) пишет:
udpxy status:
Server Process ID Accepting clients on Multicast address Active clients
1452 192.168.10.100:82 0.0.0.0 1
Active clients:
Process ID Source Destination Throughput
1528 192.168.10.1:38774 239.0.1.2:5000 N/A

Что я делаю не так? Ни под линуксом на проводе, ни под виндой на проводе/вафле не кажет.
ЗЫ: На линуксовом сервере, в свое время, тоже не получалось запустить udpxy. И штатный в DD-WRT igmp-прокси не работает в моем случае... Зато без проблем все работает с родной прошивкой от WR741ND. Но там нет VPN-сервера, а мне он нужен. Плюс в DD-WRT WiFi постоянно отваливается - приходится перегружать роутер (применять настройки WiFi).

Кусок плейлиста из udp-канала:
#EXTINF:0,Первый канал
udp://@239.195.0.1:1234
XsoWie
DD-WRT User


Joined: 24 Aug 2009
Posts: 145

PostPosted: Thu Feb 10, 2011 4:19    Post subject: Reply with quote
iptables -L INPUT
можете показать?
y_mach
DD-WRT Novice


Joined: 03 Oct 2010
Posts: 19

PostPosted: Thu Feb 10, 2011 8:15    Post subject: Reply with quote
root@wrt:~# iptables -L INPUT
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- anywhere 239.0.0.0/20 udp dpt:1234
ACCEPT 0 -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:1723
ACCEPT gre -- anywhere anywhere
DROP udp -- anywhere anywhere udp dpt:route
DROP udp -- anywhere anywhere udp dpt:route
ACCEPT udp -- anywhere anywhere udp dpt:route
logaccept tcp -- anywhere wrt tcp dpt:55622
logdrop icmp -- anywhere anywhere
ACCEPT igmp -- anywhere anywhere
ACCEPT 0 -- anywhere anywhere state NEW
logaccept 0 -- anywhere anywhere state NEW
logdrop 0 -- anywhere anywhere
XsoWie
DD-WRT User


Joined: 24 Aug 2009
Posts: 145

PostPosted: Thu Feb 10, 2011 9:07    Post subject: Reply with quote
Фильт многоадресных потоков - галочка видимо убрана. Надо чтоб стояла. Когда галку убираешь включается автоматом igmproxy.

Давайте попробуем так:
При текущей настройке, без udpxy, без правки плейлиста, при подключении по кабелю iptv показывает?
y_mach
DD-WRT Novice


Joined: 03 Oct 2010
Posts: 19

PostPosted: Thu Feb 10, 2011 10:11    Post subject: Reply with quote
XsoWie wrote:
Фильт многоадресных потоков - галочка видимо убрана. Надо чтоб стояла. Когда галку убираешь включается автоматом igmproxy.

Давайте попробуем так:
При текущей настройке, без udpxy, без правки плейлиста, при подключении по кабелю iptv показывает?

1. Firewall включен, мультикаст не фильтруется.
#EXTINF:0,Первый канал
udp://@239.195.0.1:1234
Пытаюсь смотреть напрямую - на экране квадраты с ошметками изображения, звука преимущественно нет, vlc ругается в духе: libdvbpsi error (PSI decoder): TS duplicate (received 5, expected 6) for PID 105 и через некоторое время падает в корку. И так по всем каналам. Бывают откровения - минут 5 может поработать, потом опять падает.
2. Firewall отключен. см. п. 1.
3. UDPXY. Фильтр мультикаста включен.
ifconfig eth1 1.1.1.1 netmask 255.255.255.0 broadcast 1.1.1.255
wget http://seekwell.ru/files/udpxy -P /tmp
chmod +x /tmp/udpxy
/tmp/udpxy -p 82 -M 30 -B 1Mb -a 192.168.10.100
iptables -I INPUT -i eth0 -p udp -d 239.0.0.0/20 --dport 1234 -j ACCEPT
iptables -D INPUT -p igmp -j DROP

#EXTINF:0,Первый канал
http://192.168.10.100:82/udp/239.195.0.1:5000

vlc ругается:
0x880a1f0] main stream error: cannot pre fill buffer
[0x87ef1f0] main access error: Read error: Соединение сброшено другой стороной

Статус udpxy:
Process ID Source Destination Throughput
2180 192.168.10.1:47143 239.195.0.1:5000 N/A

И тишина.... Единственное, что бросается в глаза - это разные подсети: 239.195.0.0 у меня и -d 239.0.0.0/20 в правиле iptables...
XsoWie
DD-WRT User


Joined: 24 Aug 2009
Posts: 145

PostPosted: Thu Feb 10, 2011 10:29    Post subject: Reply with quote
Quote:

#EXTINF:0,Первый канал
http://192.168.10.100:82/udp/239.195.0.1:5000

не понял. порт в плейлисте всетаки 1234 или 5000 ??

у вас подсеть вещания другая, соответсвенно в правило фаера надо свою подсеть прописывать
например 239.195.0.0/20
точнее можно по плейлисту вычислить.

выложите плейлист сюда.

Quote:
ifconfig eth1 1.1.1.1 netmask 255.255.255.0 broadcast 1.1.1.255

а это чо такое?

тип подключения к провайдеру тогда укажите.

если мультикаст падает на eth1 то в iptables надо тоже на него указывать.
y_mach
DD-WRT Novice


Joined: 03 Oct 2010
Posts: 19

PostPosted: Thu Feb 10, 2011 10:56    Post subject: Reply with quote
XsoWie wrote:
Quote:

#EXTINF:0,Первый канал
http://192.168.10.100:82/udp/239.195.0.1:5000

не понял. порт в плейлисте всетаки 1234 или 5000 ??

Везде пишут что при использовании udpxy надо 1234 менять на 5000. Question И так пробовал, и эдак - безрезультатно.

Quote:
у вас подсеть вещания другая, соответсвенно в правило фаера надо свою подсеть прописывать
например 239.195.0.0/20
точнее можно по плейлисту вычислить.
выложите плейлист сюда.

Прописал 239.195.0.0/16 - все так же.
Оригинальный плэйлист:
.#EXTM3U
#EXTINF:0,Первый канал
udp://@239.195.0.1:1234
#EXTINF:0,Россия 1
udp://@239.195.0.2:1234
.............
#EXTINF:0,Наш футбол
udp://@239.195.3.1:1234
#EXTINF:0,Mezzo HD
udp://@239.195.5.1:1234

Quote:
Quote:
ifconfig eth1 1.1.1.1 netmask 255.255.255.0 broadcast 1.1.1.255

а это чо такое?

Попытка еще одного решения из инета. Ни на что не влияет.

Quote:

тип подключения к провайдеру тогда укажите.
если мультикаст падает на eth1 то в iptables надо тоже на него указывать.

Подключение - статика, авторизация по маку, интерфейс роутера eth0.
XsoWie
DD-WRT User


Joined: 24 Aug 2009
Posts: 145

PostPosted: Thu Feb 10, 2011 11:02    Post subject: Reply with quote
Quote:
Везде пишут что при использовании udpxy надо 1234 менять на 5000.

неверно. почитав мануал по udpxy вы в этом убедитесь.

порт должен быть тот, который указан в плейлисте.

Сделайте так.
фаервол - включен
фильтр широковещательных пакетов включен.
Code:

wget http://seekwell.ru/files/udpxy -P /tmp
chmod +x /tmp/udpxy
/tmp/udpxy -p 82 -M 30 -B 1Mb -a 192.168.10.100
iptables -I INPUT -i eth0 -p udp -d 239.195.0.0/20 --dport 1234 -j ACCEPT
iptables -D INPUT -p igmp -j DROP

для vlc
http://192.168.10.100:82/udp/239.195.0.1:1234
y_mach
DD-WRT Novice


Joined: 03 Oct 2010
Posts: 19

PostPosted: Thu Feb 10, 2011 11:34    Post subject: Reply with quote
Увы... Sad
Я в печали. С сентября бьюсь с этой прошивкой. И давно бы обратно ушел на заводскую, если бы не VPN-сервер...

Соврал... Embarassed vlс потупил и открыл таки ссылку. Все те же цветные квадраты с кусками изображения и ошибки:
libdvbpsi error (PSI decoder): TS duplicate (received 14, expected 15) for PID 105
libdvbpsi error (PSI decoder): TS duplicate (received 15, expected 0) for PID 105
libdvbpsi error (PSI decoder): TS duplicate (received 0, expected 1) for PID 105
libdvbpsi error (PSI decoder): TS duplicate (received 1, expected 2) for PID 105
libdvbpsi error (PSI decoder): TS duplicate (received 2, expected 3) for PID 105
libdvbpsi error (PSI decoder): TS duplicate (received 3, expected 4) for PID 105
XsoWie
DD-WRT User


Joined: 24 Aug 2009
Posts: 145

PostPosted: Thu Feb 10, 2011 13:11    Post subject: Reply with quote
мысли кончились (
y_mach
DD-WRT Novice


Joined: 03 Oct 2010
Posts: 19

PostPosted: Thu Feb 10, 2011 13:20    Post subject: Reply with quote
Похоже, действительно, провайдер глючит... Напрямую под виндой плеер нормально поработал несколько минут и сдох. Теперь сыплет такие же квадраты, что и через роутер. Evil or Very Mad
Буду разбираться с провайдером. Большое спасибо за помощь!

Видимо, в моем случае дело не в кривизне igmproxy, а в кривизне самого потока, который приходит на интерфейс.
DJArtyUA
DD-WRT Novice


Joined: 11 Feb 2011
Posts: 13

PostPosted: Fri Feb 11, 2011 8:54    Post subject: Reply with quote
Приветствую!
Освоил ещё один вариант с включенным SPI и Multicast filter.
Сложнее для определения но возможно правильнее политически Smile
1. Нужно определить адрес источника мультикаста.
Code:
tcpdump -i $(nvram get wan_ifname) -n -p udp port 1234 and host 238.0.0.1

где 238.0.0.1 и 1234 канал и порт на который подключаемся плеером.
На выходе смотрим на что-то типа такого
00:20:07.717562 IP 10.5.200.1.1234 > 238.0.0.1.1234: UDP, length:...
и з чего делаем вывод о источнике 10.5.200.1. У меня он постоянный, но может быть и из диапазона.

2. И определить адрес следящего IGMP роутера.
Code:
tcpdump -i $(nvram get wan_ifname) -p igmp -n

и включив канал следим за выводом похожим на
22:30:56.616203 IP 10.39.36.10 > 224.0.0.1: igmp query v2
берём то что с igmp query -> 10.39.36.10 это он следит за нашими запросами и живучестью (часто айпишник гейтвея).

Читаем подробней тут.

Главная проблема это то что tcpdump нет по умолчанию на многих прошивках. Соответственно что бы не заморачиваться, можно поиск делать напрямую соединившись с компа. При этом tcpdump есть на линуксах и уж не знаю что там с виндой.

Так вот, определивши эти два айпишника добавляем правила в фаерволл (в начало правил, инсертом)
типа:
Code:
iptables -I INPUT -i eth0 -s 10.5.200.1 -j ACCEPT
iptables -I INPUT -i eth0 -s 10.39.36.10 -j ACCEPT

можно конкретизировать протоколы и порты (-p udp --dport 1234) но я пока не заморачивался.
Таким макаром правила SPI фаервола не трогаем но IPTV при этом работает.
Это ж только часть касающаяся правил, а остальное касающееся самого udpxy оставляем так же как и у топикстартера в первом посту (без тех двух правил iptables)...
Правда могу предложить ещё такой вариант для пуска udpxy как раз для тех кто не понимает какие айпишники подставлять.
Code:
/tmp/udpxy -a $(nvram get lan_ipaddr) -m $(nvram get wan_ipaddr) -p 82 -c 3

(порт и допключи по своему усмотрению)
SaintReset
DD-WRT Guru


Joined: 13 Jan 2009
Posts: 1732

PostPosted: Fri Feb 11, 2011 20:44    Post subject: Reply with quote
прилепил. спасибо.
_________________
I can change this world, but G*d doesn`t give me the source (c)
Gooooглю за деньги
Goto page 1, 2, 3 ... 9, 10, 11  Next Display posts from previous:    Page 1 of 11
Post new topic   Reply to topic    DD-WRT Forum Index -> Оборудование на основе Atheros WiSOC All times are GMT

Navigation

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum