在Ubuntu上设置CUPS打印服务器(你好,IPP,Samba,AirPrint)

  • 技术文档
  • 2022.03.23
  • 浏览:894

本教程将向您展示如何在同一网络上与Windows、macOS和iOS客户端共享连接到Ubuntu计算机的打印机。CUPS(通用Unix打印系统)是Linux、FreeBSD和macOS上的默认打印系统。Linux桌面环境可能有一个专用的打印机配置实用程序,但它们都使用罩杯。

CUPS打印机可以通过多种协议在网络上共享,包括:

  • Bonjour+IPP:Bonjour,也称为mDNS/DNS-SD(多播DNS/DNS服务发现),允许计算机在本地网络上查找服务。IPP(互联网打印协议)是传输协议。
  • SMB:又名Samba,主要用于与Windows客户端共享文件和打印机。
  • AirPrint:允许iPhone、iPad和macOS客户端通过Wi-Fi进行打印。

每种协议都有其优缺点。首先,我将向您展示如何安装和配置CUPS。然后我们将学习如何通过上述3个协议共享CUPS打印机。我建议使用这三种方法共享打印机,这样用户就可以在本地网络上轻松找到可用的打印机。

Set Up CUPS Print Server on Ubuntu

第一步:在Ubuntu上安装和配置CUPS

Ubuntu桌面版预装了CUPS。如果你使用Ubuntu server edition,你需要运行以下命令从默认的Ubuntu存储库安装CUPS。

sudo-apt-install-cups

然后开始喝咖啡。

sudo systemctl启动杯

启动时启用自动启动。

sudo systemctl启用cups

检查其状态:

systemctl状态杯

样本输出:

cups printing system ubuntu

接下来,使用命令行文本编辑器(如Nano)编辑CUPS主配置文件。

sudo nano/etc/cups/cupsd。形态

首先,我们需要在本地网络上显示共享打印机。找到下面这行。

浏览

换成

浏览

因此,同一网络中的其他计算机可以看到连接到Ubuntu计算机的打印机。

默认情况下,CUPS web界面仅在localhost:631上可用。如果你运行的是Ubuntu server edition,你可能还想让CUPS监听所有可用的网络接口,这样你就可以从其他计算机访问CUPS网络接口。找到下面这行。

听本地主机:631

换成

631端口

所以CUPS将监听所有网络接口。然后找到下面几行。

<;地点/>;命令允许、拒绝</地点>;

上述配置仅允许从本地主机访问CUPS web界面。要允许从同一网络中的其他计算机进行访问,请将allow@LOCAL添加到如下配置中。

<;地点/>;命令允许,拒绝允许@LOCAL</地点>;

还将其添加到/admin目录,以允许从本地网络进行远程管理。

<;地点/管理>;命令允许,拒绝允许@LOCAL</地点>;

您还可以允许特定的IP地址,如下所示:

<;地点/>;订单允许,拒绝允许192.168.0.101</地点>;

保存并关闭文件。然后重新启动CUPS,使更改生效。

sudo systemctl重新启动cups

注意,如果你在Ubuntu上启用了UFW防火墙,你需要允许同一网络中的客户端访问你的Ubuntu盒上的631端口。例如,我的专用网络使用192.168.0.0~192.168.0.255网络范围,因此我运行以下命令。

sudo ufw允许从192.168.0.0/24进入任何端口631

CUPS网络界面可在https://IP-address-of-Ubuntu-box:631.在本文中,我们不需要使用web界面,但是如果您想使用它,那么您需要将您的用户帐户添加到lpadmin组,以便在CUPS web界面中进行更改。

sudo adduser你的用户名lpadmin

第2步:在Ubuntu上安装打印机驱动程序

你需要在Ubuntu上安装驱动程序,这样它才能识别和使用打印机。如果您有HP打印机,可以使用以下命令轻松安装驱动程序。

sudo apt安装hplip

我还建议安装打印机驱动程序gutenprint软件包,该软件包为佳能、爱普生、惠普和兼容打印机提供CUPS驱动程序。

sudo apt安装打印机驱动程序gutenprint

如果您有其他打印机,可以在openprinting上找到驱动程序。组织。

