Het doel: één printer, meerdere gescheiden netwerken, en toch overal kunnen printen. Dit recept is korter dan het lijkt. Het moeilijke deel is niet de firewall, maar het feit dat je printer zichzelf niet kan aankondigen in een ander netwerk.
Wat je nodig hebt
- Het MAC-adres van de printer en, als hij al werkt, zijn huidige IP-adres.
- Een netwerk met VLANs, dus de rol Kantoorrouter met VLANs of het blok VLANs.
- Een keuze wie er mag printen. Iedereen is een antwoord, maar dan mag het gastennetwerk niet vergeten worden.
Stap 1: waar zet je hem neer
Drie redelijke plekken, in volgorde van hoeveel werk ze kosten:
- In het netwerk waar de meeste mensen printen. Dan werkt daar alles vanzelf, inclusief het automatisch vinden van de printer, en regel je alleen uitzonderingen voor de rest.
- In je IoT- of apparaten-VLAN. Netjes, want een printer is net zo goed een apparaat met oude firmware. Maar dan werkt het automatisch vinden nergens meer.
- In een eigen VLAN. Alleen zinvol bij veel printers of als beleid het voorschrijft.
Zet hem niet in het gastennetwerk. Dat is geïsoleerd, dus dan kun jij er zelf niet bij.
Stap 2: een vast adres
Een printer zonder vast adres is over een half jaar onvindbaar. Staat hij in het untagged netwerk, voeg hem dan toe bij LAN & DHCP onder Vaste adressen (static leases), met een adres onder de pool: het DHCP-bereik begint standaard bij .10.
Staat hij in een VLAN, dan heeft de VLAN-tabel geen veld voor reserveringen. Geef hem dan zelf een vast adres in zijn eigen webinterface, buiten het DHCP-bereik, of voeg de reservering na het plakken toe: /ip dhcp-server lease add mac-address=AA:BB:CC:DD:EE:FF address=192.168.30.20 server=dhcp-vlan30-iot. De DHCP-server van een VLAN heet dhcp- plus de naam van die VLAN.
Geef hem daarna een naam bij DNS onder Statische DNS-records, bijvoorbeeld printer.lan.example.nl, type A. Dat scheelt later zoeken.
Stap 3: de firewall-uitzondering
Ga naar Firewall & NAT en zet Verkeer tussen VLANs op Alleen wat in de matrix is aangevinkt. Vink per netwerk dat mag printen de richting naar de VLAN van de printer aan. Meer is het niet: een rij start de verbinding, een kolom ontvangt hem, en antwoorden komen altijd terug.
Wil je het scherper, dus wel printen maar niet in de webinterface van de printer, gebruik dan Eigen filterregels in plaats van een vinkje in de matrix. Per netwerk dat mag printen:
- Chain
forward, actieaccept, protocoltcp, Dst. poort9100,631,515, Doeladres het adres van de printer, In-interface de VLAN waar het vandaan komt.
Eigen regels worden in het script vóór de matrix- en isolatieregels geschreven, dus deze uitzondering wint van de blokkade daaronder. 9100 is raw printing, 631 is IPP, 515 is LPD; welke je nodig hebt hangt af van de printer en de driver.
Scant de printer naar een map of een mailadres, dan start híj de verbinding. Vink in dat geval ook de richting van de printer naar dat netwerk aan, of voeg een tweede eigen regel toe met de printer als bron.
Testen
- Ping vanaf een machine in het andere VLAN het adres van de printer.
- Open
http://gevolgd door dat adres. Lukt dat terwijl je alleen 9100 hebt opengezet, dan staat de matrix nog open in plaats van je eigen regel. - Voeg de printer toe op adres en druk een testpagina af.
- Controleer met
/ip firewall filter print statswelke regel de pakketten telt.
Waarom hij niet vanzelf in de lijst staat
Automatisch printers vinden gebeurt met mDNS (Bonjour, AirPrint) en WS-Discovery. Dat zijn multicast-pakketten die één netwerksegment ver komen. Een router stuurt ze niet door naar een ander VLAN, en de configurator heeft geen mDNS-repeater: dat is geen instelling die ergens verstopt zit, hij zit er niet in. De firewall openzetten verandert daar niets aan, want de zoekvraag bereikt de router nooit als iets om door te sturen.
Wat wel werkt vanuit een ander VLAN:
- De printer handmatig toevoegen op IP-adres of op de naam uit je DNS-record. Windows, macOS en Linux kunnen dat allemaal.
- Een printserver of een computer die de printer deelt in het netwerk waar de gebruikers zitten.
- Een mDNS-repeater die je na het plakken zelf op de router zet. De configurator genereert die niet.
AirPrint vanaf een iPhone leunt volledig op mDNS. Zit de telefoon in een ander VLAN dan de printer, dan ziet hij hem niet, ook niet met de firewall wagenwijd open. Wil je AirPrint, zet de printer dan in het netwerk waar de telefoons zitten.
Waar je op moet letten
- Gasten printen erbij? Dan haal je een gat in de isolatie van het gastennetwerk. Doe het met een eigen regel op precies die ene poort en dat ene adres, niet met een vinkje in de matrix.
- Internet uit voor de printer-VLAN stopt ook firmware-updates en cloudprinten. Lokaal printen blijft gewoon werken.
- Een printer verhuizen naar een andere VLAN betekent een nieuw adres, en op elke computer een printer die niet meer reageert. Doe het in één keer goed en werk de DNS-record bij.
Verder lezen: VLANs, Firewall en IoT in een eigen netwerk.