VLANs break up broadcast domains and thus the multicast traffic that mDNS (Avahi, Bonjour) enabled devices use to advertise their availability and services. We need a relay that will receive the multicast messages on one VLAN and repeat them to a different VLAN. Additionally, I have several Firewall rules, including those that explicitly allow specific traffic between individual VLANs (and block all other traffic). Sure, you can stand up a VM and use that to relay but doing this on the firewall is more appropriate and secure, in my opinion. Untangle, based on Debian Linux; allows us to easily install a minimally sized program, that starts at boot, this will accomplish our goals. Unfortunately, this feature although requested by users, is not officially supported by Untangle.
What You Need:
A running and configured Untangle (or other Ubuntu/debian distro) installation
Basic Linux terminal knowledge
Installation Procedure 1:
This method is probably the preferred of the two.
Open the terminal
Add the Debian repository.
Edit the avahi-daemon config file to allow reflection
Restart the daemon
Configure Avahi to run on system startup
Test it, if you would like, replace X with the VLAN ID
Installation Procedure 2:
Note: 'mdns-repeater' compiles and runs fine on Untangle 14 but doesn't appear to repeat broadcast packets. See Installation Procedure 1 for Untangle NGF. For Ubuntu systems, its runs fine, however. This method has the added benefit of seeing/logging the output of mDNS activity.
Open the terminal
Install the necessary packages:
Compile the program
Configure the system so mdns-repeater will start at system boot
chmod +x /etc/init.d/mdns-repeater
update-rc.d mdns-repeater defaults
Reboot if you want to or run the script to ensure proper operation
We looked at how you can repeat multicast frames across VLANs because we want to use Chromecast and other mDNS enabled services. VLANs break up broadcast domains by design. We installed the mdns-repeater application on an Untangle Next-Generation Firewall and configured the app to start at system boot.
For obvious reasons, you would not want to implement this on a production network because mDNS advertises somewhat sensitive information to all devices on those subnets.