mDNS Repeater

mDNS Repeater (Multicast DNS Repeater) lets you relay Multicast DNS packets between different network segments (VLANs), enabling device and service discovery across subnet boundaries.

Overview

mDNS (Multicast DNS, also known as Avahi, Bonjour, Zeroconf) is a protocol for discovering devices and services on a local network without the need to configure a DNS server. mDNS uses the multicast address 224.0.0.251 (IPv4) and ff02::fb (IPv6), and by default packets do not leave the local subnet.

Problem: In segmented networks with multiple VLANs, devices in one VLAN cannot discover services in another VLAN.

Solution: mDNS Repeater relays mDNS packets between the specified interfaces while preserving the original source addresses.

Typical use cases

Home Automation (smart home):

  • Apple HomeKit devices in an IoT VLAN are reachable from the main network
  • Integration with Home Assistant, Homebridge
  • Control of smart lighting, climate, and cameras

Media streaming:

  • Apple AirPlay (AirPlay 2) for audio/video streaming
  • Google Chromecast discovery across VLANs
  • Spotify Connect, DLNA/UPnP devices

Network services:

  • Discovery of network printers (AirPrint, IPP)
  • Scanners and multifunction devices
  • NAS (Synology, QNAP) in a dedicated VLAN

Enterprise networks:

  • Shared printers for different departments
  • Wireless presentation systems (Apple TV, Miracast)
  • Conference rooms with AirPlay/Chromecast

How mDNS Repeater works

  1. A device in VLAN A sends an mDNS query multicast to 224.0.0.251
  2. The VyOS mDNS repeater intercepts the packet on the VLAN A interface
  3. The repeater relays the packet (without changing the source) to the other configured interfaces
  4. Devices in VLAN B receive the query and respond
  5. The repeater relays the responses back to VLAN A
  6. The device in VLAN A discovers the service in VLAN B

Important: mDNS Repeater operates at the link layer and does not change the source IP addresses. This means routing must be configured between the VLANs.

Technical details

Multicast addresses:

  • IPv4: 224.0.0.251
  • IPv6: ff02::fb

UDP port: 5353

Service types (examples):

  • _airplay._tcp - Apple AirPlay
  • _homekit._tcp - Apple HomeKit
  • _googlecast._tcp - Google Chromecast
  • _ipp._tcp - Internet Printing Protocol
  • _printer._tcp - Printers
  • _http._tcp - HTTP services
  • _ssh._tcp - SSH services
  • _smb._tcp - Samba/Windows shares
  • _afpovertcp._tcp - Apple File Protocol

Basic configuration

Minimal setup

For the mDNS repeater to work, you must specify at least 2 interfaces:

set service mdns repeater interface eth1
set service mdns repeater interface eth2

commit
save

This configuration relays all mDNS packets between eth1 and eth2.

Configuration structure

service mdns repeater
  ├── disable                           # Disable the service
  ├── interface <interface>             # Interface for the repeater (minimum 2)
  ├── ip-version <ipv4|ipv6|both>      # IP protocol version
  ├── allow-service <service>           # Restrict services (optional)
  └── browse-domain <domain>            # Additional domains (optional)

Configuring interfaces

Specifying interfaces

# Main network
set service mdns repeater interface eth0

# VLAN 10 - Guest network
set service mdns repeater interface eth1.10

# VLAN 20 - IoT devices
set service mdns repeater interface eth1.20

# VLAN 30 - Multimedia
set service mdns repeater interface eth1.30

commit
save

Important: You can specify any number of interfaces. mDNS packets will be relayed between all specified interfaces.

Supported interfaces

The mDNS repeater works on the following interface types:

  • Physical Ethernet: eth0, eth1
  • VLAN interfaces: eth1.10, eth1.100
  • Bonding interfaces: bond0
  • Bridge interfaces: br0

IP protocol version

Choosing IPv4, IPv6, or both

By default, the mDNS repeater works for both IP versions. You can restrict it:

# IPv4 mDNS only
set service mdns repeater ip-version ipv4

# IPv6 mDNS only
set service mdns repeater ip-version ipv6

# IPv4 and IPv6 (default)
set service mdns repeater ip-version both

commit
save

Recommendation: Use both if the network uses dual-stack (IPv4 + IPv6).

Restricting services

Allow-service filtering

For security and performance, you can restrict relaying to only the services you need:

# Allow AirPlay only
set service mdns repeater allow-service '_airplay._tcp'

