Non serve il rilevamento Bonjour per stampare tramite VPN
Un payload AirPrint nomina una stampante per indirizzo, percorso e porta, quindi il rilevamento non deve attraversare il tunnel. La rotta, quella porta e TLS devono comunque funzionare.
Probabilmente vi è stato detto che stampare da un iPhone tramite VPN richiede che il rilevamento Bonjour attraversi il tunnel. Questa convinzione spinge le persone verso bridge TAP e ripetitori multicast che non risolvono nulla. AirPrint accetta una destinazione esplicita: un profilo di configurazione può fornire al telefono l'indirizzo, il percorso della risorsa e la porta di una stampante. Il rilevamento non deve mai avvenire perché quella voce compaia nel pannello di stampa. Ciò che il payload non fa è creare la rotta, far parlare IPP a una stampante non AirPrint o autorizzare il lavoro.
Il mito inizia con un'osservazione vera
Bonjour è multicast link-local per progettazione. Un tunnel instradato punto-punto non trasporta quei gruppi, quindi un telefono su una VPN non può sfogliare le stampanti sulla LAN remota, e nemmeno un portatile sullo stesso tunnel. La conclusione corretta non è che la stampa abbia bisogno di un bridge; è che la navigazione ha bisogno di un diverso meccanismo di consegna, e un elenco esplicito è quel meccanismo.
I ripetitori multicast esistono e alcune reti li gestiscono bene, ma risolvono un requisito di rilevamento che potreste non avere. Se la distribuzione deve stampare solo su un dispositivo approvato, pubblicare quel dispositivo è più piccolo, verificabile e molto più facile da ritirare che estendere un dominio broadcast attraverso un tunnel.
Cosa contiene davvero il payload
Il payload com.apple.airprint contiene un array di dizionari di stampante. Ogni dizionario accetta un IPAddress, che può essere un indirizzo letterale o un nome host, un ResourcePath, una Port opzionale e un ForceTLS opzionale. Apple documenta Port e ForceTLS da iOS 11 in poi, quindi un parco misto deve averlo chiarito prima della distribuzione.
Il percorso è il campo che le persone indovinano. ResourcePath rispecchia il valore rp nel record Bonjour della stampante _ipps._tcp o _ipp._tcp. Spesso è ipp/print sulle stampanti moderne senza driver e spesso è specifico del produttore su quelle più vecchie. Copiare un percorso da un altro modello produce una coda che compare e poi rifiuta ogni lavoro.
Un elemento dell'array appare così, con valori segnaposto che non sono un endpoint testato:
<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>
Quel frammento non è un profilo. È un elemento dell'array AirPrint all'interno di un payload, e il payload ha ancora bisogno dei propri metadati più firma o consegna MDM. Il dizionario di stampante AirPrint è il riferimento per i significati dei campi.
Raccogliete i valori dalla stampante, non da un risultato di ricerca
Su un Mac che stampa già sul dispositivo, ippfind o dns-sd -B _ipp._tcp mostra l'istanza annunciata, e l'interfaccia web della stampante elenca di solito il percorso IPP e la porta. Annotate tutti e quattro i valori nella nota di distribuzione, così la persona successiva non debba ricavarli di nuovo da uno screenshot.
Poi decidete su TLS in modo deliberato. Con ForceTLS vero il telefono deve fidarsi del certificato presentato dalla stampante, e un certificato autofirmato fallisce a meno che non distribuiate anche l'ancora di fiducia. Disattivare TLS per far funzionare una coda è una decisione sul percorso di rete, non un aggiramento per un certificato scomodo.
Consegna, poi due guasti opposti
Consegnate il payload attraverso il vostro canale di gestione dei dispositivi dove esiste, e trattate un profilo installato manualmente su un telefono di lavoro come l'eccezione che è. Una volta installato, la stampante dovrebbe comparire nel pannello di stampa senza alcun traffico di rilevamento. Quella comparsa è l'unica cosa che il payload doveva garantire.
Una stampante che compare ma fallisce ogni lavoro ha un problema di rotta, porta, percorso o TLS, e nessuno di essi è risolto dal payload.
Una stampante che non compare mai ha invece un problema di consegna o di payload: il profilo non è stato installato, l'array è malformato o un valore non corrisponde al dispositivo. Rileggete i valori e il dispositivo di destinazione prima di toccare la VPN. Aggiungere un ripetitore di rilevamento per correggere un problema di elenco è un errore costoso, perché l'elenco non è mai dipeso dal rilevamento.
Mantenete la voce manutenibile
Preferite un nome host a un indirizzo letterale dove controllate la zona, così un cambio di indirizzo non invalida ogni profilo installato. Quel nome host deve risolversi dal telefono mentre il tunnel è attivo, il che lo riporta nella conversazione sul DNS diviso anziché in quella sulla stampa.
Scrivete il proprietario della stampante e il proprietario del profilo nel registro di distribuzione. Quando la coda si sposta, aggiornate la destinazione pubblicata di proposito, perché una voce vecchia non scade da sola e continua a indirizzare gli utenti verso un dispositivo ritirato.
Niente di tutto questo rende una stampante compatibile con AirPrint. Il payload pubblica una destinazione, e il dispositivo deve comunque parlare IPP.