安装驱动程序后,您可能需要将打印机重新连接到Ubuntu计算机的USB端口。要测试驱动程序是否正常工作,可以在Ubuntu上创建一个文本文件:

echo“LinuxBabe太棒了!”>;文件txt

然后运行以下命令从命令行打印此文本文件。

lp文件。txt

这是一个非常基本的方法,所以现在不用担心打印质量。

步骤3:通过Bonjour/IPP协议共享CUPS打印机

安装Avahi守护进程

CUPS可以通过mDNS(多播DNS)和DNS-SD(DNS服务发现)协议(也称为Bonjour)宣布其在网络上的存在。为了做到这一点,你需要安装并运行avahi daemon,这是一个类似于Apple Bonjour服务的服务,它允许计算机自动发现本地网络上的共享设备和服务。

sudo apt安装avahi守护进程

启动avahi守护进程。

sudo systemctl启动avahi守护程序

启动时启用自动启动。

sudo systemctl启用avahi守护程序

Avahi守护进程监听UDP端口5353。在防火墙中打开它。

sudo ufw允许5353/udp

IPP无人驾驶打印

Bonjour用于在本地网络上宣传打印机。为了使客户端和CUPS服务器相互通信,需要IPP(Internet打印协议)。IPP的优点是,客户端可以使用共享打印机,而无需在自己的设备上安装任何驱动程序。CUPS支持开箱即用的IPP,所以通过IPP共享CUPS打印机不需要做任何其他事情。

步骤4:在客户端计算机上添加打印机

macOS和Linux客户端

因为macOS和大多数Linux桌面发行版都安装了CUPS作为默认打印系统,一旦您在Ubuntu box上通过Bonjour/IPP启用了打印机共享,macOS和Linux用户在同一网络中就可以自动使用打印机。当他们在应用程序(文字处理器、电子邮件阅读器、照片编辑器和web浏览器)中单击打印选项时,打印机将自动可用。他们不必明确地添加打印机。这是魔法。

如果Linux计算机找不到打印机,则系统可能没有ippfind命令。运行以下命令将其安装在基于Debian的Linux发行版上。

sudo apt安装cups ipp utils

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

sudo dnf安装工具

然后在客户端计算机上重新启动CUPS。

sudo systemctl重新启动cups

窗户

Windows 10附带IPP客户端。在左下搜索栏中输入打印机,然后打开打印机&;扫描仪。然后单击添加打印机或扫描仪按钮。它将扫描本地网络上可用的打印机。

windows 10 printers & scanners

如您所见,它找到了我的HP Deskjet打印机。选择找到的打印机,然后单击添加设备。它将在几分钟后添加到打印机列表中。

add-printers-scanners-windows10-ipp

如果您使用的Windows版本不同,无法以这种方式添加打印机,则可以安装Bonjour打印服务。安装后,启动Bonjour打印机向导。它将自动扫描本地网络上可用的打印机。从屏幕截图中可以看到,它找到了我的HP打印机。

add-bonjour-shared-printer-on-windows

单击“下一步”,然后需要为此打印机选择驱动程序。您可以选择默认安装在系统上的Microsoft IPP类驱动程序。

bonjour microsoft ipp class driver

单击“下一步”,打印机将被添加到Windows系统中。

在Linux上手动添加打印机

如果由于任何原因没有看到打印机,可以手动添加一台。要在桌面Linux上添加Bonjour共享打印机,请在系统设置或应用程序菜单中搜索打印机配置实用程序。单击“添加”按钮添加新打印机。

add cups printer on linux

然后单击网络打印机,它会自动扫描本地网络上可用的打印机。如您所见,它找到了我的HP Deskjet打印机。单击“前进”按钮。

cups ubuntu dnssd

然后你可以给打印机一个名字和描述。我只是接受默认值。点击Apply,你就完成了。

ubuntu-cups-printer-mdns-dnssd

在macOS上手动添加打印机

要在macOS上添加Bonjour共享打印机,请转到系统首选项->;打印机及;扫描仪。单击加号(+)按钮添加打印机。

add a bonjour printer on macOS

它会自动扫描本地网络上可用的打印机。如您所见,它找到了我的HP Deskjet打印机。

macos bonjour shared printer

单击“添加”按钮,它将出现在打印机列表中。

macOS-printers-scanners-list

