IPTV : Freebsd 8.1 + udpxy

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Maximuz777
рядовой
Сообщения: 12
Зарегистрирован: 2010-01-22 19:18:18

IPTV : Freebsd 8.1 + udpxy

Непрочитанное сообщение Maximuz777 » 2011-05-05 16:55:36

Здравствуйте все. Собственно сабж.
Есть провайдер, который вещает iptv. Есть шлюз на 8.1 с NAT и ipfw. Udpxy не работает. В смысле вообще ничего не показывает. Плейлист я переделал, но тем не менее, ничего. Куда рыть? Обязательны ли опции в ядре типа MULTICAST?
Спасибо.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
xelplogoog
мл. сержант
Сообщения: 134
Зарегистрирован: 2010-01-02 12:14:56

Re: IPTV : Freebsd 8.1 + udpxy

Непрочитанное сообщение xelplogoog » 2011-05-05 19:05:03

смотри в лог vlc (запуская с консоли с флагами -v)
в ядре я не ковырялся, когда заводил эту тему
все работает
/usr/ports/x11/yakuake-kde4 user

Maximuz777
рядовой
Сообщения: 12
Зарегистрирован: 2010-01-22 19:18:18

Re: IPTV : Freebsd 8.1 + udpxy

Непрочитанное сообщение Maximuz777 » 2011-05-06 15:36:17

короче в момент перезагрузки файерволла все работает, потом секунд через 5 снова падает.
Конфиг ipfw:

Код: Выделить всё


fw="/sbin/ipfw"
iif="re0"
oif="age0"
oip="##.##.##.##"
iip="192.168.1.1"
inet="192.168.1.0/24"


${fw} -f flush
${fw} add check-state

${fw} add allow ip from any to any via lo0
${fw} add allow ip from any to 192.168.1.1 via ${iif}
${fw} add allow ip from 192.168.1.1 to any via ${iif}

${fw} add deny ip from any to 127.0.0.0/8
${fw} add deny ip from 127.0.0.0/8 to any
${fw} add deny ip from any to 10.0.0.0/8 in via ${oif}
${fw} add deny ip from any to 172.16.0.0/12 in via ${oif}
${fw} add deny ip from any to 192.168.0.0/16 in via ${oif}
${fw} add deny ip from any to 0.0.0.0/8 in via ${oif}
${fw} add deny ip from any to 169.254.0.0/16 in via ${oif}
${fw} add deny ip from any to 240.0.0.0/4 in via ${oif}
${fw} add deny icmp from any to any frag
${fw} add deny icmp from any to 255.255.255.255 in via ${oif}
${fw} add deny icmp from any to 255.255.255.255 out via ${oif}

${fw} add deny ip from not ${allowip} to not ${inet} via ${iif}
${fw} add deny ip from not ${inet} to not ${allowip} via ${iif}




${fw} add divert natd ip from ${inet}/24 to any out via ${oif}
${fw} add divert natd ip from any to ${oip} in via ${oif}
${fw} add allow ip from me to any
${fw} add allow ip from any to me


${fw} add deny ip from 10.0.0.0/8 to any out via ${oif}
${fw} add deny ip from 172.16.0.0/12 to any out via ${oif}
${fw} add deny ip from 192.168.0.0/16 to any out via ${oif}
${fw} add deny ip from 0.0.0.0/8 to any out via ${oif}
${fw} add deny ip from 169.254.0.0/16 to any out via ${oif}
${fw} add deny ip from 224.0.0.0/4 to any out via ${oif}
${fw} add deny ip from 240.0.0.0/4 to any out via ${oif}
${fw} add allow tcp from any to any established


${fw} add allow udp from any 53 to any
${fw} add allow udp from any to any 53
${fw} add allow icmp from any to any icmptypes 0,8,11
${fw} add allow ip from any to any via ${iif}
proxy#

ЧЯДНТ?
p.s. про VLC - че-то я не вкурил, куда он лог кладет. запускаю из под винды.

Maximuz777
рядовой
Сообщения: 12
Зарегистрирован: 2010-01-22 19:18:18

Re: IPTV : Freebsd 8.1 + udpxy

Непрочитанное сообщение Maximuz777 » 2011-05-06 15:37:18

причем когда в конфиге ipfw одна строка

Код: Выделить всё

allow ip from any to any
все работает.

