Hi.
I know this is an old thread, and reviving could seem a mistake, however this is the only thread that comes on the list with you search the forum for IGMP and this is exactly what I intended to write a post about, and why I don't start a new. I also think that this subject will have to come relevant in the future as I'm sure the faster the internet gets bandwith-wise, more tv will start being broadcasted thru igmp. My isp have started broadcasting of tv channels digitally.
About the first post:
ifconfig eth0 multicast
ifconfig eth0 allmulti
ifconfig eth1 multicast
ifconfig eth1 allmulti
These commands should not be nessecary as a linux box / kernel handle these switches as needed, I know I tried to adjust them on my B3 with no diffrence, I left the settings as found and my IPTV works as a charm.
The short answer to your problem is IGMPproxy.
http://sourceforge.net/projects/igmpproxy/
One of the many opensource projects out there. You might want to know that this require you to compile it yourself. - but its very easy and this source has only few dependics.
The procedure is the same as alot of 'os' projects, make clean, ./configure, make, make install
The igmpproxy get installed at /usr/local/sbin and the conf is at /usr/local/etc - incase you didnt change it.
You need to add the debian repos, you can find a howto do that in the wiki.
igmpproxy.conf:
Code: Select all
quickleave
phyint eth0 upstream ratelimit 0 threshold 1
altnet 10.0.0.0/8
altnet 192.168.0.0/24
phyint eth1 downstream ratelimit 0 threshold 1
Shortly an example of the config of the igmpproxy, the config that follow the tar.gz has explainations of what the diffrent things mean. Basicly you just need to change the altnet ipadresses to whatever ip sends you the udp packets containing the iptv.
These can be found with tcpdump on your b3 (as root):
for it to do so you would however need a igmp join packet to be sent to enable the multicast stream, and you may need to start out with a router with an igmpproxy enabled or a computer directly connected to the wan port.
If there is any questions about this just ask them in the thread and I will be more specific.
Might be nessecary to force an igmp version, Ive done this in my /etc/rc.local file
Code: Select all
echo "2" > /proc/sys/net/ipv4/conf/eth0/force_igmp_version
echo "2" > /proc/sys/net/ipv4/conf/eth1/force_igmp_version
Show the current version (eth1):
Code: Select all
cat /proc/sys/net/ipv4/conf/eth1/force_igmp_version
Firewall, if you want the udp video/audio packets on your lan you need to forward the packets:
Code: Select all
sudo iptables -A FORWARD -p udp -m udp -s 192.168.0.0/24 -d 239.0.0.0/16 --dport 5001 -j ACCEPT
sudo iptables -A FORWARD -p udp -m udp -s 10.0.0.0/8 -d 239.0.0.0/16 --dport 5001 -j ACCEPT
I always aim at letting as few packets as possible thru my firewall, however you can omit the source (-s) option.
Code: Select all
sudo iptables -A FORWARD -p udp -m udp -d 239.0.0.0/16 --dport 5001 -j ACCEPT
This is the act of a paranoid man, to only let sources and destinations pass that you deside, however is the most secure setup, but it also mean you might have to open op more later or change the rules, if you deside to specify sources as well as you can't know if changes to servers is made by the isp.
Igmpproxy also need to get igmp replies from the multicast router, otherwise it will close the udp stream after 3 minuts.
Code: Select all
iptables -A INPUT -s 172.16.0.0/32 -d 224.0.0.0/23 -p igmp -j ACCEPT
You want to listen to the igmp packets with tcpdump to dertime the correct ipadresses. The destination is correct as it allow 224.0.0.0-224.0.1.255 to passthru. Its reserved traffic area for igmp.
Remeber to save your firewall settings when done, otherwise a reboot of the B3 will discard your rules.
Code: Select all
/etc/init.d/bubba-firewall restart
Additionaly:
If you have a Set-top box that boots over the network from your isp, you can use dnsmasq, thats installed on the Bubba by default to specify the boot-ip.
If you need specific advise or something seems unclear or badly explained let me know.