Поиск по сайту:

Настройка сервера печати CUPS на CentOS 8/RHEL 8 (Bonjour, IPP, Samba, AirPrint)

В этом руководстве будет показано, как предоставить общий доступ к принтеру, подключенному к компьютеру CentOS 8/RHEL 8, с клиентами Windows, macOS и iOS в одной сети. CUPS (Common Unix Printing System) — это система печати по умолчанию в Linux, FreeBSD и macOS. В вашей среде рабочего стола Linux может быть специальная утилита настройки принтера, но все они используют CUPS под капотом. Принтер CUPS можно использовать в сети с использованием нескольких протоколов, в том числе:

  • Bonjour + IPP: Bonjour, также известный как mDNS/DNS-SD (обнаружение многоадресной службы DNS/DNS), позволяет компьютеру находить службы в локальной сети. IPP (протокол Интернет-печати) — это транспортный протокол.
  • SMB: также известный как Samba, в основном используемый для обмена файлами и принтерами с клиентами Windows.
  • AirPrint: позволяет клиентам iPhone, iPad и macOS печатать через Wi-Fi.

Каждый протокол имеет свои преимущества и недостатки. Сначала я покажу вам, как установить и настроить CUPS. Затем мы узнаем, как предоставить общий доступ к принтеру CUPS с помощью трех вышеуказанных протоколов. Я рекомендую использовать все три метода для предоставления общего доступа к вашему принтеру, чтобы пользователи могли с минимальными усилиями найти доступный принтер в локальной сети.

Шаг 1. Установите и настройте CUPS в CentOS 8/RHEL 8.

В настольной версии CentOS 8/RHEL 8 предустановлен CUPS. Если вы используете серверную версию CentOS 8/RHEL 8, вам необходимо запустить следующую команду, чтобы установить CUPS из репозитория CentOS 8/RHEL 8 по умолчанию.

sudo dnf install cups

Затем запустите CUPS.

sudo systemctl start cups

Включите автозапуск во время загрузки.

sudo systemctl enable cups

Проверьте его статус:

systemctl status cups

Пример вывода:

Затем отредактируйте основной файл конфигурации CUPS с помощью текстового редактора командной строки, такого как Nano.

sudo nano /etc/cups/cupsd.conf

По умолчанию веб-интерфейс CUPS доступен только по адресу localhost:631. Если вы используете серверную версию CentOS 8/RHEL 8, возможно, вам захочется заставить CUPS прослушивать все доступные сетевые интерфейсы, чтобы вы могли получить доступ к веб-интерфейсу CUPS с других компьютеров. Найдите следующую строку.

Listen localhost:631

Измените его на следующее: чтобы CUPS прослушивал все сетевые интерфейсы.

Port 631

Следующая строка заставит CUPS показывать общие принтеры в локальной сети, чтобы другие компьютеры в той же сети могли видеть принтеры, подключенные к вашему компьютеру CentOS 8/RHEL 8.

Browsing On

Затем найдите следующие строки.

<Location />
  Order allow,deny
</Location>

Приведенная выше конфигурация разрешает доступ к веб-интерфейсу CUPS только с локального хоста. Чтобы разрешить доступ с других компьютеров в той же сети, добавьте Allow @LOCAL в конфигурацию, как показано ниже.

<Location />
  Order allow,deny
  Allow @LOCAL
</Location>

Если вы хотите разрешить удаленное администрирование из локальной сети, добавьте его также для каталога /admin.

<Location /admin>
  Order allow,deny
  Allow @LOCAL
</Location>

Сохраните и закройте файл. Затем перезапустите CUPS, чтобы изменения вступили в силу.

sudo systemctl restart cups

Нам нужно разрешить клиентам в той же сети доступ к порту 631 на вашем компьютере CentOS 8/RHEL 8.

sudo firewall-cmd --permanent --add-port=631/tcp

Перезагрузите брандмауэр, чтобы изменения вступили в силу.

sudo systemctl reload firewalld

Помимо основного cups.service, есть еще cups-browsed.service, который используется для сканирования и добавления принтера из локальной сети. Если вы хотите, чтобы ваш компьютер CentOS 8/RHEL 8 мог использовать другие принтеры в локальной сети, запустите эту службу.

sudo systemctl start cups-browsed

И включите автозапуск во время загрузки.

sudo systemctl enable cups-browsed

Шаг 2. Установите драйвер для вашего принтера на CentOS 8/RHEL 8

Вам необходимо установить драйвер на CentOS 8/RHEL 8, чтобы он мог распознавать и использовать принтер. Если у вас принтер HP, вы можете легко установить драйвер с помощью следующей команды.

sudo dnf install hplip

Я также рекомендую установить пакет gutenprint-cups, который предоставляет драйверы CUPS для Canon, Epson, HP и совместимых принтеров.

sudo dnf install gutenprint-cups

Если у вас есть другие принтеры, вы можете найти драйверы на openprinting.org.

