Для друку через VPN вам не потрібне виявлення Bonjour
Корисне навантаження AirPrint задає принтер за адресою, шляхом і портом, тому виявленню не потрібно проходити крізь тунель. Маршрут, цей порт і TLS усе одно мають працювати.
Вам, імовірно, казали, що для друку з iPhone через VPN виявлення Bonjour має проходити крізь тунель. Це переконання штовхає людей до мостів TAP і multicast-ретрансляторів, які нічого не виправляють. AirPrint приймає явний пункт призначення: профіль конфігурації може передати телефону адресу, шлях до ресурсу й порт принтера. Виявлення ніколи не повинно відбуватися, щоб цей запис з'явився в аркуші друку. Чого навантаження не робить — це не створює маршрут, не змушує принтер без AirPrint говорити IPP і не авторизує завдання.
Міф починається з правдивого спостереження
Bonjour за своєю архітектурою — це link-local multicast. Маршрутизований тунель «точка-точка» не переносить ці групи, тому телефон у VPN не може переглядати принтери у віддаленій LAN, і ноутбук у тому самому тунелі також не може. Правильний висновок не в тому, що друку потрібен міст; правильний висновок у тому, що перегляду потрібен інший механізм доставки, і явний список — це той самий механізм.
Multicast-ретранслятори існують, і деякі мережі добре їх експлуатують, але вони вирішують вимогу виявлення, якої у вас може не бути. Якщо розгортанню потрібно друкувати лише на один схвалений пристрій, публікація цього пристрою менша, тестована й набагато простіше відкликається, ніж розширення широкомовного домену крізь тунель.
Що насправді несе навантаження
Навантаження com.apple.airprint містить масив словників принтера. Кожен словник приймає IPAddress, який може бути буквальною адресою або іменем хоста, ResourcePath, необов'язковий Port і необов'язковий ForceTLS. Apple документує Port і ForceTLS починаючи з iOS 11, тому змішаному парку потрібно з'ясувати це до розгортання.
Шлях — це поле, яке люди вгадують. ResourcePath відображає значення rp у записі Bonjour принтера _ipps._tcp або _ipp._tcp. На сучасних принтерах без драйверів це часто ipp/print, а на старіших — часто специфічно для виробника. Копіювання шляху з іншої моделі створює чергу, яка з'являється, а потім відхиляє кожне завдання.
Елемент масиву виглядає так, із заповнювачами, які не є перевіреною кінцевою точкою:
<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>
Цей фрагмент не є профілем. Це один елемент масиву AirPrint усередині навантаження, і навантаженню все ще потрібні власні метадані, а також підпис або доставка через MDM. Словник принтера AirPrint — це довідка щодо значень полів.
Збирайте значення в принтера, а не з результату пошуку
На Mac, який уже друкує на пристрій, ippfind або dns-sd -B _ipp._tcp показує оголошений екземпляр, а власний веб-інтерфейс принтера зазвичай перелічує шлях IPP і порт. Запишіть усі чотири значення в нотатку про розгортання, щоб наступній людині не довелося знову виводити їх зі знімка екрана.
Потім свідомо вирішіть щодо TLS. Коли ForceTLS істинний, телефон має довіряти сертифікату, який подає принтер, а самопідписаний сертифікат не працює, якщо ви також не розгорнете якір довіри. Вимкнення TLS, щоб черга запрацювала, — це рішення про мережевий маршрут, а не обхідний шлях для незручного сертифіката.
Доставка, потім дві протилежні невдачі
Доставляйте навантаження через ваш канал керування пристроями, де він є, а профіль, установлений вручну на робочому телефоні, вважайте тим винятком, яким він є. Після встановлення принтер має з'явитися в аркуші друку взагалі без трафіку виявлення. Ця поява — єдине, що навантаження колись мало гарантувати.
У принтера, який з'являється, але зазнає невдачі на кожному завданні, є проблема з маршрутом, портом, шляхом або TLS, і жодну з них навантаження не вирішує.
У принтера, який ніколи не з'являється, натомість проблема з доставкою або навантаженням: профіль не встановився, масив пошкоджений або значення не відповідає пристрою. Перечитайте значення й цільовий пристрій, перш ніж торкатися VPN. Додавання ретранслятора виявлення, щоб виправити проблему зі списком, — дорога помилка, бо список ніколи не залежав від виявлення.
Тримайте запис зручним у супроводі
Віддавайте перевагу імені хоста, а не буквальній адресі там, де ви контролюєте зону, щоб зміна адреси не робила недійсним кожен установлений профіль. Це ім'я хоста має розв'язуватися з телефона, поки тунель піднятий, що повертає його в розмову про split-DNS, а не про друк.
Запишіть власника принтера й власника профілю в запис про розгортання. Коли черга переміщується, навмисно оновлюйте опублікований пункт призначення, бо старий запис не спливає сам і продовжує скеровувати користувачів на виведений з експлуатації пристрій.
Ніщо з цього не робить принтер здатним на AirPrint. Навантаження публікує пункт призначення, а пристрій усе ще має говорити IPP.