AirPrint across VLANs: devices see printer, but printer prints garbage



  • Hello all!

    Having used PFSense as a firewall / router for almost a year now, I recently decided to go all in and start dividing my LAN into VLANs for various purposes.

    So I got a Unifi 8-Port switch and 2 UAP AC HD access points and set it all up, works beautifully so far.

    Now, one of my VLANS (#30) is meant to host all my IOT devices.
    Currently, I have rules configured that allow my main LAN to access devices on this VLAN, devices on the VLAN can reach the internet but cannot connect to the main VLAN.

    Right now, all the IOT devices that I have connect to this VLAN over WiFi, using an SSID with associated VLAN tag 30 that I created in Unifi Controller.

    I also have Avahi up and running on PFSense, and this also works great for the most part.

    For instance, I can easily control HomeKit-compatible devices on the IOT VLAN from my main network, I can also do AirPlay streaming across the networks just fine.

    Unfortunately, however, I'm having some super weird issues with my AirPrint-compatible HP printer, also on the IOT network.

    On any Mac / iOS device which is on the main LAN, I can see the MDNS announcements from the printer just fine.
    I can also delete and re-add the printer in System Preferences, I get all the info for ink levels, can scan documents, etc.

    Unfortunately though, I'm running into issues when actually trying to print something...

    For some odd reason, on the device sending the print job all looks well, but what I get from the printer is either a blank page, or it will print the entire page in red with a shape that kind of looks like a pillow.

    I have checked every setting on the printer, power cycled it a couple times, and also allowed it full access to the main LAN temporarily in PFSense, all to no avail.

    Needless to say, all is back to normal and works perfectly fine when I move the printer back onto the main LAN...

    I've checked all the ports used by AirPrint (Internet Printing Protocol, datastream, etc.), making sure that traffic can flow freely between the networks.

    I'm thoroughly confused at this point, what I really don't get is why the printer appears to receive all the data from the client (the client would show an error for a failed print job if this wasn't the case), but then either spits out a blank page or complete garbage.

    Has anyone here ever had a similar situation and could perhaps help me out with a solution?

    Thanks so much in advance for any advice, any help greatly appreciated!

    Robin