1
August
2025
Установка сетевых принтеров в Linux - часть 2
15:12

Установка сетевых принтеров в Linux - часть 2

1 August 2025 15:12

Продолжение. См. часть 1, продолжение часть 3. окончание часть 4.

3.1.2. Протоколы печати IPP и IPPS

IPP - сокращение от "Internet Printing Protocol" и IPPS - сокращение от "Internet Printing Protocol over HTTPS". Данные протоколы являютяс основными для передачи заданий печати на сетевые принтеры.

Протокол IPP разработан американской фирмой Novell, которая специализируется на ПО для сетевой инфраструктуры. Фирма Novell находится в Прово, штат Юта, США. Основной акцент IPP сделан на безопасность и корректную реализацию.В IPP(S) есть понятие Принтера на высоком уровне, объектов типа Задание и Документ. Безопасность в IPPS: реализованы механизмы аутентификации для защищённой печати в локальной сети или через Интернет: возможна установка сертификата электронной подписи и секретного ключа на принтере, который обеспечивает печать по IPPS. Протокол IPP очень широко распространён среди ПО для многофункциональных устройств и принтеров и поддерживается в программном обеспечении CUPS. Актуальные версии протокола 2.0, 2.1, и 2.2.

Протокол IPP использует порт:

  • 80/TCP - для обнаружения и добавления, конфигурации принтера в локальной сети, по протоколу ipp:// (описан в стандарте RFC 2911). Нетрудно догадаться, что порт 80 также используется для веб серверов в Интернет. Общее межде протоколами - оба работают на порту 80 и являются протоколами прикладного уровню Отличие http:// от ipp:// - первый служит для получения и отправки данных веб-страниц, а второй - для отправки запросов на печать, получения статуса принтера, управления заданиями.

Протокол IPPS использует порты:

  • 443/TCP - для обнаружения и добавления и конфигурации принтера, который поддерживает печать по протоколу ipps:// (S - secured, т.е. защищенный).
  • 631/UDP, 631/TCP - для передачи заданий (jobs) на печать, т.е. для передачи страниц документа. Источник RFC 7472).

Преимущества IPP и IPPS:

  • IPPS гораздо более безопасный, чем AppSocket. Из-за наличия шифрования данные не могут быть перехвачены.
  • IPP и IPPS широко поддерживается производителями сетевых принтеров для работы в домашних и офисных локальных сетях
  • возможно подключение к удалённому принтеру через сеть Интернет, при вводе в параметрах принтера URL вида:
    • ipp://printer.example.com/ipp
    • ipps://printer2.example.com:443/ipp/print
    • ipps://server.example.com/ipp/print/printer3
  • Чтобы на занимать порт 443, протокол IPPS может использовать следующий вариант URL с порт 80 и протоколом https:
    • http://printer.example.com:631/ipp
    • https://printer2.example.com/ipp
    • https://server.example.com:631/ipp

Недостатки:

  • при использовании в локальной сети обращение про DNS имени в псевдо-домене
    .local. Например:
    • ipps://printer_name.local/
    • ipps://Kyocera%20ECOSYS%20M2035dn._ipps._tcp.local/
  • подключение к принтеру может не работать по таким адресам, например ipps://printer_name.local или ipp://printer_name.local. Решение: если подключение планируется по ими принтера `printer_name.local`, то нужно добавить в файл /etc/hosts для фиксированного IP-адреса принтера 192.168.1.123 строчку вида:
    192.168.1.123 printer_name.local
    после чего установить принтер в CUPS. Например, если имя принтера KM31DC19.local, в файл hosts добавил строку 192.168.1.123 KM31DC19.local , перешёл в администрирование CUPS:
    http://localhost:631/admin
    , где нажал кнопку "Добавить принтер", "Протокол интернет-печати (ipp) " -> "Продолжить" и ввёл строку подключения к принтеру по имени:
    ipp://KM31DC19.local/ipp -> "Продолжить", затем для установки драйвера я указал фирму Kyocera -> "Продолжить", модель принтера " M2540dn". Печать с компьютера на этот сетевой принтер заработала!

Определение и проверка IP-адреса принтера IPP

Если возможности принтера не известны заранее, нужно узнать его IP-адрес и выполнить проверку открытых портов IPPS у принтера. Для определения наличия технологии IPPS:

nmap 192.168.1.113 -p 80

