Большой Воронежский Форум
» UNIX и дериваты>iptv и интернет - как заставить работать вместе.
dm.tsvetkov 19:54 26.11.2011
итак, есть провайдер freedom.
у меня к кабелю от это провайдера подключен самодельный сервачек, раздающий интернет внутри сети. к сервачку подключен медиаплеер, который и должен показывать iptv.


в сервачке три карты - eth0, через которую я получаю интернет. eth, к которому подключен медиапроигрыватель и объединенный с ним в мост br0 wlan0.

ifconfig
Код:
br0       Link encap:Ethernet  HWaddr 00:22:5f:5a:24:b5  
          inet addr:192.168.10.1  Bcast:192.168.10.255  Mask:255.255.255.0
          inet6 addr: fe80::4e00:10ff:fe53:9aef/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2866 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2294 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:297599 (297.5 KB)  TX bytes:1048187 (1.0 MB)

eth0      Link encap:Ethernet  HWaddr 00:27:0e:04:c9:ec  
          inet addr:10.5.23.253  Bcast:10.5.23.255  Mask:255.255.255.192
          inet6 addr: fe80::227:eff:fe04:c9ec/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:54737 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2516 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:66420956 (66.4 MB)  TX bytes:358306 (358.3 KB)
          Interrupt:28 Base address:0x6000 

eth1      Link encap:Ethernet  HWaddr 4c:00:10:53:9a:ef  
          inet6 addr: fe80::4e00:10ff:fe53:9aef/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:32 errors:0 dropped:0 overruns:0 frame:0
          TX packets:214 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2676 (2.6 KB)  TX bytes:48158 (48.1 KB)
          Interrupt:21 Base address:0x1000 

lo        Link encap:Локальная петля (Loopback)  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:104 errors:0 dropped:0 overruns:0 frame:0
          TX packets:104 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:8904 (8.9 KB)  TX bytes:8904 (8.9 KB)

mon.wlan0 Link encap:UNSPEC  HWaddr 00-22-5F-5A-24-B5-00-00-00-00-00-00-00-00-00-00  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:182 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:14516 (14.5 KB)  TX bytes:0 (0.0 B)

ppp0      Link encap:Протокол PPP (Point-to-Point Protocol)  
          inet addr:94.141.37.163  P-t-P:195.98.64.216  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1400  Metric:1
          RX packets:1941 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2152 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:951588 (951.5 KB)  TX bytes:212393 (212.3 KB)

wlan0     Link encap:Ethernet  HWaddr 00:22:5f:5a:24:b5  
          inet6 addr: fe80::222:5fff:fe5a:24b5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2836 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2459 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:335698 (335.6 KB)  TX bytes:1135674 (1.1 MB)
интернет расшаривается через правила:

Код:
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 ! -d 192.168.10.0/24 -j MASQUERADE
iptables -t mangle -A FORWARD -p tcp -m tcp --tcp-flags RST,SYN SYN -j TCPMSS --clamp-mss-to-pmtu
параметры подключения к локалке провайдера следующие:
Код:
ip 10.5.23.253
маска 255.255.255.192
шлюз 10.5.23.193
собрал из исходников igmpproxy...
/usr/local/etc/igmpproxy.conf
Код:
##------------------------------------------------------
quickleave


##------------------------------------------------------
## Configuration for eth0 (Upstream Interface)
##------------------------------------------------------
phyint eth0 upstream  ratelimit 0  threshold 1
altnet 77.247.232.0/24
altnet 77.247.233.0/24
altnet 77.247.237.0/24
altnet 77.247.238.0/24

##------------------------------------------------------
## Configuration for eth1 (Downstream Interface)
##------------------------------------------------------
phyint eth1 downstream  ratelimit 0  threshold 1

##------------------------------------------------------
## Configuration for eth2 (Disabled Interface)
##------------------------------------------------------
phyint wlan0 disabled
phyint lo disabled
phyint ppp0 disabled
#phyint br0 disabled
phyint mon.wlan0 disabled
interfaces выглядит так:

Код:
auto lo
iface lo inet loopback

#подгружает правила для "расшаривания" интернета с eth0 в локальную сеть.
post-up iptables-restore </etc/iptables.conf

# The primary network interface
auto eth0
# для подключения к роутеру
#iface eth0 inet dhcp

#для подключения к freedom
iface eth0 inet static
address 10.5.23.253
netmask 255.255.255.192
gateway 10.5.23.193
up route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.5.23.193
up route add -host 195.98.64.65 gw 10.5.23.193
up route add -host 195.98.64.66 gw 10.5.23.193
up route add -net 192.168.149.0/24 gw 10.5.23.193

