Иногда случается так, что принтеры находятся в одном vlan, а wi-fi - в другом. И тут начинается страшное. Бедные айфононосцы и эплхантеры перестают видеть принтеры в своих девайсах. А им очень хочется печатать c телефонов. Админ, сделай что-нибудь, у нас принтер не работает!
В одной конторе понадобилось запилить это хипстерство: печать с айфонов на принтеры с помощью airprint. Airprint — офигенная технология печати, которая не работает в нормальных сетях. А теперь будет описание того, как сделать, чтобы заработала.
Создаём новую зону в DNS. Я создал "print.lan".
На комп с Windows ставим Bonjour Print Services:
https://support.apple.com/kb/Dl999?locale=ru_RU
Качаем софтину для генерации скриптов добавления (и удаления) DNS зон:
Подключаем комп к влану, в котором живут принтеры. Тем самым сервис Bonjour сможет опрашивать принтеры.
Примечание. Вот здесь нужно нормально настроить принтеры, прописать все названия сервисов. Любое изменение заставит вас переделывать всю процедуру заново.
Запускаем DNS-SD Parser на компе:
Сначала нужно получить данные с конфигурацией airprint принтеров. Нажимаем "Get Resource Records From This Machine". Если повезёт - вы получите данные. Мне не повезло, скорее всего из-за Windows 10, данные я не получил. Но хипстеры насели на меня со своими айфонами. Инженерная мысля сработала, поэтому пишу, получить эти данные ручками можно так:
C:\Windows\System32\dns-sd.exe -Z _ipp._tcp local
(C:\Windows\System32\dns-sd.exe -Z _ipp._tcp print.lan)
(процедура зависнет, но результат можно скопировать мышкой и вставить в файлик) или так:
C:\Windows\System32\dns-sd.exe -Z _ipp._tcp local > c:/tmp/out.txt
(C:\Windows\System32\dns-sd.exe -Z _ipp._tcp print.lan > c:/tmp/out_print_lan.txt)
В итоге мы получим файлик со всеми найденными принтерами и их настройками. Редактируем его: строки ".print.lan." заменяем в любом текстовом редакторе на ".local." Ещё можно на данном этапе выкинуть лишние принтеры. Файл открываем парсером кнопкой "Open DNS-SD Export File".
Меняем значение "Location in DNS for record" и "Zone File name" на "print.lan". Нажимаем Update Records. Потом сохраняем кнопкой "Save Create & Delete DNSCMD Scripts". Получаем два BAT файла:
- CreateAirprintDNSRecords_дата.bat — для добавления записей в DNS.
- RemoveAirprintDNSRecords_дата.bat — для удаления записей из DNS.
Снова редактируем эти скрипты в текстовом редакторе. Строки ".local." заменяем на ".print.lan.".
На сервере DNS запускаем первый скрипт от администратора - записи добавятся в DNS. Для удаления используйте второй скрипт или просто руками грохните всю зону print.lan - решать вам.
Но это ещё не всё. Наши хипстерские яблочные устройства получают IP адрес в wi-fi по DHCP. Идём в DHCP сервер и добавляем в параметрах опцию "015" со значением "print.lan". Не буду писать как это делается, DHCP серверы разные бывают - погуглите.
Ещё можно руками добавить A записи для принтеров в DNS.