So after backing up the config that worked and resetting to default, I think I found the trick. I’m not sure why, but this rule is what did the trick:
/interface bridge filter add chain=forward in-bridge=subscriberBridge out-bridge=subscriberBridge action=drop disabled=no
Without this rule, I got the weird results described previously, but when adding this rule things started behaving how we envisioned.
So, for the record I did:
Start w/ an empty bridge
/interface bridge add name=subscriberBridge
Configure bridge to firewall bridgeports and VLANs
/interface bridge settings set use-ip-firewall=yes use-ip-firewall-for-vlan=yes
Create VLAN(s)
/interface vlan add interface=ether2 vlan-id=101 name="rm201" disabled=no
/interface vlan add interface=ether2 vlan-id=102 name="rm202" disabled=no
/interface vlan add interface=ether2 vlan-id=103 name="rm203" disabled=no
/interface vlan add interface=ether2 vlan-id=104 name="rm204" disabled=no
/interface vlan add interface=ether2 vlan-id=105 name="rm205" disabled=no
Add ports to subscriberBridge
/interface bridge port add bridge=subscriberBridge interface="rm201" disabled=no
/interface bridge port add bridge=subscriberBridge interface="rm202" disabled=no
/interface bridge port add bridge=subscriberBridge interface="rm203" disabled=no
/interface bridge port add bridge=subscriberBridge interface="rm204" disabled=no
/interface bridge port add bridge=subscriberBridge interface="rm205" disabled=no
Set up magic bridge filter rule
/interface bridge filter add chain=forward in-bridge=subscriberBridge out-bridge=subscriberBridge action=drop disabled=no
Then, I set up IP address, firewall NAT, DHCP, hotspot, etc on subscriberBridge.