#для iptv
up route add -net 77.247.232.0/24 gw 10.5.23.193 dev eth0
up route add -net 77.247.233.0/24 gw 10.5.23.193 dev eth0
up route add -net 77.247.237.0/24 gw 10.5.23.193 dev eth0
up route add -net 77.247.238.0/24 gw 10.5.23.193 dev eth0
up route add -net 224.0.0.0/4 dev eth0

#все, что ниже - для создания локальной сети.

auto wlan0 br0

# Беспроводной интерфейс
iface wlan0 inet manual

# Мост.
iface br0 inet static
address 192.168.10.1
network 192.168.10.0
netmask 255.255.255.0
broadcast 192.168.10.255
bridge_ports eth1
дальше начинается мистика:
когда я на медиапроигрывателе начинаю смотреть iptv, то все остальное умирает!
нет доступа в внешним ресурсам, нет доступа внутренним ресурсам провайдера, нет доступа внутри домашней сетке - к серверу не приконектится ни по ssh, ни получить доступ к шарам.
как только я перестаю смотреть iptv - все начинает работать.
ровно тоже самое происходило при подключению через хардовый роутер.

что это? как с этим бороться? [Ответ]
Hip-Hop 01:47 27.11.2011
dm.tsvetkov, а как вообще работает iptv? [Ответ]
Hip-Hop 03:38 27.11.2011
dm.tsvetkov, По пунктам.

1. что такое multicast?
2. что такое multicast routing?
3. как может работать iptv вообще? (принцип)
4. что такое 'iptv freedom'?
5. http://www.linux.org.ru/forum/admin/6966685 -

"Udpxy при запросе по http на внутренний интерфейс подписывается на внешнем интерфейсе на нужную мультикаст группу через IGMP и получаемый поток проксирует ответом http клиенту. Все просто и никаких заморочек с бриджами и мультикаст роутингом." [Ответ]
Hip-Hop 03:53 27.11.2011
dm.tsvetkov, во-вторых, я ещё раз советую. тебе не нужен бридж. Зачем тебе усложнять - объединять два интерфейса в один?

Надо стремиться к разделению - гибкость, а не к совокуплению. [Ответ]
dm.tsvetkov 08:16 27.11.2011
"Зачем тебе усложнять - объединять два интерфейса в один? "
ну, илья, на пример для того, чтобы упростить следующий шаг - настройку dhcp?


Сообщение от Hip-Hop:
По пунктам.

я не понял.

Сообщение от Hip-Hop:
а как вообще работает iptv?

в каком смысле? [Ответ]
Hip-Hop 05:22 28.11.2011

Сообщение от dm.tsvetkov:
ну, илья, на пример для того, чтобы упростить следующий шаг - настройку dhcp?

О боже, тебе сложно настроить dnsmasq на две подсети? Или огр***** геморрой потом с электронным мостом?


Сообщение от dm.tsvetkov:
в каком смысле?

в смысле по пунктам. [Ответ]
dm.tsvetkov 14:43 02.12.2011
Hip-Hop,

Сообщение от :
media@media-server:/sys/devices/virtual/net/br0/bridge$ ls
ageing_time bridge_id flush forward_delay gc_timer group_addr hello_time hello_timer max_age priority root_id root_path_cost root_port stp_state tcn_timer topology_change topology_change_detected topology_change_timer
media@media-server:/sys/devices/virtual/net/br0/bridge$ sudo su
root@media-server:/sys/devices/virtual/net/br0/bridge# echo 0 > /sys/devices/virtual/net/br0/bridge/multicast_snooping
bash: /sys/devices/virtual/net/br0/bridge/multicast_snooping: Нет такого файла или каталога
root@media-server:/sys/devices/virtual/net/br0/bridge# touch multicast_snooping
touch: невозможно выполнить touch для «multicast_snooping»: Нет такого файла или каталога

это как? [Ответ]
Hip-Hop 10:12 04.12.2011

Сообщение от dm.tsvetkov:
это как?

А у меня есть:

Сообщение от dm.tsvetkov:
это как?

У тебя вообще относительно multicast'а ничего нет в настройках моста. Наверное надо как-то включить.

Тут написано
http://www.linuxfoundation.org/colla...working/bridge

"IGMP snooping support is not yet included in bridge-utils or iproute2, but it can be easily controlled through sysfs interface. For brN, the settings can be found under /sys/devices/virtual/net/brN/bridge."

