Linux – multicast routing – CentOS 5

iptableslinuxmulticastnetworkingrouting

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

Best Answer

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.

Related Topic