После установки драйвера вам может потребоваться повторно подключить принтер к USB-порту вашего компьютера CentOS 8/RHEL 8. Чтобы проверить правильность работы драйвера, вы можете создать текстовый файл в CentOS 8/RHEL 8:

echo " is awesome!" > file.txt

Затем выполните следующую команду, чтобы распечатать этот текстовый файл из командной строки.

lp file.txt

Это очень элементарный метод, поэтому не беспокойтесь сейчас о качестве печати.

Шаг 3. Совместное использование принтера CUPS через протокол Bonjour/IPP

Установка Avahi-демона

CUPS может объявлять о своем присутствии в сети через протокол mDNS (многоадресная рассылка DNS) и DNS-SD (обнаружение служб DNS), который также известен как Bonjour. Для этого вам необходимо установить и запустить avahi-daemon — службу, аналогичную службе Apple Bonjour, которая позволяет компьютерам автоматически обнаруживать общие устройства и службы в локальной сети.

sudo dnf install avahi

Нам также необходимо установить пакет nss-mdns из репозитория EPEL, который необходим клиентам для разрешения домена .local в сети.

sudo dnf install epel-release

sudo dnf install nss-mdns

Запустите демон avahi.

sudo systemctl start avahi-daemon

Включите автозапуск во время загрузки.

sudo systemctl enable avahi-daemon

Avahi-daemon прослушивает UDP-порт 5353. Откройте его в брандмауэре.

sudo firewall-cmd --permanent --add-port=5353/udp

Перезагрузите брандмауэр, чтобы изменения вступили в силу.

sudo systemctl reload firewalld

Печать без драйверов IPP

Bonjour используется для рекламы принтера в локальной сети. Чтобы клиенты и сервер CUPS могли взаимодействовать друг с другом, необходим IPP (протокол Интернет-печати). Преимущество IPP заключается в том, что клиенты могут использовать общий принтер без установки каких-либо драйверов на свои устройства. CUPS поддерживает IPP «из коробки», поэтому вам не нужно ничего делать, чтобы предоставить общий доступ к принтеру CUPS через IPP.

Шаг 4. Добавьте принтер на клиентские компьютеры

Клиенты macOS и Linux

Поскольку в macOS и большинстве настольных дистрибутивов Linux CUPS установлен в качестве системы печати по умолчанию, после включения общего доступа к принтеру через Bonjour/IPP на компьютере CentOS 8/RHEL 8 пользователи macOS и Linux в одной сети смогут автоматически использовать принтер. Когда они нажимают кнопку печати в приложениях (текстовых процессорах, программах чтения электронной почты, фоторедакторах и веб-браузерах), принтер становится доступен автоматически. Им не нужно явно добавлять принтер. Это магия.

Если ваш компьютер Linux не может найти принтер, возможно, в вашей системе нет команды ippfind. Запустите следующую команду, чтобы установить ее в дистрибутив Linux на базе Debian.

sudo apt install cups-ipp-utils

В CentOS 8 выполните следующую команду.

sudo dnf install cups-ipptool

Затем перезапустите CUPS на клиентском компьютере.

sudo systemctl restart cups

Окна

Windows 10 поставляется с клиентом IPP. Введите принтер в строке поиска в левом нижнем углу и откройте Принтеры и сканеры. Затем нажмите кнопку Добавить принтер или сканер. Он просканирует доступные принтеры в локальной сети.

Как видите, он нашел мой принтер HP Deskjet. Выберите найденный принтер и нажмите Добавить устройство. Он будет добавлен в список принтеров через несколько минут.

Если вы используете другую версию Windows, в которой невозможно добавить принтер таким образом, вы можете установить службы печати Bonjour. После установки запустите мастер принтера Bonjour. Он автоматически просканирует доступные принтеры в локальной сети. Как видно на скриншоте, он нашел мой принтер HP.

Нажмите «Далее», затем вам нужно выбрать драйвер для этого принтера. Вы можете выбрать драйвер класса Microsoft IPP, который установлен в системе по умолчанию.

Нажмите «Далее», и принтер будет добавлен в вашу систему Windows.

Добавление принтера вручную в Linux

Если по какой-либо причине вы не видите принтер, вы можете добавить его вручную. Чтобы добавить общий принтер Bonjour в настольную Linux, найдите в настройках системы или в меню приложения утилиту настройки принтера. Нажмите кнопку Добавить, чтобы добавить новый принтер.

Затем нажмите «Сетевой принтер», и он автоматически просканирует доступные принтеры в локальной сети. Как видите, он нашел мой принтер HP Deskjet. Нажмите кнопку Вперед.

Затем вы можете дать принтеру имя и описание. Я просто принимаю значения по умолчанию. Нажмите Применить, и все готово.

Добавление принтера вручную в macOS

Чтобы добавить общий принтер Bonjour в macOS, перейдите в системные настройки -> Принтеры и сканеры. Нажмите кнопку «плюс» (+), чтобы добавить принтер.

Он автоматически сканирует доступные принтеры в локальной сети. Как видите, он нашел мой принтер HP Deskjet.

