Настройка сервера печати CUPS в Ubuntu (Bonjour, IPP, Samba, AirPrint)
В этом руководстве показано, как предоставить общий доступ к принтеру, подключенному к компьютеру с Ubuntu, клиентам 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 в Ubuntu
В настольной версии Ubuntu предустановлен CUPS. Если вы используете серверную версию Ubuntu, вам необходимо запустить следующую команду, чтобы установить CUPS из репозитория Ubuntu по умолчанию.
sudo apt install cups
Затем запустите CUPS.
sudo systemctl start cups
Включите автозапуск во время загрузки.
sudo systemctl enable cups
Проверьте его статус:
systemctl status cups
Пример вывода:
Затем отредактируйте основной файл конфигурации CUPS с помощью текстового редактора командной строки, такого как Nano.
sudo nano /etc/cups/cupsd.conf
Во-первых, нам нужно показать общие принтеры в локальной сети. Найдите следующую строку.
Browsing Off
Измените его на
Browsing On
чтобы другие компьютеры в той же сети могли видеть принтеры, подключенные к вашему компьютеру с Ubuntu.
По умолчанию веб-интерфейс CUPS доступен только по адресу localhost:631
. Если вы используете серверную версию Ubuntu, вы также можете заставить CUPS прослушивать все доступные сетевые интерфейсы, чтобы вы могли получить доступ к веб-интерфейсу CUPS с других компьютеров. Найдите следующую строку.
Listen localhost:631
Измените его на
Port 631
Таким образом, CUPS будет прослушивать все сетевые интерфейсы. Затем найдите следующие строки.
<Location />
Order allow,deny
</Location>
Приведенная выше конфигурация обеспечивает доступ к веб-интерфейсу CUPS только с локального хоста. Чтобы разрешить доступ с других компьютеров в той же сети, добавьте Allow @LOCAL
в конфигурацию, как показано ниже.
<Location />
Order allow,deny
Allow @LOCAL
</Location>
Также добавьте его в каталог /admin
, чтобы разрешить удаленное администрирование из локальной сети.
<Location /admin>
Order allow,deny
Allow @LOCAL
</Location>
Вы также можете разрешить определенный IP-адрес следующим образом:
<Location />
Order allow,deny
Allow 192.168.0.101
</Location>
Сохраните и закройте файл. Затем перезапустите CUPS, чтобы изменения вступили в силу.
sudo systemctl restart cups
Обратите внимание: если вы включили брандмауэр UFW в Ubuntu, вам необходимо разрешить клиентам в той же сети доступ к порту 631 на вашем компьютере с Ubuntu. Например, моя частная сеть использует сетевой диапазон 192.168.0.0 ~ 192.168.0.255, поэтому я запускаю следующую команду.
sudo ufw allow in from 192.168.0.0/24 to any port 631
Веб-интерфейс CUPS доступен по адресу https://IP-address-of-Ubuntu-box:631
. В этой статье нам не нужно использовать веб-интерфейс, но если вы хотите его использовать, вам необходимо добавить свою учетную запись пользователя в группу lpadmin
, чтобы вносить изменения в веб-интерфейс CUPS. интерфейс.
sudo adduser your_username lpadmin
Шаг 2. Установите драйвер для вашего принтера в Ubuntu
Вам необходимо установить драйвер в Ubuntu, чтобы он мог распознавать и использовать принтер. Если у вас принтер HP, вы можете легко установить драйвер с помощью следующей команды.
sudo apt install hplip
Я также рекомендую установить пакет printer-driver-gutenprint
, который предоставляет драйверы CUPS для Canon, Epson, HP и совместимых принтеров.
sudo apt install printer-driver-gutenprint
Если у вас есть другие принтеры, вы можете найти драйверы на openprinting.org.
После установки драйвера вам может потребоваться повторно подключить принтер к USB-порту вашего компьютера с Ubuntu. Чтобы проверить правильность работы драйвера, вы можете создать текстовый файл в Ubuntu:
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 apt install avahi-daemon
Запустите демон avahi.
sudo systemctl start avahi-daemon
Включите автозапуск во время загрузки.
sudo systemctl enable avahi-daemon
Avahi-daemon прослушивает UDP-порт 5353. Откройте его в брандмауэре.
sudo ufw allow 5353/udp
Печать без драйверов IPP
Bonjour используется для рекламы принтера в локальной сети. Чтобы клиенты и сервер CUPS могли взаимодействовать друг с другом, необходим IPP (протокол Интернет-печати). Преимущество IPP заключается в том, что клиенты могут использовать общий принтер без установки каких-либо драйверов на свои устройства. CUPS поддерживает IPP «из коробки», поэтому вам не нужно ничего делать, чтобы предоставить общий доступ к принтеру CUPS через IPP.
Шаг 4. Добавьте принтер на клиентские компьютеры
Клиенты macOS и Linux
Поскольку в macOS и большинстве настольных дистрибутивов Linux CUPS установлен в качестве системы печати по умолчанию, после включения общего доступа к принтеру через Bonjour/IPP в системе Ubuntu пользователи 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 в Ubuntu, просто запустите следующую команду в терминале.
sudo apt install samba samba-common-bin
Чтобы проверить, запущена ли служба Samba, введите следующие команды.
systemctl status smbd
systemctl status nmbd
Чтобы запустить эти две службы, введите следующие команды:
sudo systemctl start smbd
sudo systemctl start nmbd
Затем отредактируйте основной файл конфигурации.
sudo nano /etc/samba/smb.conf
При совместном использовании принтера рекомендуется включить службу spoolssd
. Это сделает Samba более эффективной при большом количестве заданий на печать. Просто добавьте следующие две строки в раздел [global]
, чтобы включить службу spoolssd
.
rpc_server:spoolss = external
rpc_daemon:spoolssd = fork
Затем перейдите в конец файла и вы увидите раздел [принтеры]
. В текстовом редакторе Nano вы можете перейти в конец файла, нажав Ctrl+W
, а затем нажав Ctrl+V
. Найдите следующие две строки.
browseable = no
guest ok = no
Измените их на
browseable = yes
guest ok = yes
Сохраните и закройте файл. Затем перезапустите Самбу.
sudo systemctl restart smbd nmbd
Добавление общего принтера Samba в Windows.
Откройте проводник, введите IP-адрес компьютера с Ubuntu в адресную строку, например \\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 с помощью следующей команды. Модель моего принтера — серия DeskJet 2130. Замените его на название вашей модели.
sudo nano /etc/avahi/services/AirPrint-DeskJet-2130-series.service
Добавьте следующие строки в файл.
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">AirPrint DeskJet-2130-series @ %h</name>
<service>
<type>_ipp._tcp</type>
<subtype>_universal._sub._ipp._tcp</subtype>
<port>631</port>
<txt-record>txtvers=1</txt-record>
<txt-record>qtotal=1</txt-record>
<txt-record>Transparent=T</txt-record>
<txt-record>URF=none</txt-record>
<txt-record>rp=printers/DeskJet-2130-series</txt-record>
<txt-record>note=HP DeskJet 2130 series</txt-record>
<txt-record>product=(GPL Ghostscript)</txt-record>
<txt-record>printer-state=3</txt-record>
<txt-record>printer-type=0x2900c</txt-record>
<txt-record>pdl=application/octet-stream,application/pdf,application/postscript,application/vnd.cups-raster,image/gif,image/jpeg,image/png,image/tiff,image/urf,text/html,text/plain,application/vnd.adobe-reader-postscript,application/vnd.cups-pdf</txt-record>
</service>
</service-group>
Сохраните и закройте файл. Перезапустите демон Avahi.
sudo systemctl restart avahi-daemon
Теперь клиенты iOS и macOS в одной сети смогут использовать ваш принтер. На следующем снимке экрана показано, что мой iPhone успешно нашел принтер AirPrint.
Подведение итогов
Я надеюсь, что это руководство помогло вам настроить сервер печати CUPS в Ubuntu 20.04, 18.04 и 21.10. Как всегда, если этот пост оказался для вас полезным, подпишитесь на нашу бесплатную рассылку, чтобы получать больше советов и рекомендаций. Вы также можете прочитать следующую статью, чтобы настроить общий файловый сервер Samba.
- Настройте сервер Samba в Ubuntu для общего доступа к файлам