# Allow AirPlay and HomeKit
set service mdns repeater allow-service '_airplay._tcp'
set service mdns repeater allow-service '_homekit._tcp'

# Allow printers
set service mdns repeater allow-service '_ipp._tcp'
set service mdns repeater allow-service '_printer._tcp'

commit
save

Without allow-service: All mDNS services are relayed (default).

With allow-service: Only the specified services are relayed.

Popular services

# Apple ecosystem
set service mdns repeater allow-service '_airplay._tcp'
set service mdns repeater allow-service '_homekit._tcp'
set service mdns repeater allow-service '_raop._tcp'
set service mdns repeater allow-service '_airplay-audio._tcp'

# Google/Chromecast
set service mdns repeater allow-service '_googlecast._tcp'
set service mdns repeater allow-service '_googlezone._tcp'

# Printing
set service mdns repeater allow-service '_ipp._tcp'
set service mdns repeater allow-service '_ipps._tcp'
set service mdns repeater allow-service '_printer._tcp'
set service mdns repeater allow-service '_pdl-datastream._tcp'

# File services
set service mdns repeater allow-service '_smb._tcp'
set service mdns repeater allow-service '_afpovertcp._tcp'
set service mdns repeater allow-service '_nfs._tcp'

# Media servers
set service mdns repeater allow-service '_http._tcp'
set service mdns repeater allow-service '_spotify-connect._tcp'
set service mdns repeater allow-service '_daap._tcp'

commit
save

Additional domains

Browse-domain

Some devices use specific domains for discovery:

# The standard mDNS domain .local is already included
# Adding additional domains (rarely needed)
set service mdns repeater browse-domain 'example.local'

commit
save

Note: In 99% of cases this option is not needed. By default, .local is used.

Disabling the service

Temporary disable

To disable the mDNS repeater without removing the configuration:

set service mdns repeater disable

commit
save

Re-enable it:

delete service mdns repeater disable

commit
save

Configuration examples

Example 1: Simple home network

Topology:

Main Network (192.168.1.0/24) --- eth0
IoT Network (192.168.10.0/24) --- eth1.10

Goal: An Apple TV on the main network must discover HomeKit devices in the IoT VLAN.

Configuration:

# Interfaces for the repeater
set service mdns repeater interface eth0
set service mdns repeater interface eth1.10

# Restrict to Apple services only
set service mdns repeater allow-service '_airplay._tcp'
set service mdns repeater allow-service '_homekit._tcp'
set service mdns repeater allow-service '_raop._tcp'

commit
save

Example 2: Enterprise network with printers

Topology:

Management VLAN 10 (10.10.10.0/24) --- eth1.10
IT VLAN 20 (10.10.20.0/24) --- eth1.20
Finance VLAN 30 (10.10.30.0/24) --- eth1.30
Printers VLAN 50 (10.10.50.0/24) --- eth1.50

Goal: All departments must see the printers in VLAN 50.

Configuration:

# All VLANs for the printers
set service mdns repeater interface eth1.10
set service mdns repeater interface eth1.20
set service mdns repeater interface eth1.30
set service mdns repeater interface eth1.50

# Printing only
set service mdns repeater allow-service '_ipp._tcp'
set service mdns repeater allow-service '_ipps._tcp'
set service mdns repeater allow-service '_printer._tcp'

commit
save

Example 3: Media network (AirPlay + Chromecast)

Topology:

Living Room VLAN 100 (192.168.100.0/24) --- eth1.100
Bedroom VLAN 101 (192.168.101.0/24) --- eth1.101
Office VLAN 102 (192.168.102.0/24) --- eth1.102

Goal: All devices must see the Apple TV and Chromecast in any room.

Configuration:

# All VLANs for media
set service mdns repeater interface eth1.100
set service mdns repeater interface eth1.101
set service mdns repeater interface eth1.102

# AirPlay and Chromecast
set service mdns repeater allow-service '_airplay._tcp'
set service mdns repeater allow-service '_raop._tcp'
set service mdns repeater allow-service '_googlecast._tcp'
set service mdns repeater allow-service '_spotify-connect._tcp'

commit
save

Example 4: Home Assistant + HomeKit

Topology:

Main Network (192.168.1.0/24) --- eth0
Home Assistant VLAN 20 (192.168.20.0/24) --- eth1.20
IoT VLAN 30 (192.168.30.0/24) --- eth1.30

Goal: Home Assistant in VLAN 20 controls IoT devices in VLAN 30, and an iPhone on the main network sees all HomeKit devices.