Аватара пользователя
xelplogoog
мл. сержант
Сообщения: 134
Зарегистрирован: 2010-01-02 12:14:56

Re: IPTV : Freebsd 8.1 + udpxy

Непрочитанное сообщение xelplogoog » 2011-05-06 16:06:43

у меня pf
смотри в логе фаервола, че он блочит. и разрешай
лог vlc уже не нужен
/usr/ports/x11/yakuake-kde4 user

Аватара пользователя
Dog
лейтенант
Сообщения: 723
Зарегистрирован: 2006-09-21 10:34:36
Откуда: Kharkiv, Ukraine
Контактная информация:

Re: IPTV : Freebsd 8.1 + udpxy

Непрочитанное сообщение Dog » 2011-06-04 21:55:16

Присоединюсь к теме.
Ретрансляция через udpxy почему-то не работает. Имеется:

Код: Выделить всё

dog@euthanasic:~> uname -a
FreeBSD euthanasic 8.2-RELEASE-p2 FreeBSD 8.2-RELEASE-p2 #0: Sat May 28 17:38:41 EEST 2011     root@euthanasic:/usr/obj/usr/src/sys/EUTHANASIC  i386
Ядро собрано с опцией

Код: Выделить всё

dog@euthanasic:~> grep MROUT /usr/src/sys/i386/conf/EUTHANASIC 
options         MROUTING        # Multicast routing
updxy запущен и работает:

Код: Выделить всё

dog@euthanasic:~> sockstat | grep udpxy
root     udpxy      31489 1  dgram  -> /var/run/logpriv
root     udpxy      31489 5  tcp4   172.31.0.1:4022       *:*
dog@euthanasic:~> ps ax | grep udpxy
31489  ??  I      0:00,18 /usr/local/sbin/udpxy -p 4022 -v -p 4022 -l /var/log/udpxy.log -a 172.31.0.1 -m AAA.BBB.CCC.DDD
В файрволе поставил вот такие правила:

Код: Выделить всё

pass quick proto igmp from any to any allow-opts         
pass in on $ext_if proto udp to 239.0.0.0/8
pass in on $ext_if proto udp to 240.0.0.0/8
pass quick on $ext_if proto udp from any to any port 1234 allow-opts         
pass quick on $int_if proto udp from $local_net to $int_if port 4022
Когда на локальном компе врубаю vlc и скармливаю ему плейлист со строками вида http://172.31.0.1:4022/udp/239.0.0.x:yyyy, то он тупо проходится по списку каналов до конца, ничего не отображая. При этом в логах udpxy появляются сообщения вида:

Код: Выделить всё

