Je hebt geen Bonjour-detectie nodig om via een VPN te printen
Een AirPrint-payload noemt een printer bij adres, pad en poort, dus detectie hoeft de tunnel niet te passeren. De route, die poort en TLS moeten nog steeds werken.
Je hebt waarschijnlijk gehoord dat printen vanaf een iPhone via een VPN vereist dat Bonjour-detectie de tunnel passeert. Die overtuiging stuurt mensen naar TAP-bruggen en multicast-relays die niets oplossen. AirPrint accepteert een expliciete bestemming: een configuratieprofiel kan de telefoon het adres, het resourcepad en de poort van een printer geven. Detectie hoeft nooit plaats te vinden om die vermelding in het printblad te laten verschijnen. Wat de payload niet doet, is de route aanmaken, een niet-AirPrint-printer IPP laten spreken of de opdracht autoriseren.
De mythe begint met een ware observatie
Bonjour is van nature link-local multicast. Een gerouteerde punt-naar-punt-tunnel vervoert die groepen niet, dus een telefoon op een VPN kan geen printers op de verre LAN doorbladeren, en een laptop op dezelfde tunnel ook niet. De juiste conclusie is niet dat printen een brug nodig heeft; ze is dat bladeren een ander leveringsmechanisme nodig heeft, en een expliciete lijst is dat mechanisme.
Multicast-relays bestaan en sommige netwerken beheren ze goed, maar ze lossen een detectievereiste op die je misschien niet hebt. Als de uitrol alleen naar één goedgekeurd apparaat hoeft te printen, is het publiceren van dat apparaat kleiner, testbaar en veel gemakkelijker in te trekken dan een broadcast-domein over een tunnel uit te breiden.
Wat de payload werkelijk bevat
De payload com.apple.airprint bevat een array van printerwoordenboeken. Elk woordenboek neemt een IPAddress, dat een letterlijk adres of een hostnaam kan zijn, een ResourcePath, een optionele Port en een optionele ForceTLS. Apple documenteert Port en ForceTLS vanaf iOS 11, dus een gemengde vloot moet dat vóór de uitrol duidelijk hebben.
Het pad is het veld dat mensen raden. ResourcePath weerspiegelt de rp-waarde in het Bonjour-record van de printer _ipps._tcp of _ipp._tcp. Het is vaak ipp/print op moderne driverloze printers en vaak leveranciersspecifiek op oudere. Een pad van een ander model kopiëren levert een wachtrij op die verschijnt en daarna elke opdracht weigert.
Een item in de array ziet er zo uit, met plaatshouderwaarden die geen getest eindpunt zijn:
<dict>
<key>ResourcePath</key>
<string>ipp/print</string>
<key>IPAddress</key>
<string>printer-07.office.example</string>
<key>Port</key>
<integer>8631</integer>
<key>ForceTLS</key>
<true/>
</dict>
Dat fragment is geen profiel. Het is één element van de AirPrint-array binnen een payload, en de payload heeft nog steeds zijn eigen metadata nodig plus ondertekening of MDM-levering. Het AirPrint-printerwoordenboek is de referentie voor de veldbetekenissen.
Verzamel de waarden bij de printer, niet bij een zoekresultaat
Op een Mac die al naar het apparaat print, toont ippfind of dns-sd -B _ipp._tcp de aangekondigde instantie, en de webbinterface van de printer zelf vermeldt meestal het IPP-pad en de poort. Noteer alle vier waarden in de uitrolnotitie, zodat de volgende persoon ze niet opnieuw uit een schermafbeelding hoeft af te leiden.
Beslis daarna bewust over TLS. Met ForceTLS waar moet de telefoon het certificaat vertrouwen dat de printer presenteert, en een zelfondertekend certificaat faalt tenzij je ook de vertrouwensanker uitrolt. TLS uitschakelen om een wachtrij te laten werken is een beslissing over het netwerkpad, geen omweg voor een onhandig certificaat.
Levering, dan twee tegenovergestelde fouten
Lever de payload via je apparaatbeheerkanaal waar dat bestaat, en behandel een handmatig geïnstalleerd profiel op een werktelefoon als de uitzondering die het is. Na installatie zou de printer zonder enig detectieverkeer in het printblad moeten verschijnen. Die verschijning is het enige dat de payload ooit moest garanderen.
Een printer die verschijnt maar elke opdracht weigert, heeft een route-, poort-, pad- of TLS-probleem, en geen daarvan wordt door de payload opgelost.
Een printer die nooit verschijnt, heeft in plaats daarvan een leverings- of payloadprobleem: het profiel is niet geïnstalleerd, de array is misvormd, of een waarde komt niet overeen met het apparaat. Lees de waarden en het doelapparaat opnieuw voordat je de VPN aanraakt. Een detectie-relay toevoegen om een lijstprobleem op te lossen is een dure fout, omdat de lijst nooit van detectie afhing.
Houd de vermelding onderhoudbaar
Geef de voorkeur aan een hostnaam boven een letterlijk adres waar je de zone beheert, zodat een adreswijziging niet elk geïnstalleerd profiel ongeldig maakt. Die hostnaam moet vanaf de telefoon oplosbaar zijn terwijl de tunnel actief is, wat het terugbrengt naar het split-DNS-gesprek in plaats van het printgesprek.
Schrijf de printereigenaar en de profieleigenaar in het uitrolregister. Wanneer de wachtrij verhuist, werk de gepubliceerde bestemming bewust bij, want een oude vermelding verloopt niet vanzelf en blijft gebruikers naar een uitgefaseerd apparaat sturen.
Niets hiervan maakt een printer AirPrint-geschikt. De payload publiceert een bestemming, en het apparaat moet nog steeds IPP spreken.