Настройка сетевого принтера через CUPS (Common Unix Printing System) — стандартный процесс для Linux-систем, но часто вызывает сложности у пользователей. Особенно если речь идёт о корпоративных МФУ с нестандартными протоколами или принтерах без официальной поддержки драйверов. Эта статья не просто повторит базовые команды, а раскроет нюансы, которые редко упоминают в стандартных мануалах: от выбора правильного URI для разных типов подключения до диагностики ошибок типа client-error-not-found.

Мы разберём два ключевых сценария: добавление принтера через веб-интерфейс CUPS (удобно для новичков) и через терминал (необходимо для серверов без GUI). Отдельное внимание уделим проблемам с Samba, IPP и LPD-протоколами, а также приведём таблицу совместимости популярных моделей принтеров с открытыми драйверами. Если вы ранее сталкивались с тем, что принтер "виден" в сети, но не печатает — здесь вы найдёте системное решение.

Что такое CUPS и почему он используется для сетевых принтеров

CUPS (Common Unix Printing System) — это кроссплатформенная система печати, разработанная Apple и ставшая стандартом де-факто для Linux и macOS. Она преобразует задачи печати в формат, понятный принтеру, управляет очередями заданий и поддерживает широкий спектр протоколов:

  • 🖨️ IPP (Internet Printing Protocol) — современный стандарт для сетевой печати (порт 631)
  • 🌐 SMB/CIFS — печать через сетевые папки Windows (порт 445)
  • 📡 LPD/LPR — устаревший, но всё ещё используемый протокол (порт 515)
  • 🔌 AppSocket (JetDirect) — прямой протокол для принтеров HP (порт 9100)

Главное преимущество CUPS — централизованное управление печатью через веб-интерфейс (localhost:631) или команды терминала. Это позволяет настраивать принтеры на серверах без графического интерфейса, ограничивать доступ пользователей к устройствам и даже организовывать кластеры принтеров. Однако для корректной работы требуется правильно указать URI принтера и установить совместимый драйвер.

📊 Какой протокол вы используете для сетевой печати?
IPP (Internet Printing Protocol)
SMB (Windows-совместимый)
LPD/LPR (устаревший)
AppSocket (JetDirect)
Не знаю

Подготовка системы: установка CUPS и необходимых пакетов

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

# Для Debian/Ubuntu

sudo apt update && sudo apt install cups cups-client samba smbclient

Для RHEL/CentOS

sudo dnf install cups cups-client samba-client

Для Arch Linux

sudo pacman -S cups samba

После установки запустите и добавьте службу в автозагрузку:

sudo systemctl enable --now cups

Проверьте статус службы:

systemctl status cups

Если статус active (running), переходите к настройке. Если возникли ошибки, убедитесь, что порт 631 не заблокирован брандмауэром:

sudo ufw allow 631/tcp
💡

Если после установки CUPS не открывается веб-интерфейс (localhost:631), проверьте настройки /etc/cups/cupsd.conf. Найдите строку Listen localhost:631 и замените на Port 631, затем перезапустите службу: sudo systemctl restart cups.

Способ 1: Добавление принтера через веб-интерфейс CUPS

Это самый наглядный метод, подходящий для большинства пользователей. Откройте браузер и перейдите по адресу:

http://localhost:631

В меню выберите Administration → Add Printer. Система запросит логин и пароль — используйте данные вашего Linux-пользователя (должен быть в группе lpadmin). Если группа отсутствует, добавьте пользователя в неё:

sudo usermod -aG lpadmin $USER

Далее следуйте пошаговой инструкции:

Выбрать "Add Printer" в разделе Administration|

