Hi all, I’ve gotten a Brother machine (DCP series) that can do wifi printing/scanning over their proprietary app. However, I’d like to lock it down from my network, because having it on the same LAN as my other devices and the ability to phone out to the internet seem like room for mischievious activities.
For context, I have OpenWRT on my router, and my clients can access the Brother using their iPrint&Scan app and AirPrint on wifi, as well as the traditional USB port. But I’m not good in networking. In my research, I drafted out the following solutions:
- Create a firewall rule to block the printer itself from making outbound requests. Seems simple, but I’m not sure if this can persist after IP changes or not.
- Create a VLAN for “IoT devices” that cannot send outbound requests to my normal VLAN nor the internet. Inspiration from this video, I’d need to manage a new SSID but it may come in handy for more IoT devices later.
- Hook the Brother up to a Raspberry Pi via USB, and install CUPS + SANE on the Pi. Assuming the Pi cannot “phone home” on behalf of the printer, this makes it a local-only “print+scan service” on my normal network and doesn’t require an extra VLAN.
I’d like to ask: which solution above is best for “neutering” the Brother? Or are there any alternatives/details I might’ve missed? I’m not sure if blocking outbound requests this way is enough of a security hardening for an untrusted device, and if there are any usability issues I’ve overlooked so far.
Thanks for any advice, and please share any printer/scanner setup you have in your networks as well. So hopefully I can get more inspiration!
It basically depends on whether you want to rely on mdns, like printing from your phone.
The standard lock down by making a vlan and subnet and then adding filtering works fine if you can reach the printer reliably by IPP or jetdirect.
Once you need to connect two disparate broadcast domains, things get weird. It was the same story for Chromecast devices for me, their functionality and convenience are based on a relatively flat network and a single broadcast domain.
I have option #1 set up for my hp printer using its mac address on opnsense. it’s worked for several years to prevent phoning home, updates breaking 3rd party ink, etc. I also have its various smart features turned off. We only use it for printing and scanning on the local network anyway.
i’d do a vlan but I only have a dumb switch. that may be a future network upgrade as part of maybe upgrading faster than 1gig ethernet.
Long term, 2 is best, but 1 is a great immediate fix. Also, you should be able to assign a static IP based on the printers MAC address, which will keep the IP stable.
I did #2 and it works perfectly. I have an IoT VLAN and my Brother printer/scanner is on it. I pivoted to the Ubiquiti/Unifi network infrastructure several years ago due to mostly seemless integration with the routers/switches/APs. But have used OpenWRT in the past (but didn’t set up VLANs then). Not sure the steps and if it requires manual firewall rules for the VLAN in OpenWRT.
In case there identical/similar options to Unifi, however, I’ll just mention it’s pretty simple. Create the VLAN (new subnet vs the default network, e.g. 10.0.0.0/24 vs 10.1.0.0/24), deselect the “allow internet access” option, and make sure to select “network isolation” option (which blocks it from speaking to other VLANs/subnets). That’s it. (For conveniences, I also created another Wifi network call “XYZ_IOT” and then connected the printer to it. The network is fixed to that new IoT VLAN).
Technically, those options are effectively convenient shortcuts for firewall rules that will get removed or created, accordingly, for that specific VLAN.
Takes longer when you’re uncomfortable or struggling through it, but the complete setup time took maybe 15-20mins. If OpenWRT doesn’t have those convenience shortcuts, might take a bit longer to search for example firewall rule configs online and then make them.
- will block the printer but the app could still phone home
- may work but client devices should reach the printer in the vlan. also see point 1. best for other kind of iot devices
- best approach security wise but may take some work to it get running smoothly
What I would do:
- (easiest) block the printer and look what the client does. block any suspicious client behavior. you can use pihole to easily monitor/ block, later you can add firewall rules on your router
- (bit harder) your option number 3 if: you have a raspberry pi, your printer works well with sane and cups, you can set up clients to your desired workflow (having many non tech family members wanting to print will quickly become a nightmare)
Your 1. seems good enough as a starter, yeah. I’ll probably tell my users to ditch the app altogether otoh, so I’m looking forward to the Pi as a long-term solution
Though, what kind of non-tech nightmares are you referring to? I’d think that if being done properly and with autodiscovery enabled, it would be as seamless as “connect to printer/scanner X on the network” which is the Pi itself. But I probably haven’t understood enough
If it’s a networked printer it needs to be able to broadcast to the LAN if you want IPP to work – which you probably do, since it’s well supported by all OS and lets you autodiscover the printer and print directly from most of your devices.
This means you can’t isolate it fully from the LAN, so solution 2 is out.
Solution 1 is good if you can trust the thing not to change or disguise its MAC address. I’ve heard of devices that have a 3rd dynamic MAC in addition to the wifi and ethernet MACs, that they use to bypass such restrictions. 🤪
In order to do (1) properly you should create a firewall zone specifically for the printer, and allow that zone access to LAN but deny access to WAN. Then associate that zone with either a wifi access point created specifically for the printer, or with a specific switch plug if connected via Ethernet. This way the printer can’t bypass the restriction because it comes packaged with the only way it has of getting any connectivity.
However OpenWRT firewall zones also have issues with cross-zone broadcast, but can be bypassed I think by installing and using Avahi on the router. Don’t quote me on that.
Solution 3 seems best if you want to fully isolate it as well as retain IPP capability. That’s what I did with my printer, I connected it with USB to the server and I run CUPS + Avahi in a docker container that uses an ipvlan network to broadcast.
Damn, I didn’t know devices do these dynamic MACs, but yeah it’s not a trusted field to begin with.
By IPP autodiscovery, do you mean mDNS? If so, does the router needs to install avahi as well for single-network discovery to work? Or just the client?
Avahi on the router for multi VLAN discovery seem to be a nice idea, I’ll look into it and maybe try to hook it up to solution 2. I’ve thought users could just manually input the IP addresses (and the non-tech users will just simply be onboarded by me anyways), but having it advertised by default may just be less of a hassle for them.
Your comment about #2 is not true. VLANs can be fully isolated from other subnets on the LAN - sure. But they can also NOT be isolated. I have one fully isolated VLAN, and the rest are not isolated.
With a savvy user, you can also tehnically isolate VLANs form only specific other VLANs. I’ve never needed to do this, but know it’s possible.
Edit: for reference, I looked up details and found a helpful link and example:
config zone option name 'lan' option input 'ACCEPT' option output 'ACCEPT' option forward 'ACCEPT' <-- This line allows intra-zone (inter-subnet) routing list network 'lan' list network 'your_new_vlan' <-- Adding your new VLAN here stops it from being isolated