第5步:通过Samba共享CUPS打印机

Samba是针对Unix和Linux的免费开源SMB/CIFS协议实现,允许Unix/Linux和Windows机器在局域网中共享文件和打印。它主要用于与Windows客户端共享文件和打印机。

要在Ubuntu上安装Samba,只需在terminal中运行以下命令。

sudo apt安装samba samba公共bin

要检查Samba服务是否正在运行,请发出以下命令。

systemctl状态smbd systemctl状态nmbd

要启动这两项服务,请发出以下命令:

sudo systemctl start smbd sudo systemctl start nmbd

然后编辑主配置文件。

sudo nano/etc/samba/smb。形态

共享打印机时,建议启用spoolssd服务。当有大量打印作业时,这将使Samba更加高效。只需在[global]部分添加以下两行即可启用spoolssd服务。

rpc_服务器:spoolss=外部rpc_守护进程:spoolsd=fork

接下来,转到文件的末尾,您将看到[printers]部分。在Nano文本编辑器中,您可以通过按Ctrl+W,然后按Ctrl+V跳转到文件末尾。找到以下两行。

可浏览=没有客人确定=没有

换成

browseable=是客人ok=是

保存并关闭文件。然后重启Samba。

sudo systemctl重新启动smbd nmbd

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

打开文件浏览器,在地址栏中输入Ubuntu计算机的IP地址,如//192.168.0.110。现在应列出打印机。

add samba-shared printer on Windows 10

双击打印机将其添加到Windows系统。然后单击“确定”按钮选择要安装的驱动程序。安装驱动程序后,打印机将添加到Windows系统中。

windows add printer wizard

第6步:通过AirPrint与iOS客户端共享CUPS打印机

AirPrint允许iPhone、iPad和macOS客户端通过Wi-Fi进行打印,而无需在客户端设备上安装驱动程序软件。CUPS支持AirPrint,但默认情况下avahi守护程序不会在本地网络上宣布AirPrint服务。我们需要创造一个。打印机的/etc/avahi/services/目录中的服务文件,使用带有以下命令的Python脚本。我的打印机型号是DeskJet 2130系列。将其替换为您自己的型号名称。

sudo nano/etc/avahi/services/AirPrint-DeskJet-2130-series。服务

在文件中添加以下行。

<;?xml版本='1.0'编码='UTF-8'>&书信电报;!DOCTYPE服务组系统“avahi service.dtd”>&书信电报;服务集团>&书信电报;name replace wildcards=“yes”>;AirPrint DeskJet-2130-series@%h</名称>&书信电报;服务>&书信电报;类型>_ipp_tcp</类型>&书信电报;亚型>_通用的_sub._ipp_tcp</亚型>&书信电报;港口>;631</港口>&书信电报;txt记录>;txtvers=1</txt记录>&书信电报;txt记录>;qtotal=1</txt记录>&书信电报;txt记录>;透明=T</txt记录>&书信电报;txt记录>;URF=无</txt记录>&书信电报;txt记录>;rp=打印机/DeskJet-2130-series</txt记录>&书信电报;txt记录>;注=HP DeskJet 2130系列</txt记录>&书信电报;txt记录>;产品=(GPL Ghostscript)</txt记录>&书信电报;txt记录>;打印机状态=3</txt记录>&书信电报;txt记录>;打印机类型=0x2900c</txt记录>&书信电报;txt记录>;pdl=application/octet流、application/pdf、application/postscript、application/vnd。cups光栅、image/gif、image/jpeg、image/png、image/tiff、image/urf、text/html、text/plain、application/vnd。adobe reader postscript,应用程序/vnd。cups pdf</txt记录></服务></服务集团>;

保存并关闭文件。重新启动Avahi守护进程。

sudo systemctl重启avahi守护进程

现在,同一网络中的iOS和macOS客户端应该能够使用您的打印机。下面的屏幕截图显示我的iPhone成功找到了AirPrint打印机。

ubuntu-cups-airprint

收尾

我希望本教程能帮助您在Ubuntu 20.04、18.04和21.10上安装CUPS打印服务器。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。您可能还想阅读下面的文章来设置Samba文件共享服务器。

  • 在Ubuntu上设置Samba服务器进行文件共享