IGMPproxy configuration

I assume you know how to work with the console, since you ignored the question.

This is what I would do with your network, however you have to find out from your provider which IPs are multicasting the IPTV stream to you, 239.0.0.0/8 and 77.0.0.0/8 are just examples of common IPTV sources. Possibly yours is/are different.

Also, this configuration is going to multicast only on the green network, to the IP address specified in the phyint green0 stanza, under altnet. You can add other IP addresses, if you plan to stream also to other machines. No blue0, no VPN, only green0.

Multicast means that even if the incoming packets are in one stream, they can be redistributed to several IP address by the local router (IPFire in your case). To do this, you need to use the IGMP protocol. In the configuration of the program that does that, igmpproxy, there is an input (upstream), and an output (downstream) from the point of view of IPFire. Both can be one address or several addresses (specified in altnet parameter). Some provider uses VLANS, as in the example of the wiki. In this case there are two network virtual interfaces intermingled into one physical ethernet card. Since you do not have a box upstream of IPFire, I assume you do not receive the multicast signal in a VLAN, therefore the incoming is red0 and not red0.8 as in the wiki. If I am wrong the configuration is more complex and you need to know which VLAN the provider is using.

Tutorial:

edit /etc/igmpproxy.conf

##------------------------------------------------------
## Enable Quickleave mode (Sends Leave instantly)
##------------------------------------------------------
quickleave

##------------------------------------------------------
## Configuration for eth0 (Upstream Interface)
##------------------------------------------------------
phyint red0 upstream  ratelimit 0  threshold 1
       altnet 239.0.0.0/8
       altnet 77.0.0.0/8

##------------------------------------------------------
## Configuration for eth1 (Downstream Interface)
##------------------------------------------------------
phyint green0 downstream  ratelimit 0  threshold 1
       altnet 192.168.50.106/32;   # receiver IP  TV set top box
       altnet 192.168.50.102/32;    # receiver IP PC


##------------------------------------------------------
## Disabled Interface
##------------------------------------------------------
phyint lo disabled
phyint blue0 disabled
phyint red0 disabled
phyint tun0 disabled
phyint ppp0 disabled
phyint imq0 disabled
phyint mast0 disabled

edit /etc/sysconfig/firewall.local

case "$1" in
  start)
        ## add your 'start' rules here
        # for igmpproxy
        /usr/sbin/igmpproxy /etc/igmpproxy.conf &
        /sbin/iptables -I IPTVINPUT -i red0 -d 224.0.0.0/4 -j ACCEPT
        /sbin/iptables -I IPTVFORWARD -i red0 -d 224.0.0.0/4 -j ACCEPT
        ## end for igmpproxy
        ;;
  stop)
        ## add your 'stop' rules here
        # for igmpproxy
        /sbin/iptables -D IPTVINPUT -i red0 -d 224.0.0.0/4 -j ACCEPT
        /sbin/iptables -D IPTVFORWARD -i red0 -d 224.0.0.0/4 -j ACCEPT
        killall igmpproxy
        # end for igmpproxy
        ;;
  reload)
        $0 stop
        $0 start
        ## add your 'reload' rules here
        ;;
  *)
        echo "Usage: $0 {start|stop|reload}"
        ;;
esac

edit /etc/sysconfig/rc.local

## net tv setting
/usr/sbin/igmpproxy /etc/igmpproxy.conf &

After you change these three files, you need to start igmpproxy in the background, either in the console enter

/usr/sbin/igmpproxy /etc/igmpproxy.conf &

and

/etc/sysconfig/firewall.local reload

or in alternative simply reboot. Probably you should reboot anyway.

This setting works for me, no guarantee it will work for you.

3 Likes