В этом руководстве вы узнаете, как настроить общий доступ к принтеру, подключенному к компьютеру на базе CentOS 8 или RHEL 8, для пользователей Windows, macOS и iOS в одной сети. CUPS (Common Unix Printing System) — это стандартная система печати, используемая в Linux, FreeBSD и macOS. В различных настольных окружениях Linux могут быть свои инструменты для настройки принтера, но все они работают на базе CUPS. Принтер, настроенный через CUPS, можно сделать доступным в сети с помощью различных протоколов, таких как:
- Bonjour, также называемый mDNS/DNS-SD (многоадресный DNS/обнаружение сервисов DNS), обеспечивает возможность поиска сервисов в локальной сети. IPP (Интернет-протокол печати) используется в качестве транспортного протокола.
- SMB, также называемый Samba, чаще всего применяется для обмена файлами и принтерами с устройствами на базе Windows.
- AirPrint: Обеспечивает возможность пользователям iPhone, iPad и macOS выполнять печать через Wi-Fi.
У каждого протокола есть свои плюсы и минусы. Сначала я продемонстрирую, как выполнить установку и настройку CUPS. Далее мы рассмотрим процесс совместного использования принтера CUPS через три вышеупомянутых протокола. Рекомендую настроить все три способа, чтобы пользователи могли без труда находить принтер в вашей локальной сети.

Содержание статьи
- 1 Установка и конфигурация CUPS на CentOS 8/RHEL 8
- 2 Инсталлируйте драйвер принтера на CentOS 8/RHEL 8.
- 3 Настройте общий доступ к принтеру CUPS с использованием протокола Bonjour/IPP.
- 4 Установка принтера на рабочих станциях
- 5 Организация общего доступа к принтеру CUPS с помощью Samba
- 6 Используйте AirPrint для совместного доступа к принтеру CUPS с устройствами iOS.
Установка и конфигурация 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
После этого найдите следующие строки.
Указанная выше настройка предоставляет возможность доступа к веб-интерфейсу CUPS исключительно с локального хоста. Для того чтобы разрешить подключение с других устройств в одной сети, внесите в конфигурацию строку Allow @LOCAL, как показано далее.
Чтобы разрешить удаленное администрирование из локальной сети, необходимо также внести соответствующие изменения для директории /admin.
Сохраните файл и закройте его. После этого перезапустите 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
Инсталлируйте драйвер принтера на 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 "LinuxBabe is awesome!" > file. txt
Далее введите следующую команду, чтобы вывести содержимое этого текстового файла через командную строку.
lp file. txt
Этот способ весьма прост, поэтому не переживайте о качестве печати в данный момент.
Настройте общий доступ к принтеру 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
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
IPР-печать без использования воды.
Bonjour применяется для обнаружения принтера в локальной сети. Для взаимодействия между клиентами и сервером CUPS используется IPP (Интернет-протокол печати). Основное преимущество IPP состоит в том, что пользователи могут подключаться к общему принтеру без необходимости установки драйверов на свои устройства. CUPS поддерживает IPP по умолчанию, что позволяет легко делиться принтером через этот протокол без дополнительных настроек.
Установка принтера на рабочих станциях
Пользователи macOS и Linux.
Так как в macOS и большинстве настольных дистрибутивов Linux CUPS установлен по умолчанию в качестве системы печати, после того как вы активируете общий доступ к принтеру через Bonjour/IPP на CentOS 8 или RHEL 8, пользователи macOS и Linux, находящиеся в той же сети, смогут автоматически подключаться к принтеру. При выборе опции печати в различных приложениях (например, текстовых редакторах, почтовых программах, графических редакторах или браузерах), принтер сразу станет доступен. Добавлять его вручную не потребуется — всё происходит автоматически.
Если ваш компьютер на Linux не обнаруживает принтер, возможно, в системе не установлена команда ippfind. Для установки этой команды в дистрибутивах на основе Debian выполните следующую команду.
sudo apt install cups-ipp-utils
На CentOS 8 выполните следующую инструкцию.
sudo dnf install cups-ipptool
Перезагрузите CUPS на компьютере клиента.
sudo systemctl restart cups
Windows
Windows 10 включает в себя клиент IPP. Чтобы добавить принтер, введите «Принтер» в строку поиска в нижнем левом углу и перейдите в раздел «Принтеры и сканеры». Далее нажмите на кнопку «Добавить принтер или сканер», после чего система выполнит поиск доступных принтеров в вашей локальной сети.

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

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

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

Нажмите кнопку «Далее», чтобы принтер был установлен в вашей системе Windows.
Ручная установка принтера в Linux
Если по каким-либо причинам ваш принтер не отображается, его можно добавить вручную. Для этого на настольном Linux, используя Bonjour, откройте утилиту конфигурации принтера в настройках системы или в меню приложений. Нажмите кнопку «Добавить», чтобы установить новый принтер.

После этого выберите Сетевой принтер, и устройство автоматически просканирует доступные принтеры в вашей локальной сети. Как видно, он обнаружил мой принтер HP Deskjet. Нажмите на кнопку Далее.

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

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

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

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

Организация общего доступа к принтеру CUPS с помощью Samba
Samba представляет собой бесплатную и открытую реализацию протокола SMB/CIFS для операционных систем Unix и Linux. Она предназначена для обмена файлами и печатью между компьютерами на базе Unix/Linux и Windows в рамках локальной сети. Основная цель Samba — обеспечить совместное использование файлов и принтеров с клиентами на 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]. По умолчанию он представлен следующим образом:
[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.

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

Используйте AirPrint для совместного доступа к принтеру CUPS с устройствами iOS.
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
Этот скрипт написан для 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
Установите пакет cups.
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
sudo systemctl restart avahi-daemon
Теперь пользователи iOS и macOS, находящиеся в одной сети, должны без проблем обнаружить ваш принтер. На следующем изображении видно, что мой iPhone успешно распознал принтер через AirPrint.

Надеюсь, это руководство помогло вам настроить сервер печати CUPS на CentOS 8/RHEL 8.

