Салют коллеги!
ситуация следующая: 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
[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
начал копать в сторону модулей ядра, но к примеру после команды 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