где 192.168.1.113 - IP адрес принтера в локальной сети.

Если порт "open", откроем с помощью веб-браузера данный IP-адрес и узнаем имя устройства
Имя указано в случае Kyocera в верхнем углу. У меня имя хоста: KM31DC19.

Определение и проверка IP-адреса принтера IPPS

Если возможности принтера не известны заранее, нужно узнать его IP-адрес и выполнить проверку открытых портов IPPS у принтера. Для определения наличия технологии IPPS:

nmap 192.168.1.113 -p 443
nmap 192.168.1.113 -p 631
curl -vvI 192.168.1.113 

где 192.168.1.113 - IP адрес принтера в локальной сети, 443 и 631 - порты IPPS, Команда curl -vvI ... показывает безопасность https.

Также как и в случае IPP, при IPPS узнаем имя хоста, открыв адрес принтера в веб браузере http://ip_address:

В моём случае:
KM31DC19

Как настроить сетевой принтер по протоколу IPP (старый принтер или без использования IPP Everywhere)

  1. Перейдите на персональном компьютере с ОС Linux в настройки CUPS - в веб браузере нужно ввести в строку адреса: http://localhost:631/.
  2. На веб странице CUPS выбрать пункт меню Администрирование - Добавить принтер
  3. Затем "другие сетевые принтеры" - "IPP ", Нажмите Продолжить
  4. Введите вручную ipp://KM31DC19.local/ipp (без косой черты в конце!) - замените KM31DC19 на реальное имя хоста принтера. Нажмите Продолжить
  5. заполните поле "Наименование" - без пробелов. Например. Kyocera_IPP (имя не должно содержать пробелов, знак подчёркивания _ допустим) Нажмите Продолжить
  6. в поле "создать" укажите производителя, например Kyocera. Нажмите Продолжить
  7. в верхнем списке укажите драйвер принтера, соответствующий модели, указаной на задней панели МФУ (принтера) или на упаковке. Например, Kyocera ECOSYS M2540dn (KPDL), driverles, cups-filters. Нажмите "Добавить принтер".
  8. Укажите размер бумаги (A4), лоток (Automatic или Tray 1), Media type (Automatic), 2-side printing (On Portrait)/Off), выход бумаги Output Tray: Top, Print scaling: Automatic. На закладке Policies проверьте "retry-printer".
  9. Нажмите Сохранить параметры. Принтер добавлен.
  10. Проверьте, что принтер пингуется по имени, если нет добавить в файл hosts
    ping KM31DC19.local
  11. Теперь нужно разрешить его и сделать по умолчанию:
    Пуск - Администрирование - Принтеры - Имя принтера - щелкнуть правой кнопкой мыши и установить "Активен" и "Назначить общесистемным принтером по умолчанию".

Если задание уходит ("Printing"), но принтер не печатает (в Пуск - Администрирование - Принтеры - Имя принтера - "Просмотр очереди печати" состояние "Render complete" или "Отложено", "Paused" и т.д.) - такое бывает при использовании заправленного или неоригинального картриджа с подключением по IPP://. так как невозможно определить уровень порошка тонера или чернил. С другим принтером ipp://Pantum-4AF471.local/ipp такой проблемы нет. Также нет проблемы с Kyocera при использовании режима IPPS (см. следующий параграф).

Как настроить сетевой принтер по протоколу IPPS (старый принтер или без использования IPP Everywhere)

  1. Перейдите на персональном компьютере с ОС Linux в настройки CUPS - в веб браузере нужно ввести в строку адреса: http://localhost:631/.
  2. На веб странице CUPS выбрать пункт меню Администрирование - Добавить принтер
  3. Затем "другие сетевые принтеры" - "IPP ", Нажмите Продолжить
  4. Введите вручную http://KM31DC19.local:631/ipp (без косой черты в конце!) - замените KM31DC19 на реальное имя хоста принтера. Нажмите Продолжить
  5. заполните поле "Наименование" - без пробелов. Например. Kyocera_IPPS (имя не должно содержать пробелов, знак подчёркивания _ допустим) Нажмите Продолжить
  6. в поле "создать" укажите производителя, например Kyocera. Нажмите Продолжить
  7. в верхнем списке укажите драйвер принтера, соответствующий модели, указаной на задней панели МФУ (принтера) или на упаковке. Например, Kyocera ECOSYS M2540dn (KPDL), driverles, cups-filters. Нажмите "Добавить принтер".
  8. Укажите размер бумаги (A4), лоток (Automatic или Tray 1), Media type (Automatic), 2-side printing (On Portrait)/Off), выход бумаги Output Tray: Top, Print scaling: Automatic. На закладке Policies проверьте параметр "Политика ошибок" - значение "retry-job".
  9. Нажмите Сохранить параметры. Принтер добавлен.
  10. Проверьте, что принтер пингуется по имени, если нет добавить в файл hosts
    ping KM31DC19.local
  11. Теперь нужно разрешить его и сделать по умолчанию:
    Пуск - Администрирование - Принтеры - Имя принтера - щелкнуть правой кнопкой мыши и установить "Активен" и "Назначить общесистемным принтером по умолчанию".


