Nu aveți nevoie de descoperirea Bonjour pentru a imprima printr-un VPN
Un payload AirPrint numește o imprimantă după adresă, cale și port, așa că descoperirea nu trebuie să traverseze tunelul. Ruta, acel port și TLS trebuie totuși să funcționeze.
Probabil vi s-a spus că imprimarea de pe un iPhone printr-un VPN necesită ca descoperirea Bonjour să traverseze tunelul. Această convingere împinge oamenii spre punți TAP și repetoare multicast care nu repară nimic. AirPrint acceptă o destinație explicită: un profil de configurare poate oferi telefonului adresa, calea resursei și portul unei imprimante. Descoperirea nu trebuie să aibă loc niciodată pentru ca acea intrare să apară în foaia de tipărire. Ce nu face payload-ul este să creeze ruta, să facă o imprimantă care nu este AirPrint să vorbească IPP sau să autorizeze lucrarea.
Mitul începe cu o observație adevărată
Bonjour este multicast local la nivel de legătură prin proiectare. Un tunel rutat punct-la-punct nu transportă acele grupuri, așa că un telefon într-un VPN nu poate răsfoi imprimantele din LAN-ul îndepărtat, iar un laptop în același tunel nici nu poate. Concluzia corectă nu este că imprimarea are nevoie de o punte; este că răsfoirea are nevoie de un alt mecanism de livrare, iar o listă explicită este acel mecanism.
Repetoarele multicast există și unele rețele le administrează bine, dar rezolvă o cerință de descoperire pe care s-ar putea să nu o aveți. Dacă implementarea trebuie să imprime doar pe un singur dispozitiv aprobat, publicarea acelui dispozitiv este mai mică, testabilă și mult mai ușor de retras decât extinderea unui domeniu de difuzare printr-un tunel.
Ce transportă de fapt payload-ul
Payload-ul com.apple.airprint conține o matrice de dicționare de imprimantă. Fiecare dicționar ia un IPAddress, care poate fi o adresă literală sau un nume de gazdă, un ResourcePath, un Port opțional și un ForceTLS opțional. Apple documentează Port și ForceTLS începând cu iOS 11, așa că o flotă mixtă trebuie să lămurească asta înainte de implementare.
Calea este câmpul pe care oamenii îl ghicesc. ResourcePath oglindește valoarea rp din înregistrarea Bonjour a imprimantei _ipps._tcp sau _ipp._tcp. Este adesea ipp/print la imprimantele moderne fără drivere și adesea specifică producătorului la cele vechi. Copierea unei căi de la alt model produce o coadă care apare și apoi refuză fiecare lucrare.
Un element din matrice arată astfel, cu valori substituent care nu sunt un punct final testat:
<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>
Acest fragment nu este un profil. Este un element al matricei AirPrint dintr-un payload, iar payload-ul are în continuare nevoie de propriile metadate plus semnare sau livrare prin MDM. Dicționarul de imprimantă AirPrint este referința pentru semnificațiile câmpurilor.
Colectați valorile de la imprimantă, nu dintr-un rezultat de căutare
Pe un Mac care deja imprimă pe dispozitiv, ippfind sau dns-sd -B _ipp._tcp arată instanța anunțată, iar interfața web a imprimantei listează de obicei calea IPP și portul. Notați toate cele patru valori în nota de implementare, ca următoarea persoană să nu le deducă din nou dintr-o captură de ecran.
Apoi decideți deliberat despre TLS. Cu ForceTLS adevărat, telefonul trebuie să aibă încredere în certificatul prezentat de imprimantă, iar un certificat auto-semnat eșuează dacă nu implementați și ancora de încredere. Dezactivarea TLS pentru ca o coadă să funcționeze este o decizie despre ruta de rețea, nu o soluție ocolitoare pentru un certificat incomod.
Livrare, apoi două eșecuri opuse
Livrează payload-ul prin canalul tău de gestionare a dispozitivelor unde există, și tratează un profil instalat manual pe un telefon de serviciu ca excepția care este. După instalare, imprimanta ar trebui să apară în foaia de tipărire fără niciun trafic de descoperire. Acea apariție este singurul lucru pe care payload-ul trebuia să îl garanteze.
O imprimantă care apare dar eșuează la fiecare lucrare are o problemă de rută, port, cale sau TLS, și niciuna dintre ele nu este rezolvată de payload.
O imprimantă care nu apare niciodată are în schimb o problemă de livrare sau de payload: profilul nu s-a instalat, matricea este malformată sau o valoare nu corespunde dispozitivului. Recitiți valorile și dispozitivul țintă înainte de a atinge VPN-ul. Adăugarea unui repetor de descoperire pentru a repara o problemă de listare este o greșeală costisitoare, pentru că listarea nu a depins niciodată de descoperire.
Păstrați intrarea ușor de întreținut
Preferă un nume de gazdă în locul unei adrese literale acolo unde controlezi zona, astfel încât o schimbare de adresă să nu invalideze fiecare profil instalat. Acel nume de gazdă trebuie rezolvat de pe telefon cât timp tunelul este activ, ceea ce îl readuce în discuția despre DNS divizat, nu în cea despre imprimare.
Scrieți proprietarul imprimantei și proprietarul profilului în registrul de implementare. Când coada se mută, actualizați intenționat destinația publicată, pentru că o intrare veche nu expiră singură și continuă să direcționeze utilizatorii către un dispozitiv retras.
Nimic din toate acestea nu face o imprimantă compatibilă cu AirPrint. Payload-ul publică o destinație, iar dispozitivul trebuie în continuare să vorbească IPP.