Вам, вероятно, говорили, что для печати с 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.

Похожие статьи