在CentOS 8 / RHEL 8(Bonjour,IPP,Samba,AirPrint)上設置CUPS打印服務器

本教程將向您展示如何在同一網絡上與Windows,macOS和iOS客戶端共享連接到CentOS 8 / RHEL 8計算機的打印機。 CUPS(通用Unix打印系統)是Linux,FreeBSD和macOS上的默認打印系統。 您的Linux桌面環境可能具有專用的打印機配置實用程序,但是它們都在後台使用CUPS。 CUPS打印機可以使用多種協議在網絡上共享,包括:

  • 卓悅+ IPP:Bonjour,也稱為mDNS / DNS-SD(多播DNS / DNS服務發現),允許計算機在本地網絡上查找服務。 IPP(Internet打印協議)是傳輸協議。
  • 中小型企業:又名Samba,主要用於與Windows客戶端共享文件和打印機。
  • AirPrint:允許iPhone,iPad和macOS客戶端通過Wi-Fi打印。

每種協議都有其優點和缺點。 首先,我將向您展示如何安裝和配置CUPS。 然後,我們將學習如何通過以上3種協議共享CUPS打印機。 我建議使用所有3種方法共享您的打印機,以便用戶可以輕鬆地在本地網絡上找到可用的打印機。

步驟1:在CentOS 8 / RHEL 8上安裝和配置CUPS

CentOS 8 / RHEL 8桌面版已預安裝CUPS。 如果您使用的是CentOS 8 / RHEL 8服務器版本,則需要運行以下命令從默認的CentOS 8 / RHEL 8存儲庫安裝CUPS。

sudo dnf install cups

然後啟動CUPS。

sudo systemctl start cups

在啟動時啟用自動啟動。

sudo systemctl enable cups

檢查其狀態:

systemctl status cups

樣本輸出:

cups-printing-system-centos8-rhel8

接下來,使用命令行文本編輯器(如Nano)編輯CUPS主配置文件。

sudo nano /etc/cups/cupsd.conf

默認情況下,CUPS Web界面僅在以下位置可用 localhost:631。 如果您正在運行CentOS 8 / RHEL 8服務器版本,則可能希望使CUPS在所有可用的網絡接口上偵聽,以便您能夠從其他計算機訪問CUPS Web界面。 找到以下行。

Listen localhost:631

將其更改為以下內容,因此CUPS將偵聽所有網絡接口。

Port 631

以下行將使CUPS顯示本地網絡上的共享打印機,因此同一網絡中的其他計算機可以看到連接到CentOS 8 / RHEL 8計算機的打印機。

Browsing On

然後找到以下幾行。

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

以上配置僅允許從本地主機訪問CUPS Web界面。 要允許來自同一網絡中其他計算機的訪問,請添加 Allow @LOCAL 如下所示。

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

如果要允許從本地網絡進行遠程管理,請同時將其添加到 /admin 目錄。

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

保存並關閉文件。 然後重新啟動CUPS,以使更改生效。

sudo systemctl restart cups

我們需要允許同一網絡中的客戶端訪問CentOS 8 / RHEL 8計算機上的端口631。

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驅動程序。

sudo dnf install gutenprint-cups

如果您有其他打印機,則可以在openprinting.org上找到驅動程序。

安裝驅動程序後,您可能需要將打印機重新連接到CentOS 8 / RHEL 8計算機的USB端口。 要測試驅動程序是否正常運行,可以在CentOS 8 / RHEL 8上創建一個文本文件:

echo "LinuxBabe is awesome!" > file.txt

然後運行以下命令從命令行打印此文本文件。

lp file.txt

這是一種非常基本的方法,因此現在不必擔心打印質量。

步驟3:通過Bonjour / IPP協議共享CUPS打印機

安裝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-daemon。

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(Internet打印協議)。 IPP的優點是客戶端可以使用共享打印機,而無需在自己的設備上安裝任何驅動程序。 CUPS開箱即用地支持IPP,因此您無需執行任何其他操作即可通過IPP共享CUPS打印機。

步驟4:在客戶端計算機上添加打印機

macOS和Linux客戶端

由於macOS和大多數Linux桌面發行版均已將CUPS安裝為默認打印系統,因此,一旦在CentOS 8 / RHEL 8盒子上通過Bonjour / IPP啟用了打印機共享,則同一網絡中的macOS和Linux用戶可以自動使用打印機。 當他們在應用程序(文字處理器,電子郵件閱讀器,照片編輯器和Web瀏覽器)中單擊打印選項時,打印機將自動可用。 他們不必顯式添加打印機。 這是魔法。

如果您的Linux計算機找不到打印機,則您的系統可能沒有 ippfind 命令。 運行以下命令以將其安裝在基於Debian的Linux發行版上。

