I'm trying to pass mulitcast stream from interface eth1 (192.168.20.41) to interface tun0 (192.168.100.40) on CentOS 5.
I can see incoming multicast stream on eth1:
tcpdump -n -i eth1
type=1700 audit(1324681169.542:52): dev=eth1 prom=256 old_prom=0 auid=4294967295 ses=4294967295
Dec 23 17:59:29 localhost kernel: device eth1 entered promiscuous mode
Dec 23 17:59:29 localhost kernel: type=1700 audit(1324681169.542:52): dev=eth1 prom=256 old_prom=0 auid=4294967295 ses=4294967295
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
17:59:29.576192 IP 192.168.20.20.52194 > 224.1.1.1.search-agent: UDP, length 1328
17:59:29.576277 IP 192.168.20.20.52194 > 224.1.1.1.search-agent: UDP, length 1328
17:59:29.576801 IP 192.168.20.20.52194 > 224.1.1.1.search-agent: UDP, length 1328
But I cannot see multicast on tun0 interface. What I'm doing wrong? The configuration is attached below:
/etc/igmpproxy.conf file:
phyint eth1 upstream ratelimit 0 threshold 1
altnet 192.168.100.0/24
phyint tun0 downstream ratelimit 0 threshold 1
phyint eth0 disabled
phyint eth5 disabled
iptable configuration:
iptables -A INPUT -p igmp -j ACCEPT
iptables -A INPUT -d 224.0.0.0/240.0.0.0 -p udp -m udp -j ACCEPT
iptables -A FORWARD -d 224.0.0.0/240.0.0.0 -p udp -j ACCEPT
modprobe ipt_TTL
iptables -t mangle -A PREROUTING -d 224.0.0.0/240.0.0.0 -p udp -j TTL --ttl-inc 1
tun0 adapter is GRE tunnel over eth0: cat /etc/sysconfig/network-scripts/ifcfg-tun0
DEVICE=tun0
TYPE=GRE
ONBOOT=yes
MY_INNER_IPADDR=192.168.100.40
PEER_INNER_IPADDR=192.168.100.30
PEER_OUTER_IPADDR=192.168.20.30
I consider multicast routing kind of a black magic, but here are few shots ...
Check if igmpproxy creates the multicast route using
ip mroute
command.If it does, your kernel is probably still filtering the input.
Most common cause is missing route to the source. Did you try disabling iptables? Or use
TRACE
target?And if multicast route is not created I'd suggest using pimd (that's what I use for routing my IPTV multicasts).
And it seems you use altnet wrong. According to mrouted documentation, it means
Specifies an additional subnet (network) attached to the physical interface described in the phyint entry. mask_len is the length of the network mask.
(can't leave a comment, so I'll leave an answer)
If I understand rightly, you have a system on 192.168.20.0/24 sending multicast traffic to a particular group 224.1.1.1, and you want to route that traffic over a tunnel interface on an intermediate Linux box.
I'm not familiar with the operation of igmpproxy, but just from the name, I suspect it echoes IGMP packets to the distant LAN. This may not work for your tunnel implementation because IGMP is meant to operate only on a local network, not on a tunnel.
PIM would be your friend here - it will enable your Linux box to share information about multicast sources and groups with other routers.
What kind of system is terminating the GRE tunnel? Is it capable of running PIM in dense mode or sparse mode? Could the local Linux box run PIM if you need?
A quick Google reveals the Linux Multicast HOWTO here.
HTH!