LINUX.ORG.RU
ФорумAdmin

IPTV за шлюзом Centos 6.4

 , , ,


0

1

Салют коллеги!

ситуация следующая: Centos 6.4 шлюз eth0 - local 192.168.0.1 eth1 - internet, dhcp (внешний статический IP от провайдера) + dir-300 на ddwrt в режиме роутера (192.168.0.2)

длительное время на dir-300 замечательно работал udpxy. IPTV на ББ VLC - это проверено.

решил настроить udpxy на Шлюзе.

есть один нюанс: Eth1 - это USB ethernet adapter qf9700(истинный китаец) - работает нормально, пришлось попотеть чтобы найти и собрать для него драйвер.

и столкнулся с проблемой: udpxy - работает, но ТВ не вещает, но как только я включаю tcpdump -i eth1 igmp, IPTV начинает работать, с артефактами и задержками но работать. останавливаем дамп и вещание прекращается.

настройки:

[root@isidis etc]# uname -r
2.6.32-358.23.2.el6.x86_64
ip link
[root@isidis ~]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:25:22:62:10:07 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:e0:4c:53:44:58 brd ff:ff:ff:ff:ff:ff

ifconfig тут настораживает количество ошибок на eth1

[root@isidis ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:25:22:62:10:07
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::225:22ff:fe62:1007/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:132645 errors:0 dropped:0 overruns:0 frame:0
          TX packets:169239 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:13190038 (12.5 MiB)  TX bytes:215852484 (205.8 MiB)
          Interrupt:20 Base address:0xe000

eth1      Link encap:Ethernet  HWaddr 00:E0:4C:53:44:58
          inet addr:46.188.19.75  Bcast:46.188.19.255  Mask:255.255.255.0
          inet6 addr: fe80::2e0:4cff:fe53:4458/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:438453 errors:1879 dropped:780 overruns:761 frame:2847
          TX packets:138993 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:225387095 (214.9 MiB)  TX bytes:13999591 (13.3 MiB)

rc.firewall

#open IGMP IP TV
iptables -A INPUT -p igmp -j ACCEPT
iptables -A INPUT -p udp -s 224.0.0.0/240.0.0.0 -j ACCEPT
iptables -A INPUT -p udp -d 224.0.0.0/240.0.0.0 -j ACCEPT
iptables -t mangle -A PREROUTING -d 224.0.0.0/240.0.0.0 -p udp -j TTL --ttl-inc 3

udpxy

[root@isidis etc]# ps ax | grep udpxy
 1209 ?        S      0:00 /usr/bin/udpxy -a 192.168.0.1 -p 82 -m 46.188.19.75 -c 16 -B 16384 -R 1 -H 1 -n -19 -M 60

sysctl

[root@isidis etc]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.conf.all.force_igmp_version = 2
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
error: permission denied on key 'net.ipv4.conf.all.mc_forwarding'

ну и теперь переходим к загадке, которую мне пока не удалось разрешить:

статус udpxy - работает, но ТВ не вещает, но как только я включаю tcpdump -i eth1 igmp IPTV начинает работать, с артефактами и задержками но работать. останавливаем дамп и вещание прекращается

[root@isidis etc]# tcpdump -i eth1 igmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
14:47:05.346739 IP isidis.ru > 239.64.64.24: igmp v2 report 239.64.64.24
14:47:10.693193 IP isidis.ru > 239.64.64.24: igmp v2 report 239.64.64.24
14:47:11.246279 IP isidis.ru > 239.64.64.24: igmp v2 report 239.64.64.24
14:47:17.627193 IP 10.200.103.1 > all-systems.mcast.net: igmp query v2
14:47:17.630221 IP 10.200.103.1 > all-systems.mcast.net: igmp query v2
14:47:26.301267 IP isidis.ru > 239.64.64.24: igmp v2 report 239.64.64.24
14:47:56.914265 IP isidis.ru > all-routers.mcast.net: igmp leave 239.64.64.24
14:47:56.918224 IP isidis.ru > 239.64.64.9: igmp v2 report 239.64.64.9
14:48:04.698231 IP isidis.ru > 239.64.64.9: igmp v2 report 239.64.64.9
14:48:07.797303 IP isidis.ru > 239.64.64.9: igmp v2 report 239.64.64.9
14:48:14.713223 IP isidis.ru > all-routers.mcast.net: igmp leave 239.64.64.9
^C
11 packets captured
17 packets received by filter
0 packets dropped by kernel
285 packets dropped by interface
<<< возможно проблема в >>>285 packets dropped by interface

начал копать в сторону модулей ядра, но к примеру после команды modprobe ipt_TTL я не вижу этого модуля, хотя iptables не ругается на привило -j TTL --ttl-inc 3

[root@isidis etc]# lsmod | grep ipt
ipt_MASQUERADE          2466  1
iptable_mangle          3349  1
iptable_nat             6158  1
nf_nat                 22759  2 ipt_MASQUERADE,iptable_nat
nf_conntrack_ipv4       9506  4 iptable_nat,nf_nat
nf_conntrack           79645  5 xt_state,ipt_MASQUERADE,iptable_nat,nf_nat,nf_conntrack_ipv4
iptable_filter          2793  1
ip_tables              17831  3 iptable_mangle,iptable_nat,iptable_filter

отчасти пользовался этим http://www.linux.org.ru/forum/admin/7012520#comment-7013878 (комментарий)

ну и на последок

[root@isidis /]# cat /usr/src/kernels/2.6.32-358.23.2.el6.x86_64/.config | grep CONFIG_IP_MULTICAST
CONFIG_IP_MULTICAST=y

с igmpproxy поставил и отложил в долгий ящик, с лету на заработало, да и iptv нужно вещать по wifi



Последнее исправление: cetjs2 (всего исправлений: 9)

В modules.alias прописано «alias ipt_TTL xt_HL», то есть есть один модуль, он реализует и TTL для ipv4 и HL (Hop Limit) для ipv6.

ИМХО, вся проблема в драйвере вашей чудо-сетёвки. Видимо, этот истиный китаец не понимает мультикаст и игнорирует эти пакеты. А когда запущен tcpdump сетёвка переводится в promisc-режим, она начинает принимать все пакеты (в выводе ip link show у неё появляется дополнительный флаг).

Наверное, тут ничего не сделать, дравер не поправить, так и работайте с tcpdump'ом. Ну, tcpdump лучше запускать с флагом '-n', чтобы DNS не нагружать.

mky ★★★★★
()

Артефакты, скорее всего, из-за того, что ваша сетевая карта работает по USB 1.1. Китайские карты, они такие! Media 100mbit/s поддерживают, а само подключение по USB 1.1, что ограничивает вас 12 мегабитами.

А по поводу дропов, попробуйте rp_filter отключить на интерфейсе.

ValdikSS ★★★★★
()
Ответ на: комментарий от mky

попробую вечерком ifconfig eth1 promisс

начал подозревать что usb ethernet работает не корректно когда возникли проблемы с его выключением через ip link set dev eth1 down. затем появились подозрения после того как увидел в tcpdump - XX packets dropped by interface

в общем жить этот адаптер будет теперь на помойке, вечером установлю pcie eth.

viktor123
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.