Config igmpproxy to allow multicast udp from WAN to LAN

For your usage, I think the best thing to do is edit /etc/sysctl.conf and add the lines:

net.ipv4.conf.all.mc_forwarding = 1
net.ipv6.conf.all.mc_forwarding = 1

Then either reboot or run sysctl -p

1 Like
  • Please remember to use one post to communicate multiple thoughts from those responding
  • To change the values
    • Edit them in /etc/sysctl.conf
    • Or the commands:

sysctl -w net.ipv4.conf.all.mc_forwarding=1 (in my testing, this one isn't working)
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=0

installed

copied the 2 lines in:
root@OpenWrt:~# vi /etc/sysctl.conf

Defaults are configured in /etc/sysctl.d/* and can be customized in this file

net.ipv4.conf.all.mc_forwarding = 1
net.ipv6.conf.all.mc_forwarding = 1

root@OpenWrt:~# vi /proc/sys/net/ipv4/conf/all/mc_forwarding = 1

file seems to be empty ?
~
~

You can't vi these files, you can "cat" them to see contents, or "echo" quantities to them like echo 1 > /my/special/file/here

after editing sysctl.conf be sure to run sysctl -p to load those values into the kernel

root@OpenWrt:~# cat /proc/sys/net/ipv4/conf/all/mc_forwarding
1

root@OpenWrt:~# cat/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
-ash: cat/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts: not found
root@OpenWrt:~#

This isn't a file...as I told you:

It seems you completed this step already.

root@OpenWrt:~# vi /etc/sysctl.conf

Defaults are configured in /etc/sysctl.d/* and can be customized in this file

net.ipv4.conf.all.mc_forwarding = 1
net.ipv6.conf.all.mc_forwarding = 1
~

  • /etc/sysctl.conf 1/3 33%

Are you saying /etc/sysctl.conf is empty!?!?

Something wrong...

root@OpenWrt:~# cat /etc/sysctl.conf

Defaults are configured in /etc/sysctl.d/* and can be customized in this file

net.ipv4.conf.all.mc_forwarding = 1
net.ipv6.conf.all.mc_forwarding = 1
root@OpenWrt:~#

only these 2 lines are in this file

I think we're making some progress, but I gotta say, it seems igmpproxy should configure mc_forwarding on the interfaces it's configured for during start-up. If it doesn't that seems to be a bug, as why would you even start it up ?

@mickey84 your posts will be much more intelligible if when you copy and paste text you put it into preformatted blocks. you can use three backtick marks ` to start a preformatted block, and end it with three more.

Possibly...but then you have a multicast hub...although...this may be what occurs once the subscription is made. I need a PIM to verify that.

On my WAN, this comes from the PIM...then the stream starts.

Yeah, my understanding of how igmpproxy works is that it listens to igmp and opens up the kernel to forwarding those packets that have been requested from one interface to another by adding multicast routes to the kernel. But without forwarding enabled in the kernel that'd never work.

Other kinds of routers would actually listen to the packets on one interface, bring them into userspace, and then spew them out on the other interfaces, but I don't think igmpproxy does that, it just instructs the kernel to do it (but note, I'm not an expert here, and the documentation on igmpproxy is pretty sparse).

EDIT: @mickey84 now that you seem to have things set up and ip-full installed here's my suggested next steps:

  1. reboot router, so we are in a known good state
  2. ip mroute show to see what multicast routes we have
  3. start up the sender
  4. ip mroute show again to see if anything changed
  5. start up the receiver
  6. ip mroute show again to see if anything changed (igmpproxy should do something here)
  7. Did you get the stream?
1 Like
No sender or receiver:
root@OpenWrt:~# ip mroute show

Sender started:
root@OpenWrt:~# ip mroute show
(10.0.0.50, 232.0.1.2)           Iif: unresolved  State: resolved

Sender and receiver started:
root@OpenWrt:~# ip mroute show
(10.0.0.50, 232.0.1.2)           Iif: eth0       Oifs: br-lan  State: resolved
(10.0.0.120, 232.0.1.2)          Iif: unresolved  State: resolved
root@OpenWrt:~#

Would you just for practice go back and edit the last post to stick the parts you copied and pasted into preformatted blocks? Seriously this makes it much easier to know what was output of a command and what wasn't etc?

mean time, I think that this shows that igmpproxy is working in that it is creating routes.

To give you an idea of what I mean, here is the best way to format that message for our understanding:

No sender or receiver:

root@OpenWrt:~# ip mroute show

Sender started:

root@OpenWrt:~# ip mroute show
(10.0.0.50, 232.0.1.2) Iif: unresolved State: resolved

Sender and receiver started:

root@OpenWrt:~# ip mroute show
(10.0.0.50, 232.0.1.2) Iif: eth0 Oifs: br-lan State: resolved
(10.0.0.120, 232.0.1.2) Iif: unresolved State: resolved

Anyway, beyond the formatting issue, this seems to be correct. So, do you see the stream? If not then I suspect we have firewall issues maybe?

no stream.
should I change the firewall rules to accept all ?

also is this relevant ? query is on 224.0.0.1 and in openwrt it says 224.0.0.0/4
11
maybe change settings there ?

I think better would be to look at the firewall before and after startup, like this:

  1. reboot router for known good state
  2. on router run iptables-save and copy and paste that into a file
  3. start up sender
  4. on router run iptables-save and save this into second file
  5. start up receiver
  6. on router run iptables-save and save this in third file.

Now, come back here and copy and paste contents of each file into separate preformatted blocks so we can see how the firewall changed if at all. If you know how to run "diff" you could diff -u the files and just paste the differences in step 4 and step 6... we actually don't need the whole thing just what did it do to change?

you could do: iptables-save > file1.txt and iptables-save > file2.txt and iptables-save > file3.txt and then give us the output of diff -u file1.txt file2.txt and of diff -u file1.txt file3.txt but the diff program you'll have to run on some other computer, unless you install diff on the router.

@lleachii, I see that the docs on this https://openwrt.org/docs/guide-user/network/wan/udp_multicast?s[]=igmpproxy are pretty out of date am I right? Is udpxy required anymore?

I was under impression that igmpproxy start up scripts automatically configure the firewall rules, but the docs online suggest adding manual firewall rules.

I do see that it has some useful steps there that we probably could use such as adding

net.ipv4.conf.all.force_igmp_version=2 to the sysctl.conf file @mickey84 you should probably do this since your switch seems to only use igmp2, reload using sysctl -p or a reboot.

Once we get this working I will post a new thread about improving these docs and try to make a first stab at it. If you or @Mushoz or anyone else are willing to help there I'd welcome it.

igmpproxy was updated to add the option zone - this allows it to create the proper firewall rules.

UDProxy is for converting into unicast...this won't work with true multicast applications.

Also, the OP's /etc/sysctl.conf shouldn't have been empty...

1 Like

So you want me to post these thousands of lines is that correct ? just want to be sure

If you can use diff that would be good... otherwise there's a way to "fold up" these big lines... use the little "gear" icon and select "hide details" then inside that also use the preformatted text like this:

Summary

Here are some details preformatted for you:

preformatted text here