2011-06-04 21:44:21.064570 EEST 31489   Accepted socket=[6]
2011-06-04 21:44:21.064672 EEST 31489   Reading command from socket [6]
2011-06-04 21:44:21.065416 EEST 31489   HTTP buffer [58 bytes] received
2011-06-04 21:44:21.065473 EEST 31489   Request=[udp/239.0.0.59:1234], length=[19]
2011-06-04 21:44:21.065496 EEST 31489   Command [udp] with params [239.0.0.59:1234] read from socket=[6]
2011-06-04 21:44:21.065518 EEST 31489   udp_relay : new_socket=[6] param=[239.0.0.59:1234]
2011-06-04 21:44:21.065785 EEST 31489   Added client: pid=[32016], maddr=[239.0.0.59], mport=[1234], saddr=[172.31.0.2], sport=[39664]
2011-06-04 21:44:21.065871 EEST 31489   Closed accepted socket [6]
2011-06-04 21:44:21.065892 EEST 31489   Server is waiting for input: socket=[5], pipe=[2]
2011-06-04 21:44:21.066014 EEST 31489   Client process=[32016] started for socket=[6]
2011-06-04 21:44:21.066371 EEST 32016   min socket buffer = [65536], max space to use = [1500], Rmsgs = [1]
2011-06-04 21:44:21.066402 EEST 32016   Setting up multicast listener
2011-06-04 21:44:21.066506 EEST 32016   current receive buffer size is [65536] bytes for socket [2]
2011-06-04 21:44:21.067291 EEST 32016   multicast-group [ADD]
2011-06-04 21:44:21.067344 EEST 32016   Mcast listener socket=[2] set up
2011-06-04 21:44:21.067366 EEST 32016   min socket buffer = [65536], max space to use = [1500], Rmsgs = [1]
2011-06-04 21:44:21.067387 EEST 32016   Data buffer will hold up to [1] messages
2011-06-04 21:44:21.067409 EEST 32016   UDP stream, RTP check enabled
2011-06-04 21:44:21.067495 EEST 32016   current send buffer size is [66608] bytes for socket [6]
2011-06-04 21:44:21.067519 EEST 32016   current receive buffer size is [65536] bytes for socket [2]
2011-06-04 21:44:21.067588 EEST 32016   Sent HTTP response code=[200], reason=[OK] to socket=[6]
2011-06-04 21:44:21.067644 EEST 32016   Relaying traffic from socket[2] to socket[6], buffer size=[2048], Rmsgs=[1], pauses=[0]
2011-06-04 21:44:26.068631 EEST 32016   read_buf: read: Resource temporarily unavailable
2011-06-04 21:44:26.068678 EEST 32016   read_data - EOF
2011-06-04 21:44:26.068699 EEST 32016   Exited relay loop: received=[-1], sent=[0], quit=[0]
2011-06-04 21:44:26.069329 EEST 32016   multicast-group [DROP]
2011-06-04 21:44:26.069391 EEST 32016   Mcast listener socket=[2] closed
2011-06-04 21:44:26.069529 EEST 32016   Child process=[32016] exits with rc=[0]
2011-06-04 21:44:26.070002 EEST 31489   *** Caught SIGCHLD in process=[31489] ***
2011-06-04 21:44:26.070082 EEST 31489   Client [32016] has exited.
2011-06-04 21:44:26.070116 EEST 31489   Deleted client: pid=[32016]
2011-06-04 21:44:26.070140 EEST 31489   Server is waiting for input: socket=[5], pipe=[2]
2011-06-04 21:44:26.099109 EEST 31489   Accepted socket=[6]
2011-06-04 21:44:26.099227 EEST 31489   Reading command from socket [6]
2011-06-04 21:44:26.099259 EEST 31489   HTTP buffer [58 bytes] received
2011-06-04 21:44:26.099281 EEST 31489   Request=[udp/239.0.0.60:1234], length=[19]
2011-06-04 21:44:26.099302 EEST 31489   Command [udp] with params [239.0.0.60:1234] read from socket=[6]
2011-06-04 21:44:26.099322 EEST 31489   udp_relay : new_socket=[6] param=[239.0.0.60:1234]
2011-06-04 21:44:26.099591 EEST 31489   Added client: pid=[32017], maddr=[239.0.0.60], mport=[1234], saddr=[172.31.0.2], sport=[55896]
2011-06-04 21:44:26.099681 EEST 31489   Closed accepted socket [6]
2011-06-04 21:44:26.099703 EEST 31489   Server is waiting for input: socket=[5], pipe=[2]
2011-06-04 21:44:26.099837 EEST 31489   Client process=[32017] started for socket=[6]
2011-06-04 21:44:26.099964 EEST 32017   min socket buffer = [65536], max space to use = [1500], Rmsgs = [1]
2011-06-04 21:44:26.099987 EEST 32017   Setting up multicast listener
2011-06-04 21:44:26.100083 EEST 32017   current receive buffer size is [65536] bytes for socket [2]
2011-06-04 21:44:26.101076 EEST 32017   multicast-group [ADD]
2011-06-04 21:44:26.101122 EEST 32017   Mcast listener socket=[2] set up
2011-06-04 21:44:26.101144 EEST 32017   min socket buffer = [65536], max space to use = [1500], Rmsgs = [1]
2011-06-04 21:44:26.101164 EEST 32017   Data buffer will hold up to [1] messages
2011-06-04 21:44:26.101185 EEST 32017   UDP stream, RTP check enabled
2011-06-04 21:44:26.101265 EEST 32017   current send buffer size is [66608] bytes for socket [6]
2011-06-04 21:44:26.101290 EEST 32017   current receive buffer size is [65536] bytes for socket [2]
2011-06-04 21:44:26.101360 EEST 32017   Sent HTTP response code=[200], reason=[OK] to socket=[6]
2011-06-04 21:44:26.101416 EEST 32017   Relaying traffic from socket[2] to socket[6], buffer size=[2048], Rmsgs=[1], pauses=[0]
2011-06-04 21:44:31.102106 EEST 32017   read_buf: read: Resource temporarily unavailable
2011-06-04 21:44:31.102152 EEST 32017   read_data - EOF
2011-06-04 21:44:31.102173 EEST 32017   Exited relay loop: received=[-1], sent=[0], quit=[0]
2011-06-04 21:44:31.102781 EEST 32017   multicast-group [DROP]
2011-06-04 21:44:31.102837 EEST 32017   Mcast listener socket=[2] closed
2011-06-04 21:44:31.102972 EEST 32017   Child process=[32017] exits with rc=[0]
2011-06-04 21:44:31.103425 EEST 31489   *** Caught SIGCHLD in process=[31489] ***
2011-06-04 21:44:31.103500 EEST 31489   Client [32017] has exited.
2011-06-04 21:44:31.103522 EEST 31489   Deleted client: pid=[32017]
2011-06-04 21:44:31.103543 EEST 31489   Server is waiting for input: socket=[5], pipe=[2]
tcpdump на внешнем интерфейсе показывает, что какие-то пакеты все же проходят:

