1
август
2025
Установка сетевых принтеров в Linux - часть 1
15:03

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

1 август 2025 15:03

На работе есть несколько сетевых принтеров и многофункциональных устройств (МФУ), подключенных к локальной вычислительной сети (ЛВС). Печать на них осуществляется с компьютера с операционной системой Linux. Однажды задания на печатать перестали уходить, а принтер печатать. Пришлось изучить вопрос, как лучше устанавливать сетевой принтер в операционной системе Linux.

Введение

Есть много инструкций по настройке принтеров в CUPS. Но в них мало внимания уделяется различению технологий сетевой печати. В частности, существуют более низкоуровневые технологии (AppCocket. IPP/IPPS), и более новые, в том числе ZeroConf и печать без драйверов. В данной статье хотел рассмотреть варианты подключения сетевых принтеров в Linux более внимательно.

Классификация сетевой печати:

Для Linux:

- По использованию драйверов:

  • печать с дрейверами (для более старых устройств),
  • печать без драйверов (для современных устройств).

- По необходимости конфигурирования:

  • технологии печати, требующие определенного конфигурирования (администрирования)
    • AppSocket (JetDirect) - прямая печать на принтер,
    • IPP, IPPS - чистые, без использования Avahi/DNS-SD и без IPP Everywhere.
  • Технология печати без конфигурирования (ZeroConf) в Linux:

Для Apple, технология печати c функцией без конфигурирования (ZeroConf):

  • AirPrint (Bonjour) - для Apple iOS: Mac, iPad, iPhone, iPod.

Для Android, технология печати c функией без конфигурирования (ZeroConf):

  • системы печати от производителя МФУ с закрытым исходным кодом (сети Wi-Fi, Wi-Fi Direct, или встроенная точка доступа Wi-Fi),
  • Mopria (технология от альянса Mopria, приложение в Google Play не доступно в Российской Федерации).

1. Поиск сетевых принтеров в локальной сети

1.1 Поиск сетевых принтеров с помощью CUPS

http://localhost:631/admin - кнопка "Добавить принтер".

Подробно:

В Cups реализован поиск принтеров в веб интерфейсе CUPS. http://localhost:631/ -> Администрирование -> Добавить принтер:

cups-search1

На следующем экране в графе * Найденные сетевые принтеры будет выведен список принтеров, обнаруженных в локальной сети.

cups-search2

Выбрать строчку -> кнопка Продолжить (кнопка находится внизу экрана или за экраном - прокрутите веб страницу ниже).

На экране видна строка подключения с упоминанием одного из двух протоколов сетевой печати: IPPS:// или DNSSD://.

cups-search3

Если принтер достаточно новый и поддерживает режим печати без драйверов и в списке выбран вариант с приставкой driverless, то после нажатия Продолжить будет предложен вариант IPP Everywhere - печать без драйверов (см. раздел 2.2 - печать без драйверов в IPP Everywhere).

1.2 Способ поиска сетевых принтеров из командной строки при помощи lpinfo