Configuration:

# All three networks
set service mdns repeater interface eth0
set service mdns repeater interface eth1.20
set service mdns repeater interface eth1.30

# HomeKit and IoT protocols
set service mdns repeater allow-service '_homekit._tcp'
set service mdns repeater allow-service '_hap._tcp'
set service mdns repeater allow-service '_http._tcp'

commit
save

Example 5: Full configuration without restrictions

Configuration:

# All VLANs participate in mDNS discovery
set service mdns repeater interface eth0
set service mdns repeater interface eth1.10
set service mdns repeater interface eth1.20
set service mdns repeater interface eth1.30

# IPv4 and IPv6 support
set service mdns repeater ip-version both

# No service restrictions (everything allowed)
# (do not set allow-service)

commit
save

Example 6: Yandex Cloud configuration

Topology:

Public Subnet (10.128.0.0/24) --- eth0
Private Subnet 1 (10.128.1.0/24) --- eth1
Private Subnet 2 (10.128.2.0/24) --- eth2

Goal: Internal services are discovered via mDNS across the private subnets.

Configuration:

# Private subnets only (do not include the public eth0)
set service mdns repeater interface eth1
set service mdns repeater interface eth2

# Restrict services
set service mdns repeater allow-service '_http._tcp'
set service mdns repeater allow-service '_ssh._tcp'
set service mdns repeater allow-service '_prometheus-http._tcp'

commit
save

Example 7: VK Cloud multi-tenant configuration

Topology:

Tenant A VLAN 100 (172.16.100.0/24) --- eth1.100
Tenant A VLAN 101 (172.16.101.0/24) --- eth1.101
Tenant B VLAN 200 (172.16.200.0/24) --- eth1.200
Tenant B VLAN 201 (172.16.201.0/24) --- eth1.201

Goal: mDNS only within a tenant (isolation between Tenant A and B).

Configuration for Tenant A:

# Tenant A VLANs only
set service mdns repeater interface eth1.100
set service mdns repeater interface eth1.101

commit
save

A separate VyOS for Tenant B or use VRF for isolation.

Firewall rules

Allowing mDNS traffic

mDNS uses UDP port 5353 and the multicast address 224.0.0.251. You must allow this traffic in the firewall.

VyOS 1.4 (Sagitta) - iptables:

# Allow mDNS multicast in INPUT
set firewall name WAN_LOCAL rule 100 action accept
set firewall name WAN_LOCAL rule 100 protocol udp
set firewall name WAN_LOCAL rule 100 destination port 5353
set firewall name WAN_LOCAL rule 100 destination address 224.0.0.251

# Allow in FORWARD (for relaying between VLANs)
set firewall name LAN_FORWARD rule 100 action accept
set firewall name LAN_FORWARD rule 100 protocol udp
set firewall name LAN_FORWARD rule 100 destination port 5353

commit
save

VyOS 1.5 (Circinus) - nftables:

# Input chain
set firewall ipv4 input filter rule 100 action accept
set firewall ipv4 input filter rule 100 protocol udp
set firewall ipv4 input filter rule 100 destination port 5353
set firewall ipv4 input filter rule 100 destination address 224.0.0.251

# Forward chain
set firewall ipv4 forward filter rule 100 action accept
set firewall ipv4 forward filter rule 100 protocol udp
set firewall ipv4 forward filter rule 100 destination port 5353

commit
save

IPv6 mDNS (ff02::fb)

# VyOS 1.5 - IPv6
set firewall ipv6 input filter rule 110 action accept
set firewall ipv6 input filter rule 110 protocol udp
set firewall ipv6 input filter rule 110 destination port 5353
set firewall ipv6 input filter rule 110 destination address ff02::fb

set firewall ipv6 forward filter rule 110 action accept
set firewall ipv6 forward filter rule 110 protocol udp
set firewall ipv6 forward filter rule 110 destination port 5353

commit
save

Security: Restricting by interface

Block mDNS on the WAN interface for security:

# Block mDNS on WAN
set firewall ipv4 input filter rule 90 action drop
set firewall ipv4 input filter rule 90 protocol udp
set firewall ipv4 input filter rule 90 destination port 5353
set firewall ipv4 input filter rule 90 inbound-interface name eth0

commit
save

Operational commands

Restarting mDNS Repeater

restart mdns repeater

Viewing logs

show log mdns repeater

Real-time monitoring:

monitor log mdns repeater