Указать корректный URI (пример: ipp://192.168.1.100/ipp/print)|

Выбрать производителя и модель принтера из списка|

При необходимости загрузить PPD-файл драйвера|

Настроить политики доступа (опционально)|

Печать тестовой страницы для проверки-->

Выбор правильного URI для сетевого принтера

Это критически важный шаг — неправильный URI приводит к ошибкам типа client-error-not-found. Формат зависит от протокола:

Протокол Формат URI Пример Когда использовать
IPP ipp://[IP-адрес]/ipp/print ipp://192.168.1.150/ipp/print Современные принтеры (HP, Canon, Brother)
AppSocket (JetDirect) socket://[IP-адрес]:9100 socket://192.168.1.150:9100 Принтеры HP, некоторые модели Xerox
SMB smb://[IP-адрес]/[имя_принтера] smb://192.168.1.100/OfficePrinter Принтеры, расшаренные через Windows
LPD lpd://[IP-адрес]/queue lpd://192.168.1.150/P1 Устаревшие сетевые принтеры

Если не уверены в протоколе, проверьте настройки принтера через его веб-интерфейс (обычно доступен по IP-адресу устройства) или документацию. Для принтеров Brother, например, часто требуется протокол IPP, а для старых моделей HP LaserJetAppSocket.

Как найти IP-адрес принтера?

1. Напечатайте тестовую страницу самотестирования (обычно удерживая кнопку питания 5-10 секунд).

2. Проверьте список устройств в роутере (раздел DHCP Clients).

3. Используйте утилиту nmap для сканирования сети:

sudo nmap -sn 192.168.1.0/24 | grep -i "printer"

4. Для принтеров с дисплеем IP-адрес отображается в меню "Сетевые настройки".

Способ 2: Добавление принтера через терминал (для серверов)

Если у вас сервер без графического интерфейса, используйте команду lpadmin. Общий синтаксис:

sudo lpadmin -p [имя_принтера] -E -v [URI] -m [драйвер]

Пример для принтера HP LaserJet P1102w с IP-адресом 192.168.1.200:

sudo lpadmin -p HP_LaserJet_P1102 -E -v socket://192.168.1.200:9100 -m drv:///sample.drv/hl1250.ppd

Расшифровка параметров:

  • -p — имя принтера в системе (латиницей, без пробелов)
  • -E — включить принтер после добавления
  • -v — URI устройства (см. таблицу выше)
  • -m — драйвер (можно указать everywhere для автоматического подбора или путь к .ppd-файлу)

Чтобы проверить список доступных драйверов, выполните:

lpinfo -m | less

Для принтеров Brother или Epson может потребоваться ручная загрузка .ppd-файла с официального сайта. После добавления принтера установите его принтером по умолчанию:

sudo lpadmin -d HP_LaserJet_P1102

1. Корректность URI (особенно порт и протокол).

2. Доступность принтера по сети (ping 192.168.1.200).

3. Наличие драйвера в системе (lpinfo -m | grep -i "brother").-->

Установка драйверов для нестандартных принтеров

Многие производители (например, Brother, Epson, Xerox) не включают драйверы в стандартные репозитории Linux. В таких случаях:

  1. Скачайте драйвер с официального сайта (ищите раздел "Linux Drivers").
  2. Распакуйте архив и найдите файл с расширением .ppd.
  3. Установите драйвер через терминал:
    sudo lpadmin -p Epson_L3250 -E -v ipp://192.168.1.180/ipp/print -P /путь/к/filedriver.ppd
  4. Перезапустите CUPS:
    sudo systemctl restart cups

Для принтеров Brother часто требуется дополнительный пакет brgenml1lprdriver или brgenml1cupswrapper. Установите его через dpkg:

sudo dpkg -i brother-lpr-drivers-*.deb

sudo dpkg -i brother-cups-wrapper-*.deb

Драйверы для старых моделей HP

Для принтеров HP LaserJet 1018/1020 используйте драйвер foo2zjs:

sudo apt install printer-driver-foo2zjs

sudo getweb 1018 # Скачает прошивку для модели 1018

После установки выберите драйвер HP LaserJet 1018 Foomatic/foo2zjs в CUPS.

Распространённые ошибки и их решения

Даже при правильной настройке могут возникать проблемы. Вот типичные ошибки и способы их устранения:

Ошибка Возможная причина Решение
client-error-not-found Неверный URI или принтер недоступен Проверьте IP-адрес и протокол. Используйте ping и telnet 192.168.1.100 9100 для диагностики.
server-error-service-unavailable Служба CUPS не запущена Перезапустите службу: sudo systemctl restart cups
Filter failed Несовместимый драйвер Установите правильный .ppd-файл или используйте универсальный драйвер PostScript.
Принтер "виден", но не печатает Блокировка брандмауэром или очередь заданий Проверьте очередь: lpstat -t. Очистите её: cancel -a.

Если принтер подключён через Samba, но CUPS его не видит, убедитесь, что пакет smbclient установлен, и проверьте доступность ресурса:

smbclient -L //192.168.1.100 -U гостевой_пользователь%

Для принтеров Canon с протоколом IPP может потребоваться отключить проверку сертификатов в /etc/cups/client.conf:

ServerName /version=1.1

Encryption IfRequested

1. Откройте http://localhost:631/printers.

2. Выберите ваш принтер → Set Default Options.

3. Убедитесь, что выбрано правильное разрешение (например, 600 dpi) и формат бумаги (A4).-->

Настройка прав доступа и совместного использования принтера

По умолчанию принтер, добавленный через CUPS, доступен только локальным пользователям. Чтобы разрешить печать с других устройств в сети:

  1. Отредактируйте файл /etc/cups/cupsd.conf:
  2. sudo nano /etc/cups/cupsd.conf
  3. Найдите блок <Location /printers> и добавьте:
    Allow @LOCAL
    

    Order allow,deny

  4. Разрешите доступ из вашей подсети (например, 192.168.1.0/24):
    Allow 192.168.1.*
  5. Перезапустите CUPS:
    sudo systemctl restart cups

Теперь другие устройства в сети смогут добавить принтер по адресу http://[IP-вашего-сервера]:631/printers/[имя_принтера]. Для Windows-машин используйте протокол IPP или установите драйвер через \\IP-сервера\имя_принтера (требуется Samba).

💡

Для безопасности ограничьте доступ к веб-интерфейсу CUPS. В файле /etc/cups/cupsd.conf замените строку Listen *:631 на Listen localhost:631, если доступ из сети не требуется.

FAQ: Ответы на частые вопросы

Как узнать, поддерживает ли мой принтер протокол IPP?

Проверьте документацию принтера или откройте его веб-интерфейс (обычно по IP-адресу). В разделе "Сетевые настройки" или "Протоколы" должен быть пункт IPP или Internet Printing Protocol. Также можно просканировать порты:

nmap -p 631 192.168.1.100

Если порт 631 открыт, принтер поддерживает IPP.

CUPS не видит принтер, подключённый через USB. Что делать?

Проверьте:

  1. Подключение принтера к USB-порту: lsusb (должен отобразиться ваш принтер).
  2. Права доступа: добавьте пользователя в группу lp:
    sudo usermod -aG lp $USER
  3. Наличие драйвера: lpinfo -v (должен появиться USB-принтер).

Если принтер не определяется, попробуйте перезагрузить службу udev:

sudo service udev restart

Как печатать с Android на принтер, настроенный через CUPS?

Используйте приложения вроде PrintBot или PrinterShare:

  1. Убедитесь, что принтер расшарен в CUPS (см. раздел "Настройка прав доступа").
  2. В приложении выберите "Добавить принтер" → "IPP-принтер".
  3. Укажите IP-адрес сервера с CUPS и имя принтера (например, http://192.168.1.50:631/printers/HP_Office).
  4. Выберите драйвер (обычно Generic PostScript).

Для печати из Chrome на Android включите опцию "Сохранить как PDF", затем отправьте файл на печать через CUPS.

Можно ли использовать CUPS для принтера, подключённого к Windows?

Да, но требуется:

  1. Расшарить принтер в Windows (Панель управления → Устройства и принтеры → Свойства принтера → Доступ).
  2. Установить Samba на Linux: sudo apt install samba smbclient.
  3. Добавить принтер в CUPS через URI:
    smb://[IP-Windows-ПК]/[имя_принтера]

    Пример: smb://192.168.1.10/Canon_MG3600.

  4. Указать логин/пароль Windows-пользователя при запросе CUPS.

Если возникает ошибка NT_STATUS_ACCESS_DENIED, проверьте права доступа в Windows и настройки Samba на Linux.

Как сбросить настройки CUPS к заводским?

Выполните команды:

sudo systemctl stop cups

sudo rm -rf /etc/cups/printers.conf

sudo rm -rf /etc/cups/ppd/*

sudo systemctl start cups

Это удалит все добавленные принтеры и сбросит конфигурацию. Для полного сброса также очистите очередь печати:

sudo cancel -a -x