Код: Выделить всё

dog@euthanasic:~> sudo tcpdump -n -i fxp0 port 1234 or igmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on fxp0, link-type EN10MB (Ethernet), capture size 96 bytes
21:46:04.420318 IP AAA.BBB.CCC.DDD > 239.0.0.59: igmp v2 report 239.0.0.59
21:46:09.421511 IP AAA.BBB.CCC.DDD > 224.0.0.2: igmp leave 239.0.0.59
21:46:09.458444 IP AAA.BBB.CCC.DDD > 239.0.0.60: igmp v2 report 239.0.0.60
21:46:14.459931 IP AAA.BBB.CCC.DDD > 224.0.0.2: igmp leave 239.0.0.60
21:46:14.472257 IP AAA.BBB.CCC.DDD > 239.0.0.58: igmp v2 report 239.0.0.58
21:46:19.473896 IP AAA.BBB.CCC.DDD > 224.0.0.2: igmp leave 239.0.0.58
^C
6 packets captured
3178 packets received by filter
0 packets dropped by kernel
а в логах vlc, если его запускать из консоли с ключиком -v, валятся такие матюки:

Код: Выделить всё

[0x81e250670] main stream error: cannot pre fill buffer
[0x81e3e46f0] main input warning: cannot create a stream_t from access
*** Unable to locate valid config! Falling back to auto-detection...
*** Unable to locate PAC! Falling back to direct...
Таблица мультикаст-форвардинга при этом тоже пустая:

Код: Выделить всё

dog@euthanasic:~> sudo netstat -g | grep -A2 "IPv4 Multicast Forwarding Table"
IPv4 Multicast Forwarding Table is empty
Гуглил долго и упорно, но что-то пока безрезультатно. Пытался в файрволе играться с опциями сохранения состояния modulate state/no state, результат нулевой. Временный перевод файрвола в режим pass all - ну, вы поняли. Чем можно побороть-то?
Oh my God, they killed init! Bastards!

Аватара пользователя
kharkov_max
капитан
Сообщения: 1862
Зарегистрирован: 2008-10-03 14:56:40

Re: IPTV : Freebsd 8.1 + udpxy

Непрочитанное сообщение kharkov_max » 2011-06-09 16:38:50

А если так ?

Код: Выделить всё

pass quick on { $int_if $ext_inet } proto igmp to { $iptv_host $iptv_lan } allow-opts modulate state queue qext_iptv
pass quick on { $int_if $ext_inet } proto udp to { $iptv_host $iptv_lan } port $iptv_port keep state queue qext_iptv
где
iptv_host="10.1.1.1"
iptv_lan="240.0.0.0/4"
iptv_port="1234"

У меня работает.....
Разберите эти правила - там все просто ...

boaboa
проходил мимо
Сообщения: 7
Зарегистрирован: 2011-07-14 12:46:17

Re: IPTV : Freebsd 8.1 + udpxy

Непрочитанное сообщение boaboa » 2011-08-02 3:49:57

Роутер-СайтСервер Freebsd
раздаёт Интернет на Windows машины пользователей внутренней сети
Для раздачи мультикаст IPTV от провайдера
ядро с опцией MROUTING
запущен udpxy по инструкции http://asy.org.ua/udpxy/
# /etc/rc.conf
udpxy_enable="YES"
udpxy_flags= "-l /var/log/udpxy.log -v -S -c 20 -M 300 -m 192.168.0.2 -p 4022 -a 192.168.1.1"