Checking the configuration

show service mdns repeater

Example output:

service mdns repeater {
    interface eth0
    interface eth1.10
    interface eth1.20
    allow-service _airplay._tcp
    allow-service _homekit._tcp
    ip-version both
}

Testing mDNS discovery

On a client (macOS):

# Discover all mDNS services
dns-sd -B _services._dns-sd._udp .

# Discover AirPlay devices
dns-sd -B _airplay._tcp .

# Discover printers
dns-sd -B _ipp._tcp .

# Discover HomeKit devices
dns-sd -B _homekit._tcp .

On a client (Linux):

# Install avahi-tools
sudo apt install avahi-utils

# Discover all services
avahi-browse -a

# Discover a specific service
avahi-browse _airplay._tcp

# Detailed information
avahi-browse -a -v -r

On a client (Windows):

Use these programs:

  • Bonjour Browser
  • Discovery - DNS-SD Browser
  • VLC (Media → Open Network Stream → discovery)

Packet capture

Capturing mDNS traffic for diagnostics:

# Capture on an interface
monitor traffic interface eth1.10 filter 'udp port 5353'

# Extended filter
monitor traffic interface eth0 filter 'host 224.0.0.251 and udp port 5353'

Example of an mDNS packet:

18:24:35.123456 IP 192.168.1.10.5353 > 224.0.0.251.5353: UDP, length 45
    0x0000:  4500 0049 0000 4000 ff11 0000 c0a8 010a  E..I..@.........
    0x0010:  e000 00fb 14e9 14e9 0035 0000 0000 0000  .........5......
    0x0020:  0001 0000 0000 0000 075f 6169 7270 6c61  ........._airpla
    0x0030:  7904 5f74 6370 056c 6f63 616c 0000 0c00  y._tcp.local....
    0x0040:  0100 0011 9400 1400                      ........

Monitoring and diagnostics

Checking that the repeater is working

# Check the process
ps aux | grep avahi

# systemd service status
systemctl status avahi-daemon

Logs

# All mDNS repeater logs
show log | match mdns

# Last 50 lines
show log | match mdns | tail 50

# Real-time monitoring
monitor log | match mdns

Checking multicast routing

# View multicast routes
show ip multicast route

# Interfaces with multicast
show ip multicast interface

Interface statistics

# Multicast packets
show interfaces ethernet eth0 statistics

# Detailed statistics
show interfaces detail

Troubleshooting

Problem 1: Devices are not discovered

Diagnostics:

# 1. Check the configuration
show service mdns repeater

# 2. Check the interfaces
show interfaces

# 3. Check the firewall
show firewall ipv4 input filter
show firewall ipv4 forward filter

# 4. Packet capture
monitor traffic interface eth1.10 filter 'udp port 5353'

Solution:

# Make sure the service is not disabled
delete service mdns repeater disable

# Verify that the correct interfaces are specified
set service mdns repeater interface eth0
set service mdns repeater interface eth1.10

# Allow mDNS in the firewall
set firewall ipv4 input filter rule 100 action accept
set firewall ipv4 input filter rule 100 protocol udp
set firewall ipv4 input filter rule 100 destination port 5353

set firewall ipv4 forward filter rule 100 action accept
set firewall ipv4 forward filter rule 100 protocol udp
set firewall ipv4 forward filter rule 100 destination port 5353

commit
save

# Restart the service
restart mdns repeater

Problem 2: Works in only one direction

Cause: Incorrect routing or the firewall blocks the return traffic.

Solution:

# Check the routes between VLANs
show ip route

# Make sure there are routes for both subnets
# For example:
# 192.168.1.0/24 via eth0
# 192.168.10.0/24 via eth1.10

# Check the firewall FORWARD rules
show firewall ipv4 forward filter

# Allow bidirectional traffic
set firewall ipv4 forward filter rule 100 action accept
set firewall ipv4 forward filter rule 100 protocol udp
set firewall ipv4 forward filter rule 100 destination port 5353

commit
save

Problem 3: Some services are not discovered

Cause: The allow-service filter blocks the required services.

Diagnostics:

# Check allow-service
show service mdns repeater

# If allow-service is set, check the list

Solution:

# Add the required service
set service mdns repeater allow-service '_googlecast._tcp'

# Or remove all restrictions for testing
delete service mdns repeater allow-service

commit
save
restart mdns repeater

Problem 4: mDNS packet storm

Symptoms: High CPU load, a large number of mDNS packets on the network.