Как настроить сетевой принтер по протоколу IPPS (новый принтер с использованием IPP Everywhere)

  1. Перейдите на персональном компьютере с ОС Linux в настройки CUPS - в веб браузере нужно ввести в строку адреса: http://localhost:631/.
  2. На веб странице CUPS выбрать пункт меню Администрирование - Добавить принтер
  3. Затем выберите принтер с упоминанием печати без драйверов "(driverless)". Например, "Kyocera ECOSYS M2540dn (KPDL) (driverless) (Kyocera ECOSYS M2540dn (KPDL))". Нажмите Продолжить
  4. На следующем экране будут показаны параметры подключения, где полнвое DNS-имя сожержит "._ipps._tcp.local/" нажмите Продолжить.
  5. Исправьте поле "Наименование" - без пробелов. Например. Kyocera_IPP_Everywhere (имя не должно содержать пробелов, знак подчёркивания _ допустим) Нажмите Продолжить
  6. выберите первую строку списка - модель принтера с упоминанием IPP EverywhereTM и нажмите внизу "Добавить принтер".
  7. Нажмите Сохранить параметры. Принтер добавлен.

3.1.3 - печать IPP/IPPS с использованием обнаружененных принтеров службой cups-browsed

Служба cups-browsed ищет сетевые принтеры и многофункциональные устройства (МФУ) с поддержкой IPP/IPPS при запуске компьютера. В дальнейшем найденные принтеры видны при обращении к меню "Файл" - "Печать". Список принтеров получается динамическим, время обнаружения принтеров может составлять несколько секунд.

Служба cups-browsed разработана группами разработчиков OpenPrinting и PWG (Printing Working Group) из США. одного из проектов, являющихся частью операционной системы Linux. Авторы cups-browsed: Till Kamppeter, Deepak Patankar. Лицензия Apache License v2.0.

Настройка подключения вручную не требуется, она автоматическая, при выборе принтера.
Протокол подключения cups-browsed следующий: implicitclass://printer_name/ Таким образом. подключение к принтеру осуществляется через программную прослойку, что в наибольшей степени облегчает настройку и печать на принтер. Обратной стороной медали, как сказано выше, является небольшая задержка при использовании cups-browsed и повышение нагрузки на процессор.

Преимущества:

  • настройка принтера в привычном понимании не требуется. Нужно только выбрать нужный обнаруженный сетевой принтер.
  • после подключения используется протокол ipps, но его подробности скрыты от пользователя.
  • безразлична к фиксированным или динамическим IP адресам (DHCP).

Недостатки:

  • задержка открытия меню Файл - Печать (например, в Linux Mint или Linux Green), требуемая для обнаружения сетевых принтеров.
  • уязвимости, т.к. наружу открыт порт 631. Злоумышленники могут отправлять произвольные UDP пакеты на порт 631, что в лучшем случае приводит к поломке службы, а в худшем к перехвату управления компьютером.

Чтобы избавиться от задержки, нужно установить принтер вручную и отключить службу

sudo systemctl stop cups-browsed
sudo systemctl disable cups-browsed
sudo systemctl restart cups

Включить службу обратно, если хотим обнаруживать принтеры автоматически:

sudo systemctl enable cups-browsed
sudo systemctl start cups-browsed

Заблокировать порт 631 на брандмауэре извне (решение проблемы с уязвимостью).

sudo apt install ufw
sudo ufw enable
sudo ufw deny 631 #  block port
sudo ufw status numbered
sudo ufw reload  



Related publications