Runbook 08 — mDNS reflector + cast/print rules (WORKSTATIONS ⇄ IOT)¶
Goal: let phones/laptops/desktops on WORKSTATIONS (the trusted client zone —
wired + stationary wifi, incl. the Kodi box) discover and use the Roku and the wifi
printer on IOT, without flattening the network. mDNS/Bonjour is link-local multicast
(224.0.0.251:5353) and does not cross VLANs, so you need a reflector plus
unicast allow rules for the actual streams.
Prereqs: runbook 06 validated (WORKSTATIONS↔IOT unicast allow rules stubbed).
1. Reflect mDNS across VLANs — native OPNsense plugin (source-checked)¶
OPNsense ships a native mDNS repeater. System → Firmware → Plugins → install
os-mdns-repeater; after a reload it appears at Services → mDNS Repeater
(displayed text is "mDNS Repeater"):
- Enable: on (the checkbox is labeled just "Enable")
- Listen Interfaces: select WORKSTATIONS and IOT. At least 2 must be
selected; the daemon supports up to 5. (The form also has "Enable CARP Failover"
and a "Blocklist" — neither is needed for this single-node lab.)
That's the reflector — it re-broadcasts mDNS announcements between the selected VLANs. You still need the unicast allow rules below for the actual media/print streams (the reflector only carries discovery, port 5353).
Alternatives (only if you'd rather not run the plugin): - At the APs: UniFi/Omada/Aruba have a built-in "Multicast DNS"/Bonjour reflector — enable it and scope it to WORKSTATIONS ⇄ IOT. - Avahi on a tiny helper LXC with a leg in WORKSTATIONS + IOT (
dnf install avahi,enable-reflector=yes). Don't multi-home a sensitive box (fileserver/ Proxmox) into IOT just for this.
2. Unicast allow rules (the actual media/print traffic)¶
Discovery ≠ data. Add/confirm these (these refine the stubs from runbook 06):
Firewall → Rules → WORKSTATIONS:
- Pass: src WS net → dst IOT net:
- Roku/Jellyfin cast: TCP 8060 (Roku ECP), 8009 (Chromecast), AirPlay
TCP 7000,7100, plus the app's media ports as needed.
- Printing: TCP 631 (IPP), 9100 (raw/JetDirect), UDP 5353 (mDNS).
- Pass: src WS net → dst IOT net UDP 5353 (mDNS) — so reflected queries/
responses reach devices.
Firewall → Rules → IOT (return/originated discovery):
- Pass: src IOT net → dst WS net UDP 5353 (mDNS responses) — keep this
narrow (port 5353 only); IOT remains otherwise blocked from RFC1918.
If you used Option A (AP reflector), the reflection happens at L2 on the AP; you still need the unicast allow rules above for the streams that traverse the firewall between VLANs.
Validation¶
- [ ] A phone on WORKSTATIONS sees the Roku in its cast list and can start playback from Jellyfin.
- [ ] A laptop on WORKSTATIONS discovers the printer (Bonjour/IPP) and prints.
- [ ] IOT remains blocked from everything else in RFC1918 (only 5353 back to WORKSTATIONS + Jellyfin to SERVERS) — verify in the firewall live log.
Then → runbook 09 (public services).