Cause: A loop in the configuration or multiple mDNS repeaters in the same network.

IMPORTANT WARNING: Do NOT use the mDNS repeater in a VRRP setup with multiple active VyOS routers on the same network. This will create an mDNS packet storm.

Solution:

# Temporarily disable the repeater
set service mdns repeater disable
commit

# Check the topology:
# - Only one VyOS should be the mDNS repeater in the segment
# - There must be no loops in the interface configuration

# Fix the configuration and re-enable it
delete service mdns repeater disable
commit
save

Problem 5: IPv6 mDNS does not work

Diagnostics:

# Check ip-version
show service mdns repeater

# Check the IPv6 firewall
show firewall ipv6 input filter
show firewall ipv6 forward filter

Solution:

# Set ip-version to both
set service mdns repeater ip-version both

# Allow IPv6 mDNS
set firewall ipv6 input filter rule 110 action accept
set firewall ipv6 input filter rule 110 protocol udp
set firewall ipv6 input filter rule 110 destination port 5353
set firewall ipv6 input filter rule 110 destination address ff02::fb

set firewall ipv6 forward filter rule 110 action accept
set firewall ipv6 forward filter rule 110 protocol udp
set firewall ipv6 forward filter rule 110 destination port 5353

commit
save
restart mdns repeater

Problem 6: Apple AirPlay does not work

Detail: AirPlay uses several services at once.

Solution:

# Add all AirPlay services
set service mdns repeater allow-service '_airplay._tcp'
set service mdns repeater allow-service '_raop._tcp'
set service mdns repeater allow-service '_airplay-audio._tcp'

commit
save
restart mdns repeater

Also make sure the additional ports for AirPlay are open:

  • TCP 7000 (AirPlay data)
  • TCP 7100 (AirPlay mirroring)
  • UDP 6001-6011 (AirPlay audio)
  • UDP 47998-48000 (AirPlay control)

Problem 7: HomeKit devices are unavailable

Solution:

# HomeKit services
set service mdns repeater allow-service '_homekit._tcp'
set service mdns repeater allow-service '_hap._tcp'

commit
save
restart mdns repeater

Firewall for HomeKit (in addition to mDNS):

  • TCP 80 (HTTP)
  • TCP 443 (HTTPS)
  • TCP 8080 (alternative HTTP)

Problem 8: Chromecast is not discovered

Solution:

# Chromecast services
set service mdns repeater allow-service '_googlecast._tcp'
set service mdns repeater allow-service '_googlezone._tcp'

commit
save
restart mdns repeater

Firewall for Chromecast:

  • TCP 8008-8009 (Chromecast HTTP)
  • UDP 32768-61000 (dynamic ports for streaming)

Best practices

1. Minimal number of interfaces

Specify only the interfaces you need:

# Correct
set service mdns repeater interface eth0
set service mdns repeater interface eth1.10

# Incorrect - too many VLANs
# (leads to unnecessary traffic)

2. Use allow-service

Always restrict services for security and performance:

# Correct - only the required services
set service mdns repeater allow-service '_airplay._tcp'
set service mdns repeater allow-service '_homekit._tcp'

# Incorrect - all services (default)

3. Do not include the WAN interface

# Correct - LAN/VLAN only
set service mdns repeater interface eth1
set service mdns repeater interface eth1.10

# Incorrect - WAN included
# set service mdns repeater interface eth0  # WAN

4. Firewall rules

Always configure the firewall for mDNS:

# Allow mDNS on LAN
set firewall ipv4 input filter rule 100 action accept
set firewall ipv4 input filter rule 100 protocol udp
set firewall ipv4 input filter rule 100 destination port 5353
set firewall ipv4 input filter rule 100 inbound-interface name eth1

# Block mDNS on WAN
set firewall ipv4 input filter rule 90 action drop
set firewall ipv4 input filter rule 90 protocol udp
set firewall ipv4 input filter rule 90 destination port 5353
set firewall ipv4 input filter rule 90 inbound-interface name eth0

5. Avoid VRRP + mDNS Repeater

Do NOT use the mDNS repeater on both VyOS units in a VRRP setup. This will create a packet storm.

Correct: Use the mDNS repeater only on the master router or on a separate dedicated device.

6. Monitor for packet storms

Regularly check the logs for signs of a packet storm:

monitor log mdns repeater

If you see multiple repeated packets, check the topology.

7. Documenting allow-service

Document why each service is needed:

# AirPlay for conference rooms
set service mdns repeater allow-service '_airplay._tcp'