Странно вообще-то.
Изображения
Нажмите на изображение для увеличения
Название: afa38481541f.png
Просмотров: 6
Размер:	20.2 Кб
ID:	1618830  
[Ответ]
Hip-Hop 10:37 04.12.2011
dm.tsvetkov, Кстати, на debian у меня тоже нету этих настроек. Надо разобраться. На скрине archlinux. [Ответ]
Hip-Hop 11:06 04.12.2011
dm.tsvetkov, Ядра собраны разно. Это кстати очень хороший эмулятор терминала - http://en.wikipedia.org/wiki/Termina...al_emulator%29
Изображения
Нажмите на изображение для увеличения
Название: ab5983654e2a.png
Просмотров: 7
Размер:	13.3 Кб
ID:	1618902  
[Ответ]
Hip-Hop 12:01 04.12.2011

Сообщение от dm.tsvetkov:
touch: невозможно выполнить touch для «multicast_snooping»: Нет такого файла или каталога

http://ru.wikipedia.org/wiki/Touch


Видимо в рамках sysfs она не работает для создания пустого файла? [Ответ]
Hip-Hop 12:17 04.12.2011
dm.tsvetkov, а вот в ядре debian testing этот snooping уже есть.



У меня debian-ap работает на 2.6, но можно попробовать перегрузиться и посмотреть. Действительно ли этот параметр ответственен. О причинах включения и выключения я судить не берусь, надо читать документацию по ядру. Мнемн, нахер с этим заворачиваться?
Делай два интерфейса + ip_forwarding + проксирование multicast'a over http. [Ответ]
Hip-Hop 12:39 04.12.2011
dm.tsvetkov, Да, я проверил, этот параметр и скорей всего ряд других... ответственны за доступный функционал моста. Это и логично, функционал реализуется самим ядром, а bridge-utils и т.д это инструменты управления этим ф. 2.6.32 это у них long time ядро.. если я не ошибаюсь. Можно почитать более подробно о причинах исключения этого ф из ядра, хм. [Ответ]
Hip-Hop 13:40 04.12.2011
dm.tsvetkov, Вот и всё. Эта функция в ядре появляется то ли с 2.6.34, возможно есть патчи, но в debian'овском ядре поддержки нет.

[Ответ]
Hip-Hop 14:09 04.12.2011
dm.tsvetkov, кстати, дебиановское ядро достаточно сильно отличается от ванильного? Во-первых, есть рад специфических патчей. Во-вторых, из него выброшены все блобы - бинарные вставки в код ядра, вот про ubuntu не знаю, там они, imho, есть Я вот не знаю.. ванильное ядро содержит блобы? Да, это была желание Торвальдса. http://www.linux.org.ru/news/kernel/4607354/page1

"Авторы проекта Linux-libre не стали поддерживать собственную отдельную ветку ядра Linux, а вместо этого создали универсальный скрипт для удаления несвободных блоков в ядре. Скрипт содержит в себе тысячи шаблонов для определения наличия бинарных вставок и исключения ложных срабатываний. Раньше скрипт был написан на sed, но требовал для своей работы около 2 Гб ОЗУ. В текущей версии скрипт дополнительно переписан на языках Awk, Python и Perl, что позволило внушительно сократить потребление памяти, но увеличило время выполнения полного анализа: sed-вариант выполняется 3 минуты, awk - 5 минут, а Python и Perl - 90 минут."

:LOL: [Ответ]
Hip-Hop 16:12 04.12.2011
dm.tsvetkov, да всё там работает, а в чем проблема?

[Ответ]
Hip-Hop 16:17 04.12.2011
dm.tsvetkov, смотрю щя какой-то канал и пишу тебе на форум.

Загрузка wl500 v1 при просмотре 1 канала:

[Ответ]
Hip-Hop 16:39 04.12.2011
dm.tsvetkov, я зашёл на форум freedom, там конечно ****ец, я бы в руки им насрал. Они не могут нормально оформить сабжовую инфу - например я долго искал плей-лист. Нашёл его в какой-то теме на форуме. И вообще, всё как всегда на уровне плинтуса. Здесь нужно инфы нет? http://freedom.vrn.ru/support/

Это пять балов - http://freedom-vrn.ru/service_iptv.html [Ответ]
Hip-Hop 18:07 04.12.2011
dm.tsvetkov,

Код:
#!/bin/sh

INP=${1}
OUTP=${2}
IP_ADDR="127.0.0.1:8888"

