troglobit / pimd

PIM-SM/SSM multicast routing for UNIX and Linux
http://troglobit.com/projects/pimd/
BSD 3-Clause "New" or "Revised" License
194 stars 86 forks source link

Routing mdns traffic #120

Closed fatalkill3r closed 6 years ago

fatalkill3r commented 6 years ago

Hi

I am currently trying to route mdns traffic [224.0.0.251]. Is it possible to do with pimd ? Any help will be appreciated. Its not working with current version of pimd. Thank you

troglobit commented 6 years ago

mDNS is link-local and not intended to be routed, so the TTL is set to 1, that's why it's not possible to route it. I'd suggest bridging the LANs instead.

fatalkill3r commented 6 years ago

Hi Thank you for your reply. Actually bridging the LANs is not a viable solution. Is it possible to alter the TTL and then forward ? Or something else. I have a chromecast which I wanted to operate across VLANs.

troglobit commented 6 years ago

Well, there's usually a good reason protocols are LAN limited. For instance, an mDNS address can be chromecast.local and resolve to 169.254.1.2, which is a perfectly working address although non-route:able, routers drop these per standard. What you really want is a DHCP server with combined DNS, i.e. proper DNS, that you can reach from both LANs.

However, it is possible to increase the TTL, although it's usually supposed to be increased on the source, if you're using Linux you can try this on the router:

iptables -t mangle -A PREROUTING -i eth0 -d 224.0.0.251 -j TTL --ttl-inc 1

Seeing as this is not a pimd issue but a network support issue, I'm now closing this report.

fatalkill3r commented 6 years ago

Okay I have setup a topology. Attached is its image. I am using iperf to send traffic on multicast destination 224.0.0.251 with a TTL of 32. Its not going through. If I change the destination ip to 225.0.0.251 then it starts working. It seems pimd is not allowing 224.0.0.251 to be routed. Please help.

Diagram Explanation - On left side client is sitting On right Side multicast source is sitting In the centre we have linux router with pimd

img_20180402_140735

troglobit commented 6 years ago

Ah yes, 224.0.0.* is reserved in IPv4 multicast for LAN signaling, I should have led with that, sorry. Maybe the igmpproxy project can help.

fatalkill3r commented 6 years ago

Can I patch some range in pimd's source and make 224.0.0.251 to work ? Can SMCroute help me ? I can patch few lines and compile with your help.

Sorry but I wanted to make this to work. Thanks for your help.

troglobit commented 6 years ago

Maybe SMCRoute works, I haven't tried it for that purpose, but I'm fairly certain there's no filtering of the multicast.

fatalkill3r commented 6 years ago

Okay I will test it and get back on this. Thanks.

fatalkill3r commented 6 years ago

Okay I tested this scenario with smcroute and its not working. I can see below route in the multicast table. Do you think that linux kernel is somehow blocking this as 224.0.0.0 range is supposed to be local ? Is there a way I can patch kernel to change this behavior ?

~$ sudo smcroutectl
ROUTE (S,G)                        INBOUND          OUTBOUND                
(172.31.199.2, 224.0.0.251)        eth2             eth1
troglobit commented 6 years ago

Check if the route was actually set in the kernel with ip mroute first, but yeah it's very likely the kernel is (also) blocking this.

What you're attempting is non-standard and not recommended, I'd advise you to stop and try something else instead. I'm sorry, but I cannot help you any further.

fatalkill3r commented 6 years ago

Yes ip mroute shows the route but its not working.

Okay. Thank you for your help.