Нажмите кнопку Добавить, и принтер появится в списке.

Шаг 5. Откройте общий доступ к принтеру CUPS через Samba

Samba — это бесплатная реализация протокола SMB/CIFS с открытым исходным кодом для Unix и Linux, которая обеспечивает общий доступ к файлам и принтерам между компьютерами Unix/Linux и Windows в локальной сети. В основном он используется для обмена файлами и принтером с клиентами Windows.

Чтобы установить Samba на CentOS 8/RHEL 8, выполните следующую команду.

sudo dnf install samba

Затем введите следующую команду, чтобы запустить службы smbd и nmbd.

sudo systemctl start smb nmb

Включите автозапуск во время загрузки.

sudo systemctl enable smb nmb

Чтобы проверить, запущена ли служба Samba, введите следующие команды.

systemctl status smb nmb

После запуска демон smb будет прослушивать TCP-порты 139 и 445. nmbd будет прослушивать UDP-порты 137 и 138. Чтобы открыть эти порты, выполните следующую команду. в брандмауэре.

sudo firewall-cmd --permanent --add-service=samba

Перезагрузите демон межсетевого экрана, чтобы изменения вступили в силу.

sudo systemctl reload firewalld

Затем отредактируйте основной файл конфигурации.

sudo nano /etc/samba/smb.conf

Найдите раздел [принтеры]. По умолчанию это выглядит так:

[printers]
        comment = All Printers
        path = /var/tmp
        printable = Yes
        create mask = 0600
        browseable = No

Нам нужно изменить значение browseable на yes, чтобы клиенты в той же сети могли найти принтер и добавить guest ok=yes, чтобы разрешить любой в сети может использовать принтер.

[printers]
        comment = All Printers
        path = /var/tmp
        printable = Yes
        create mask = 0600
        browseable = yes
        guest ok = yes

При совместном использовании принтера рекомендуется включить службу spoolssd. Это сделает Samba более эффективной при большом количестве заданий на печать. Просто добавьте следующие две строки в раздел [global], чтобы включить службу spoolssd.

 rpc_server:spoolss = external
 rpc_daemon:spoolssd = fork

Сохраните и закройте файл. Затем перезапустите Самбу.

sudo systemctl restart smb nmb

Добавление общего принтера Samba в Windows.

Откройте проводник, введите IP-адрес компьютера CentOS 8/RHEL 8 в адресную строку, например \\192.168.0.110. Теперь принтер должен быть в списке.

Дважды щелкните принтер, чтобы добавить его в систему Windows. Затем нажмите кнопку «ОК», чтобы выбрать драйвер для установки. После установки драйвера принтер будет добавлен в вашу систему Windows.

Шаг 6. Поделитесь принтером CUPS с клиентами iOS через AirPrint

AirPrint позволяет клиентам iPhone, iPad и macOS печатать через Wi-Fi без установки программного обеспечения драйвера на клиентские устройства. CUPS поддерживает Airprint, но avahi-daemon по умолчанию не объявляет службу AirPrint в локальной сети. Нам нужно создать файл .service в каталоге /etc/avahi/services/ для принтера с помощью сценария Python. Запустите следующую команду, чтобы загрузить скрипт в CentOS 8/RHEL 8.

wget https://raw.github.com/tjfontaine/airprint-generate/master/airprint-generate.py

Добавьте разрешение на выполнение.

chmod +x airprint-generate.py

Этот скрипт Python создан для Python2. CentOS 8/RHEL 8 по умолчанию использует Python3. Нам нужно установить Python2.

sudo dnf install python2

Отредактируйте этот файл.

nano airprint-generate.py

Изменять

#!/usr/bin/env python

к

#!/usr/bin/env python2

Сохраните и закройте файл. Затем установите зависимости.

sudo dnf install gcc python2-devel cups-devel redhat-rpm-config

Установите модуль чашек.

sudo pip2 install cups pycups

Затем запустите этот скрипт.

sudo ./airprint-generate.py -d /etc/avahi/services/

Теперь в каталоге /etc/avahi/services/ для вашего принтера должен появиться файл .service.

ls /etc/avahi/services/

Пример вывода:

AirPrint-DeskJet-2130-series.service

Перезапустите демон Avahi.

sudo systemctl restart avahi-daemon

Теперь клиенты iOS и macOS в одной сети смогут использовать ваш принтер. На следующем снимке экрана показано, что мой iPhone успешно нашел принтер AirPrint.

Подведение итогов

Я надеюсь, что это руководство помогло вам настроить сервер печати CUPS в CentOS 8/RHEL 8. Как всегда, если этот пост оказался для вас полезным, подпишитесь на нашу бесплатную рассылку новостей, чтобы получать больше советов и рекомендаций. Вы также можете прочитать следующую статью, чтобы настроить общий файловый сервер Samba.

  • Настройка сервера Samba на CentOS 8/RHEL 8 для общего доступа к файлам

Статьи по данной тематике