Настройка сетевого принтера через 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 принтера и установить совместимый драйвер.
Подготовка системы: установка 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 LaserJet — AppSocket.
Как найти 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. В таких случаях:
- Скачайте драйвер с официального сайта (ищите раздел "Linux Drivers").
- Распакуйте архив и найдите файл с расширением
.ppd. - Установите драйвер через терминал:
sudo lpadmin -p Epson_L3250 -E -v ipp://192.168.1.180/ipp/print -P /путь/к/filedriver.ppd - Перезапустите 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, доступен только локальным пользователям. Чтобы разрешить печать с других устройств в сети:
- Отредактируйте файл
/etc/cups/cupsd.conf: - Найдите блок
<Location /printers>и добавьте:Allow @LOCALOrder allow,deny
- Разрешите доступ из вашей подсети (например,
192.168.1.0/24):Allow 192.168.1.* - Перезапустите CUPS:
sudo systemctl restart cups
sudo nano /etc/cups/cupsd.conf
Теперь другие устройства в сети смогут добавить принтер по адресу 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. Что делать?
Проверьте:
- Подключение принтера к USB-порту:
lsusb(должен отобразиться ваш принтер). - Права доступа: добавьте пользователя в группу
lp:sudo usermod -aG lp $USER - Наличие драйвера:
lpinfo -v(должен появиться USB-принтер).
Если принтер не определяется, попробуйте перезагрузить службу udev:
sudo service udev restart
Как печатать с Android на принтер, настроенный через CUPS?
Используйте приложения вроде PrintBot или PrinterShare:
- Убедитесь, что принтер расшарен в CUPS (см. раздел "Настройка прав доступа").
- В приложении выберите "Добавить принтер" → "IPP-принтер".
- Укажите IP-адрес сервера с CUPS и имя принтера (например,
http://192.168.1.50:631/printers/HP_Office). - Выберите драйвер (обычно
Generic PostScript).
Для печати из Chrome на Android включите опцию "Сохранить как PDF", затем отправьте файл на печать через CUPS.
Можно ли использовать CUPS для принтера, подключённого к Windows?
Да, но требуется:
- Расшарить принтер в Windows (
Панель управления → Устройства и принтеры → Свойства принтера → Доступ). - Установить Samba на Linux:
sudo apt install samba smbclient. - Добавить принтер в CUPS через URI:
smb://[IP-Windows-ПК]/[имя_принтера]Пример:
smb://192.168.1.10/Canon_MG3600. - Указать логин/пароль 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