sudo apt install cups-ipp-utils

在CentOS 8上,運行以下命令。

sudo dnf install cups-ipptool

然後在客戶端計算機上重新啟動CUPS。

sudo systemctl restart cups

視窗

Windows 10隨附IPP客戶端。 輸入 打印機 在左下方的搜索欄中,然後打開 打印機和掃描儀。 然後點擊 添加打印機或掃描儀 按鈕。 它將掃描本地網絡上的可用打印機。

Windows 10打印機和掃描儀

如您所見,它找到了我的HP Deskjet打印機。 選擇找到的打印機,然後單擊 添加設備。 稍後,它將被添加到打印機列表中。

在CentOS 8 / RHEL 8(Bonjour,IPP,Samba,AirPrint)上設置CUPS打印服務器

如果您使用的Windows版本無法通過這種方式添加打印機,則可以安裝Bonjour Print服務。 安裝完成後,啟動Bonjour打印機嚮導。 它將自動掃描本地網絡上的可用打印機。 從屏幕截圖中可以看到,它找到了我的HP打印機。

在Windows上添加bonjour打印機

單擊“下一步”,然後需要為此打印機選擇驅動程序。 您可以選擇默認情況下安裝在系統上的Microsoft IPP類驅動程序。

Microsoft IPP類驅動程序

單擊下一步,打印機將被添加到Windows系統中。

在Linux上手動添加打印機

如果出於任何原因看不到打印機,則可以手動添加。 要在台式機Linux上添加Bonjour共享的打印機,請在系統設置或應用程序菜單中搜索打印機配置實用程序。 點擊 按鈕添加新打印機。

在Linux上添加杯子打印機

然後單擊“網絡打印機”,它將自動掃描本地網絡上的可用打印機。 如您所見,它找到了我的HP Deskjet打印機。 點擊 前鋒 按鈕。

杯子centos 8 dnssd

然後,您可以給打印機起一個名稱和描述。 我只是接受默認值。 請點擊 應用 到此為止。

centos 8杯打印機mdns dnssd

在macOS上手動添加打印機

要在macOS上添加Bonjour共享的打印機,請轉到 系統偏好 -> 打印機和掃描儀。 單擊加號(+)按鈕添加打印機。

在macOS上添加bonjour打印機

它將自動掃描本地網絡上的可用打印機。 如您所見,它找到了我的HP Deskjet打印機。

macOS bonjour打印機

點擊 按鈕,它將出現在打印機列表中。

macOS打印機和掃描儀

步驟5:通過Samba共享CUPS打印機

Samba是針對Unix和Linux的免費開源SMB / CIFS協議實現,它允許Unix / Linux與局域網中Windows機器之間的文件和打印共享。 它主要用於與Windows客戶端共享文件和打印機。

要在CentOS 8 / RHEL 8上安裝Samba,請運行以下命令。

sudo dnf install samba

然後發出以下命令以啟動 smbdnmbd 服務。

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

重新加載firwall守護程序以使更改生效。

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

我們需要改變的價值 browseableyes,因此同一網絡中的客戶端可以找到打印機並添加 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

保存並關閉文件。 然後重新啟動Samba。

sudo systemctl restart smb nmb

在Windows中添加Samba共享打印機。

打開文件瀏覽器,在地址欄中輸入CentOS 8 / RHEL 8計算機的IP地址,例如 \192.168.0.110。 現在應該列出打印機。

在Windows 10上添加samba共享打印機

雙擊打印機將其添加​​到Windows系統。 然後單擊確定按鈕以選擇要安裝的驅動程序。 安裝驅動程序後,打印機將被添加到Windows系統中。

Windows添加打印機嚮導

步驟6:通過AirPrint與iOS客戶端共享CUPS打印機

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/

現在應該有一個 .service 文件下 /etc/avahi/services/ 打印機的目錄。

ls /etc/avahi/services/

樣本輸出:

AirPrint-DeskJet-2130-series.service

重新啟動Avahi守護程序。

sudo systemctl restart avahi-daemon

現在,同一網絡中的iOS和macOS客戶端應該可以使用您的打印機。 以下屏幕截圖顯示了我的iPhone成功找到了AirPrint打印機。

centos 8杯空氣印

包起來

我希望本教程可以幫助您在CentOS 8 / RHEL 8上設置CUPS打印服務器。與往常一樣,如果您發現這篇文章很有用,請訂閱我們的免費時事通訊以獲取更多提示和技巧。 您可能還需要閱讀以下文章來設置Samba文件共享服務器。

  • 在CentOS 8 / RHEL 8上設置Samba服務器以進行文件共享
Sidebar