раздаёт нормально
на клиентские машины для медиаплееров VLC 1.1.11, SimpleTV версия 0.4 (vlc 1.1.8),
даже одновременно и нормально переключаются каналы.
Если запустить на клиентской машине IP-TV Player - справка, он запускается и начинает отображать вещание бесконечно долго,
но если попытаться переключить на другой канал вещания,
то сразу отключается udpxy на роутере.
И у всех IPTV естественно пропадает.
запускать приходится
# /usr/local/etc/rc.d/udpxy start
и снова все нормально на всех плеерах отображается и переключается до попытки переключить на IP-TV Player канал вещания,
хотя у него тоже указан движок от VLC .

/var/log/udpxy.log пустой

На основной консоли от udpxy start до вылета отображает

Код: Выделить всё

udpxy[38902]: udpxy 1.0-Chipmunk (build 19) standard is starting
udpxy[38902]: server_loop: accept: Software caused connection abort
udpxy[38904]: write_buf: write: Broken pipe
udpxy[38902]: wait_children: waitpid: Interrupted system call
udpxy[38902]: udpxy 1.0-Chipmunk (build 19) standard is exiting with rc=[1]
или

Код: Выделить всё

udpxy[3093]: udpxy 1.0-Chipmunk (build 19) standard is starting
udpxy[3094]: write_buf: write: Broken pipe
udpxy[3093]: server_loop: accept: Software caused connection abort
udpxy[3093]: udpxy 1.0-Chipmunk (build 19) standard is exiting with rc=[1]
если udpxy start , нормальное переключение каналов в VLC , udpxy stop отображает

Код: Выделить всё

udpxy[3202]: udpxy 1.0-Chipmunk (build 19) standard is starting
udpxy[3374]: write_buf: write: Broken pipe
udpxy[3375]: write_buf: write: Broken pipe
udpxy[3376]: write_buf: write: Broken pipe
udpxy[3377]: write_buf: write: Broken pipe
udpxy[3378]: write_buf: write: Broken pipe
udpxy[3202]: udpxy 1.0-Chipmunk (build 19) standard is exiting with rc=[0]


для сравнения при ручном udpxy start , udpxy stop отображает

Код: Выделить всё

udpxy[39075]: udpxy 1.0-Chipmunk (build 19) standard is starting
udpxy[39075]: udpxy 1.0-Chipmunk (build 19) standard is exiting with rc=[0]
По моему подозрению могут быть и другие медиаплееры которые смогут остановить udpxy,

подскажите как исключить эту возможность настройками в роутере ?


udpxy пробовал с разными ключами и совсем без ключей, результат не изменялся.
делай добро и бросай его в Интернет, оно не пропадёт, кому-нибудь сгодится.

boaboa
проходил мимо
Сообщения: 7
Зарегистрирован: 2011-07-14 12:46:17

Re: IPTV : Freebsd 8.1 + udpxy

Непрочитанное сообщение boaboa » 2012-01-31 17:09:22

После длительных поисков решения вопроса в поисковиках и в процессе ожидания ответа на вопрос оставленный в форуме, решил обратиться напрямую к автору программы
udpxy and udpxrec - Pavel V. Cherenkov
с подробным описанием проблемы и Логами, конфигурации системы и установленных программ.
На моё удивление Павел сразу написал ответ и выслал первый patch для более широкого сбора статистики,
на отосланные ему Логи
пришел следующий patch1 который и решил полностью проблему.
В след за этим patch появился на
http://sourceforge.net/projects/udpxy/f ... pmunk-1.0/
как
udpxy.1.0-Chipmunk-PATCH120.tgz 2011-10-06 79.1 kB
и в последующем вышла
udpxy.1.0-Chipmunk-build21.tgz 2011-11-25 82.8 kB
которая уже давно есть в портах
и после длительного тестирования udpxy.1.0-Chipmunk-build21 установленной из портов проблем не обнаружено.

Описание и Инструкция по работе с программой и ключах на английском и русском udpxy-manual-RU.rtf языках есть в пакете с программой udpxy…….tgz.

На данный момент Pavel V. Cherenkov готовит анонс специально для провайдеров.

Публично выражаю большую благодарность Pavel V. Cherenkov за решение моей проблемы.
делай добро и бросай его в Интернет, оно не пропадёт, кому-нибудь сгодится.