Если принтеры в сети умеют объявлять себя с помощью Bonjour (комбинации стандартов multicast DNS (mDNS) и DNS service discovery (DNS-SD), их можно найти командой "lpinfo -v".

lpinfo -v

network lpd
file cups-brf:/
network http
network socket
network beh
network ipp
network smb
network https
serial serial:/dev/ttyS0?baud=115200
network ipps
direct hp
direct hpfax
network dnssd://Kyocera%20ECOSYS%20M2540dn._ipp._tcp.local/?uuid=4509a320-0056-0101-003e-0025074f9312
network ipps://Pantum%20BM5100ADN%20Series%204AF471._ipps._tcp.local/

Последние две записи соответствуют сетевым принтерам. Принтер Kyocera объявил себя через DNSSD - замену DNS без сервера (широковещательные пакеты). Второй принтер Pantum объявил себя в сети другим способом - IPPS Multicast Discovery.

  • модель Pantum BP5100DW. В руководстве пользоватлея говорится что она совместима с Linux (Ubuntu 14.04/16.04/18.04(32/64 bit); Debian 10.0;RedHat 8.0.0; Astra Linux Special Edition V1.6; CentOS 7 (32/64 bit).

1.3 Поиск сетевых принтеров с поддержкой IPP при помощи службы Avahi

sudo apt install avahi-utils
sudo service avahi-daemon start

avahi-browse -rt _ipp._tcp # искать только _ipp._tcp

avahi-browse -ra # искать все принтеры (долго)

расшифровка:

  • порт 80 - порт принтера с поддержкой IPP (без S)
  • порт 443 - порт принтера с поддержкой IPPS
  • порт 631 - порт принтера с поддержкой IPPS

1.4 Графический способ поиска сетевых принтеров с помощью оснастки "Принтеры"

В Linux Mint есть оснастка в Пуск - Администрирование

  • Принтеры (пакет и команда system-config-printer)

Установка включает в себя пакеты:

sudo apt install system-config-printer system-config-printer-common system-config-printer-udev 
sudo apt install python3 python3-cups python-cupshelpers python3-dbus

Оснастака доступна для слежующих рабочих столов:

  • ubuntu-desktop-minimal,
  • ubuntu-desktop,
  • kubuntu-desktop,
  • kubuntu-full,
  • xubuntu-desktop,
  • lubuntu-desktop,
  • ubuntustudio-desktop,
  • ubuntukylin-desktop,
  • ubuntu-mate-core,
  • ubuntu-mate-desktop,
  • ubuntu-budgie-desktop,
  • ubuntu-budgie-desktop-raspi

Запуск поиска сетевых принтеров:

system-config-printer

При открытии system-config-printer происходит поиск сетевых принтеров с выводом их IP-адресов и имён хостов.

1.5 Поиск сетевых принтеров с помощью пакетного снифера WireShark 4.2.0 и выше

Сетевые принтеры и маршрутизаторы рассылают пакеты mDNS стандарта Bonjour (RFC 6762):

mdns

Запуск стандартной версии WireShark 3.x.x (из репозитория)

sudo wireshark

Захват и сохранение в файл pcapng. Затем sudo chmod 644 *.pcapng

Установка версии Wireshark 4.4.8 для анализа пакетов:

flatpak install flathub org.wireshark.Wireshark

Запуск версии 4.4.8:

flatpak run org.wireshark.Wireshark

Фильтр мультикаста, mDNS протокола ipp, за исключением пакетов от своего ПК:
(eth.dst[0] & 1) && ip.dst>=224.0.0.0 && _ws.col.info matches "(?i)_ipp" && _ws.col.info matches "(?i)0x0000" && ! ip.addr==192.168.11.100

Где 192.168.11.100 замените на IP-адрес данного компьютера (в выводе команды ip addr).

Результат поиска пакетов mDNS виден на снимке экрана ниже:
mdns2

Как видно, многоадресный DNS или mDNS использует порт 5353. Так что фильтр WireShark для поиска пакетов Bonjour можно значительно упростить.

1.6 Служба cups-browsed

Вспомогательный демон cups-browsed автоматически находит сетевые принтеры в локальной сети и формирует очереди печати в CUPS. Таким образом, отпадает необходимость установки МФУ и принтеров, если они находятся cups-browsed при запуске операционной системы. Обнаружение принтеров с помощью службы cups-browsed может быть удобнее ручной установки принтера, но приводит к замедлению запуска печати и повышению нагрузки на процессор.

Подробно об использовании cups-browsed в Linux см. параграф 3.1.3 второй части статьи.

2. CUPS

Администрирование принтеров при любом из способов подключения производится на панели CUPS - Common UNIX Printing System.

2.1 Установка службы CUPS

sudo apt install cups

Запуск службы CUPS через systemctl, главный инструмент управления системой инициализации SystemD:

sudo systemctl start cups

Проверка:

systemctl status cups

Разрешение запуска при загрузке компьютера:

sudo systemctl enable cups

Чтобы не выдавалось окно ввода имя пользователя и пароля при открытии веб интерфейса:

sudo adduser your_username lpadmin

2.2 Администрирование принтеров с помощью службы CUPS

По умолчанию администрирование CUPS производится через веб-интерфейс по адресу только локального компьютера, порт 631:
http://localhost:631/.

В статье рассматриваю только настройку компьютера как клиента для печати, то есть рабочей станции, с которой осуществляется печать напрямую на принтер. Если нужно превратить Linux в сервер печати, смотрите другие ститьи.

3. Способы установки принтера в Linux - с драйвером или без драйвера

3.1. Способы установки принтера с драйвером

3.1.1 Протокол печати AppSocket (JetPrint)

Протокол предложен фирмой HP (Hewlett Packard), находящейся в Пало-Алто, штат Калифорния, США. При использовании AppSocket команды принтеру передаются с использованием Socket API через сетевой порт принтера: 9100/TCP. Состояние принтера контролируются через порт 9101/UDP (не обязательный). Описания форматирования страниц документов выполнено на языке PostScript (сокращённо PS) в драйвере на стороне ПК. То есть данные идут на принтер в подготовленном виде.

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

  • принтер может быть "глупым".
  • простота установки
  • один из наиболее часто используемых сетевых протоколов для печати на принтеры
  • быстрая печать. работает на низком уровне. Из-за этого печать с помощью Socket называют RAW printing.
  • адрес URI максимально простой, он содержит лишь IP адрес принтера в локальной сети и порт 9100.

Недостатки:

  • нет безопасности.(не подходит для больших организаций, где может происходить атака на принтеры, когда они начинают печатать много пустых страниц или мусора, а данные могут быть перехвачены при передаче по локальной сети).
  • не позволяет печатать на принтер из Интернет, так как порты 9100 и 9001 заблокированы на брандмауэре, а открывать их наружу небезопасно.
  • не поддерживает режим без настройки Zero Conf для Apple Macintosh и т.д.. Нужно знать IP адрес принтера.
  • IP адрес принтера должен быть фиксированным. Нельзя использовать DHCP.

Строка подключения:
socket://ip-address

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

  1. Прежде всего узнайте IP-адрес принтера (можно распечатать его "страницу конфигурации) или зайти в меню отображения адреса IPv4.
  2. Проверку наличия протокола APPSocket можно произвести командами

sudo apt update && sudo apt install nmap -y
nmap 192.168.1.123 -p 9100
sudo nmap -PU 192.168.1.123 -p 9001

, где 192.168.1.123 заменить на IP адрес принтера в локальной сети.

Как настроить принтер по протоколу AppSocket

Перед установкой принтера следует скачать и установить драйвер с веб сайта производителя принтера или МФУ. Драйвер может представлять собой файл пакета с расширением DEB для установки с помощью утилиты "Установщик пакетов" или команды sudo dpkg -i имя_файла.deb или архив с файлами, папками и скриптом установки на языке Shell - с расширением .sh. Если файлы в архиве, их нужно сначала извлечь, затем установить sudo sh имя_файла.sh. Будьте внимательны и скачивайте дистрибутив драйвера только с официального сайта производителя устройства! Адрес официального сайта производителя обычно указан в руководстве пользователя принтера.

  1. Перейдите на персональном компьютере с ОС Linux в настройки CUPS - в веб браузере нужно ввести в строку адреса: http://localhost:631/.
  2. На веб странице CUPS выбрать пункт меню Администрирование - Добавить принтер
  3. Затем "другие сетевые принтеры" - "AppSocket/HP JetDirect ", Нажмите Продолжить
  4. socket://192.168.1.123 - замените на реальный IP-адрес принтера из пунктов 1 и 2. Нажмите Продолжить
  5. заполните поле "Наименование" - без пробелов. Например. Pantum. Нажмите Продолжить
  6. в поле "создать" укажите производителя, например Pantum. Нажмите Продолжить
  7. укажите модель принтера, указанную на задней панели МФУ (принтера) или на упаковке. Например, Pantum BM5100 Series PS (en). Нажмите "Добавить принтер".



Похожие публикации