# Printers for all departments
set service mdns repeater allow-service '_ipp._tcp'

8. Testing after changes

After every configuration change, test that it works:

# On macOS
dns-sd -B _airplay._tcp .

# On Linux
avahi-browse -a

9. Backing up the configuration

show configuration service mdns repeater > /config/mdns-repeater-backup.txt

10. Using with NAT

If you use NAT, make sure mDNS traffic is not NATed:

# mDNS multicast must not pass through NAT
# Configure a NAT exclude if necessary

Compatibility with VyOS versions

VyOS 1.4 (Sagitta LTS)

The mDNS repeater is fully supported.

Basic commands:

set service mdns repeater interface <interface>
set service mdns repeater allow-service <service>

VyOS 1.5 (Circinus)

The mDNS repeater is fully supported with new options.

New capabilities:

  • Improved performance
  • Better integration with the nftables firewall
  • Support for additional browse-domain entries

The commands are the same:

set service mdns repeater interface <interface>
set service mdns repeater ip-version <ipv4|ipv6|both>

Home Automation integration

Home Assistant

VyOS configuration:

# Main network where Home Assistant runs
set service mdns repeater interface eth0

# IoT VLAN
set service mdns repeater interface eth1.30

# Services for Home Assistant
set service mdns repeater allow-service '_homekit._tcp'
set service mdns repeater allow-service '_hap._tcp'
set service mdns repeater allow-service '_http._tcp'

commit
save

Home Assistant configuration.yaml:

# mDNS discovery is already built into Home Assistant
# No additional settings are required

# Integrations will automatically discover devices:
discovery:
  enable:
    - homekit
    - zeroconf

homekit:
  auto_start: true

Homebridge

VyOS configuration:

# Homebridge VLAN
set service mdns repeater interface eth1.20

# Main network
set service mdns repeater interface eth0

# HomeKit services
set service mdns repeater allow-service '_homekit._tcp'
set service mdns repeater allow-service '_hap._tcp'

commit
save

Apple Home App

After configuring the mDNS repeater, devices will automatically appear in the Apple Home App on your iPhone/iPad.

Verification:

  1. Open the Home App
  2. Tap (+) → Add Accessory
  3. Devices in other VLANs should appear

Performance

Impact on the system

The mDNS repeater is a lightweight service:

  • CPU overhead: < 1% in typical scenarios
  • Memory: ~5-10 MB RAM
  • Network: Minimal traffic (multicast retransmission only)

Scaling recommendations

  • Up to 10 devices: Any configuration works great
  • 10-50 devices: allow-service filtering is recommended
  • 50-100 devices: Filtering is mandatory, monitor the packet rate
  • 100+ devices: Consider a centralized mDNS proxy (not a repeater)

Optimization

# Use allow-service to reduce traffic
set service mdns repeater allow-service '_airplay._tcp'
set service mdns repeater allow-service '_homekit._tcp'

# Do not specify unnecessary interfaces
# Only the required VLANs

Alternative solutions

When NOT to use mDNS Repeater

  1. VRRP setup: Multiple active routers will lead to a packet storm
  2. Very large networks: 100+ mDNS devices
  3. Strict security requirements: mDNS can disclose information about devices
  4. WAN usage: mDNS is for local networks only

Alternatives

Centralized Avahi Reflector:

# Install on a separate server (not VyOS)
sudo apt install avahi-daemon

# /etc/avahi/avahi-daemon.conf
[reflector]
enable-reflector=yes

DNS-SD with centralized DNS:

  • Wide-Area Bonjour (Apple)
  • DNS-Based Service Discovery (RFC 6763)

Application-specific solutions:

  • Homebridge for Apple HomeKit
  • ChromecastDiscovery for Google Cast
  • Dedicated IoT hub (Home Assistant, OpenHAB)

Next steps

Conclusion

The mDNS Repeater in VyOS is a powerful tool for enabling service discovery across VLAN boundaries. It is indispensable for:

  • The Apple ecosystem (AirPlay, HomeKit)
  • Google Chromecast
  • Network printers
  • Home automation systems
  • IoT devices

Key points:

  • A minimum of 2 interfaces to operate
  • Use allow-service for filtering
  • Configure firewall rules
  • Do NOT use in VRRP setups
  • Test after every change

With the right configuration, the mDNS Repeater will provide seamless device discovery in segmented networks without compromising security.

Reviewed by OpenNix LLC · Last updated on