PATTERN="udp:\/\/@"
URL="http:\/\/${IP_ADDR}\/udp\/"

if [ "$#" -ne 2 ]; then
echo "Usage: `basename $0` playlist.vlc modified_playlist.vlc"
fi

sed s/${PATTERN}/${URL}/g ${INP} > ${OUTP}

exit 0;
подправляет плей-лист для скормления vlc или mplayer. (расширение у файла лучше сделать m3u)


Это все настройки:




Прошивка: 1.9.2.7-rtn-r3121
[Ответ]
Hip-Hop 20:41 04.12.2011
dm.tsvetkov, на vlc сразу советую забить. пробуй с mplayer, mplayer -playlist playlist.m3u + куча разных других настроек. (я использую консольный mplayer) Можно ещё поиграться с xine. C HD-каналами загрузка wl500 уже приличная и может доходить до 80%. mplayer умеет работать с кучей драйверов видеовывода + vdpau + распараллеливание на несколько ядер при декодировании сложных кодеков. [Ответ]
Hip-Hop 14:33 05.12.2011
dm.tsvetkov, mplayer обязательно собирай из svn. Короче, могу примерно рассказать исходя из своих вчерашних опытов. Каналов много, но смотреть практически нечего. Основная масса каналов в mpeg2. 5-6 штук в h264. Самые тяжелые типа 234.5.38.101:20000 (astra 3d) грузят wl500 на 80-90%, другие меньше. Я декодирую через фреймбуфер на машине с dual core (?) (t2400@1800mhz). Некторые hd каналы рассыпаются почему-то, но другие более тяжёлые работают нормально, но на приделе возможностей. (судя по нагрузки на t2400) Надо ещё поиграться с настройками mplayer - не получается добиться стабильно чёткой картинки, иногда возникают артефакты... быстро проходят, но портят всю картину. Все mpeg2 работают нормально, но они тоже с разным битрейтом. [Ответ]
dm.tsvetkov 19:34 05.12.2011
прочел все, что ты написал.
спасибо. отвечу завтра. [Ответ]
Hip-Hop 21:33 05.12.2011
dm.tsvetkov, Вот плей-лист http://freedom.vrn.ru/support/TV_utf8.m3u Обрабатываешь его скриптом и кормишь mplayer'у. Предварительно подняв udphy на wl500 или в другом месте. Прошивки на wl500 - http://code.google.com/p/wl500g/ Я использую последний из svn. (mplayer SVN-r34393-4.6) Я тестирую это iptv на элт мониторе. Такой конфиг получается:

mplayer -vo fbdev -ao alsa -lavdopts threads=2:skiploopfilter=all:lowres=0 -cache 15000 -zoom -fs -x 1024 -y 700 -playlist TV2_utf8.m3u

Всё работает шикарно, но иногда появляются артефакты (квадратики) в сценах и быстро исчезают , но неприятно. Это не связано с динамичностью сцен, но я пока не понял почему эти ошибки появляются. А так... всё шикарно. Некоторых каналов в плей-листе нету. (не показывает) Есть пара каналов которые упорно рассыпаются.

ps забыл добавить вывод звука.
[Ответ]
Hip-Hop 11:17 08.12.2011
dm.tsvetkov, есть и другой способ который я хочу попробовать. У меня есть компьютер с e7200@2500mhz@3000mhz. Мы берем поток с h264 на этом e7200 и транскодируем его в mpeg2 и передаем на медиаплеер. В этом случаи медиаплеер может быть совсем слабой машиной, а e7200 должно хватить для кодирования на лету. Связка ffmpeg & ffserver + mplayer, должно работать.

Вариан №3 это vdpau. Советуют gf gt220. Производ gt210 может быть мало в каких-то моментах, а gt240 уже излишне - лишнее тепло - потреб.
[Ответ]
Hip-Hop 11:43 08.12.2011
Во-вторых, надо написать скрипт для записывания видео "по расписанию". Для этого нужно распарсить программу телепередач и решить вопрос с возможной рекламой на эфирных каналах. Как подключить пульт к mplayer рассказывать не буду. И дело в шляпе. [Ответ]
Hip-Hop 18:00 08.12.2011
dm.tsvetkov, не удержался и купил http://voronezh.dns-shop.ru/catalog/...-hdmi-low.html gt210.

Всё ништяк, загрузка упала, но редкое подсыпание осталось, хм. Надо смотреть в сторону udpxy?



[Ответ]
Вверх