Dieses Tutorial zeigt Ihnen, wie Sie einen an einen Ubuntu-Computer angeschlossenen Drucker mit Windows-, macOS- und iOS-Clients im selben Netzwerk teilen. BECHER (Common Unix Printing System) ist das Standarddrucksystem unter Linux, FreeBSD und macOS. Ihre Linux-Desktop-Umgebung verfügt möglicherweise über ein spezielles Dienstprogramm zur Druckerkonfiguration, aber alle verwenden CUPS im Hintergrund.
CUPS-Drucker können über mehrere Protokolle im Netzwerk gemeinsam genutzt werden, darunter:
- Bonjour + IPP :Bonjour, auch bekannt als mDNS/DNS-SD (Multicast DNS/DNS Service Discovery), ermöglicht es einem Computer, Dienste im lokalen Netzwerk zu finden. IPP (Internet Printing Protocol) ist das Transportprotokoll.
- KMU :auch bekannt als Samba, wird hauptsächlich verwendet, um Dateien und Drucker mit Windows-Clients zu teilen.
- AirPrint :Ermöglicht iPhone-, iPad- und macOS-Clients das Drucken über WLAN.
Jedes Protokoll hat seine Vor- und Nachteile. Zuerst zeige ich Ihnen, wie Sie CUPS installieren und konfigurieren. Dann lernen wir, wie man den CUPS-Drucker über die oben genannten 3 Protokolle teilt. Ich empfehle, alle 3 Methoden zu verwenden, um Ihren Drucker freizugeben, damit Benutzer mit minimalem Aufwand einen verfügbaren Drucker im lokalen Netzwerk finden können.
Schritt 1:CUPS auf Ubuntu installieren und konfigurieren
Ubuntu Desktop Edition hat CUPS vorinstalliert. Wenn Sie Ubuntu Server Edition verwenden, müssen Sie den folgenden Befehl ausführen, um CUPS aus dem standardmäßigen Ubuntu-Repository zu installieren.
sudo apt install cups
Starten Sie dann CUPS.
sudo systemctl start cups
Autostart beim Booten aktivieren.
sudo systemctl enable cups
Überprüfen Sie den Status:
systemctl status cups
Beispielausgabe:
Bearbeiten Sie als Nächstes die CUPS-Hauptkonfigurationsdatei mit einem Befehlszeilen-Texteditor wie Nano.
sudo nano /etc/cups/cupsd.conf
Zuerst müssen wir freigegebene Drucker im lokalen Netzwerk anzeigen. Suchen Sie die folgende Zeile.
Browsing Off
Ändern Sie es in
Browsing On
damit andere Computer im selben Netzwerk Drucker sehen können, die mit Ihrem Ubuntu-Computer verbunden sind.
Standardmäßig ist die CUPS-Weboberfläche nur unter localhost:631
verfügbar . Wenn Sie Ubuntu Server Edition ausführen, möchten Sie vielleicht auch, dass CUPS auf allen verfügbaren Netzwerkschnittstellen lauscht, damit Sie von anderen Computern aus auf die CUPS-Webschnittstelle zugreifen können. Suchen Sie die folgende Zeile.
Listen localhost:631
Ändern Sie es in
Port 631
CUPS wird also auf allen Netzwerkschnittstellen lauschen. Suchen Sie dann die folgenden Zeilen.
<Location /> Order allow,deny </Location>
Die obige Konfiguration ermöglicht den Zugriff auf die CUPS-Weboberfläche nur von localhost. Um den Zugriff von anderen Computern im selben Netzwerk zuzulassen, fügen Sie Allow @LOCAL
hinzu zur Konfiguration wie unten.
<Location /> Order allow,deny Allow @LOCAL </Location>
Fügen Sie es auch für /admin
hinzu Verzeichnis, um die Fernverwaltung über das lokale Netzwerk zu ermöglichen.
<Location /admin> Order allow,deny Allow @LOCAL </Location>
Sie können auch eine bestimmte IP-Adresse wie folgt zulassen:
<Location /> Order allow,deny Allow 192.168.0.101 </Location>
Speichern und schließen Sie die Datei. Starten Sie dann CUPS neu, damit die Änderungen wirksam werden.
sudo systemctl restart cups
Beachten Sie, dass Sie, wenn Sie die UFW-Firewall auf Ubuntu aktiviert haben, Clients im selben Netzwerk erlauben müssen, auf Port 631 auf Ihrer Ubuntu-Box zuzugreifen. Zum Beispiel verwendet mein privates Netzwerk den Netzwerkbereich 192.168.0.0 ~192.168.0.255, also führe ich den folgenden Befehl aus.
sudo ufw allow in from 192.168.0.0/24 to any port 631
Die CUPS-Weboberfläche ist unter https://IP-address-of-Ubuntu-box:631
verfügbar . Wir müssen das Webinterface in diesem Artikel nicht verwenden, aber wenn Sie es verwenden möchten, müssen Sie Ihr Benutzerkonto zum lpadmin
hinzufügen Gruppe, um Änderungen an der CUPS-Weboberfläche vorzunehmen.
sudo adduser your_username lpadmin
Schritt 2:Treiber für Ihren Drucker unter Ubuntu installieren
Sie müssen den Treiber auf Ubuntu installieren, damit es den Drucker erkennen und verwenden kann. Wenn Sie einen HP-Drucker haben, können Sie den Treiber einfach mit dem folgenden Befehl installieren.
sudo apt install hplip
Ich empfehle auch die Installation des printer-driver-gutenprint
Paket, das CUPS-Treiber für Canon, Epson, HP und kompatible Drucker bereitstellt.
sudo apt install printer-driver-gutenprint
Wenn Sie andere Drucker haben, finden Sie Treiber auf openprinting.org.
Nach der Installation des Treibers müssen Sie den Drucker möglicherweise erneut an den USB-Anschluss Ihres Ubuntu-Computers anschließen. Um zu testen, ob der Treiber korrekt funktioniert, können Sie unter Ubuntu eine Textdatei erstellen:
echo "LinuxBabe is awesome!" > file.txt
Führen Sie dann den folgenden Befehl aus, um diese Textdatei über die Befehlszeile zu drucken.
lp file.txt
Dies ist eine sehr rudimentäre Methode, also machen Sie sich jetzt keine Sorgen um die Druckqualität.
Schritt 3:CUPS-Drucker über Bonjour/IPP-Protokoll freigeben
Avahi-Daemon installieren
CUPS kann seine Präsenz im Netzwerk über das mDNS- (Multicast-DNS) und das DNS-SD-Protokoll (DNS Service Discovery), das auch als Bonjour bekannt ist, bekannt geben. Dazu müssen Sie avahi-daemon
installieren und ausführen , ein dem Apple Bonjour-Dienst ähnlicher Dienst, der es Computern ermöglicht, freigegebene Geräte und Dienste im lokalen Netzwerk automatisch zu erkennen.
sudo apt install avahi-daemon
Starten Sie den Avahi-Daemon.
sudo systemctl start avahi-daemon
Autostart beim Booten aktivieren.
sudo systemctl enable avahi-daemon
Avahi-Daemon lauscht auf UDP-Port 5353. Öffnen Sie ihn in der Firewall.
sudo ufw allow 5353/udp
Treiberloses IPP-Drucken
Bonjour wird verwendet, um den Drucker im lokalen Netzwerk anzukündigen. Damit Clients und der CUPS-Server miteinander kommunizieren können, wird IPP (Internet Printing Protocol) benötigt. Der Vorteil von IPP besteht darin, dass Clients den freigegebenen Drucker verwenden können, ohne einen Treiber auf ihren eigenen Geräten zu installieren. CUPS unterstützt IPP standardmäßig, sodass Sie nichts weiter tun müssen, um CUPS-Drucker über IPP freizugeben.
Schritt 4:Drucker auf Client-Computern hinzufügen
macOS- und Linux-Clients
Da macOS und die meisten Linux-Desktop-Distributionen CUPS als Standarddrucksystem installiert haben, können macOS- und Linux-Benutzer im selben Netzwerk automatisch den Drucker verwenden, sobald Sie die Druckerfreigabe über Bonjour/IPP auf der Ubuntu-Box aktiviert haben. Wenn sie in Anwendungen (Textverarbeitungsprogramme, E-Mail-Programme, Bildbearbeitungsprogramme und Webbrowser) auf die Druckoption klicken, steht der Drucker automatisch zur Verfügung. Sie müssen den Drucker nicht explizit hinzufügen. Es ist magisch.
Wenn Ihr Linux-Computer den Drucker nicht finden kann, verfügt Ihr System möglicherweise nicht über den ippfind
Befehl. Führen Sie den folgenden Befehl aus, um es auf einer Debian-basierten Linux-Distribution zu installieren.
sudo apt install cups-ipp-utils
Führen Sie unter CentOS 8 den folgenden Befehl aus.
sudo dnf install cups-ipptool
Starten Sie dann CUPS auf dem Client-Computer neu.
sudo systemctl restart cups
Windows
Windows 10 wird mit einem IPP-Client ausgeliefert. Geben Sie Drucker ein in der Suchleiste unten links und öffnen Sie Drucker &Scanner . Klicken Sie dann auf Drucker oder Scanner hinzufügen Taste. Es scannt verfügbare Drucker im lokalen Netzwerk.
Wie Sie sehen können, hat es meinen HP Deskjet-Drucker gefunden. Wählen Sie den gefundenen Drucker aus und klicken Sie auf Gerät hinzufügen . Es wird in Kürze zur Druckerliste hinzugefügt.
Wenn Sie eine andere Windows-Version verwenden, die auf diese Weise keinen Drucker hinzufügen kann, können Sie die Bonjour-Druckdienste installieren. Starten Sie nach der Installation den Bonjour-Druckerassistenten. Es scannt automatisch verfügbare Drucker im lokalen Netzwerk. Wie Sie auf dem Screenshot sehen können, hat es meinen HP-Drucker gefunden.
Klicken Sie auf Weiter, dann müssen Sie einen Treiber für diesen Drucker auswählen. Sie können den Microsoft IPP-Klassentreiber auswählen, der standardmäßig auf dem System installiert ist.
Klicken Sie auf Weiter und der Drucker wird Ihrem Windows-System hinzugefügt.
Drucker manuell unter Linux hinzufügen
Wenn Sie den Drucker aus irgendeinem Grund nicht sehen, können Sie manuell einen hinzufügen. Um einen von Bonjour freigegebenen Drucker unter Desktop-Linux hinzuzufügen, durchsuchen Sie Ihre Systemeinstellungen oder das Anwendungsmenü nach dem Dienstprogramm zur Druckerkonfiguration. Klicken Sie auf Hinzufügen Schaltfläche, um einen neuen Drucker hinzuzufügen.
Klicken Sie dann auf Netzwerkdrucker und es würde automatisch verfügbare Drucker im lokalen Netzwerk scannen. Wie Sie sehen können, hat es meinen HP Deskjet-Drucker gefunden. Klicken Sie auf Weiter Schaltfläche.
Anschließend können Sie dem Drucker einen Namen und eine Beschreibung geben. Ich übernehme einfach die Standardwerte. Klicken Sie auf Anwenden und Sie sind fertig.
Drucker unter macOS manuell hinzufügen
Um einen von Bonjour freigegebenen Drucker unter macOS hinzuzufügen, gehen Sie zu den Systemeinstellungen -> Drucker &Scanner . Klicken Sie auf die Plus-Schaltfläche (+), um einen Drucker hinzuzufügen.
Es scannt automatisch verfügbare Drucker im lokalen Netzwerk. Wie Sie sehen können, hat es meinen HP Deskjet-Drucker gefunden.
Klicken Sie auf Hinzufügen klicken und es erscheint in der Druckerliste.
Schritt 5:CUPS-Drucker über Samba freigeben
Samba ist eine kostenlose und quelloffene SMB/CIFS-Protokollimplementierung für Unix und Linux, die die Datei- und Druckfreigabe zwischen Unix/Linux- und Windows-Rechnern in einem lokalen Netzwerk ermöglicht. Es wird hauptsächlich verwendet, um Dateien und Drucker mit Windows-Clients zu teilen.
Um Samba auf Ubuntu zu installieren, führen Sie einfach den folgenden Befehl im Terminal aus.
sudo apt install samba samba-common-bin
Um zu überprüfen, ob der Samba-Dienst läuft, führen Sie die folgenden Befehle aus.
systemctl status smbd systemctl status nmbd
Geben Sie die folgenden Befehle ein, um diese beiden Dienste zu starten:
sudo systemctl start smbd sudo systemctl start nmbd
Bearbeiten Sie dann die Hauptkonfigurationsdatei.
sudo nano /etc/samba/smb.conf
Es wird empfohlen, spoolssd
zu aktivieren Dienst beim Freigeben des Druckers. Dadurch wird Samba effizienter, wenn es viele Druckaufträge gibt. Fügen Sie einfach die folgenden beiden Zeilen im [global]
hinzu Abschnitt, um den spoolssd
zu aktivieren Dienst.
rpc_server:spoolss = external rpc_daemon:spoolssd = fork
Als nächstes gehen Sie zum Ende der Datei und Sie sehen den [printers]
Sektion. Im Nano-Texteditor können Sie zum Ende einer Datei springen, indem Sie Ctrl+W
drücken , und drücken Sie dann Ctrl+V
. Suchen Sie die folgenden zwei Zeilen.
browseable = no guest ok = no
Ändern Sie sie in
browseable = yes guest ok = yes
Speichern und schließen Sie die Datei. Starten Sie dann Samba neu.
sudo systemctl restart smbd nmbd
Hinzufügen eines von Samba freigegebenen Druckers in Windows.
Öffnen Sie den Datei-Explorer, geben Sie die IP-Adresse des Ubuntu-Computers in die Adressleiste ein, z. B. \\192.168.0.110
. Der Drucker sollte nun aufgelistet sein.
Doppelklicken Sie auf den Drucker, um ihn Ihrem Windows-System hinzuzufügen. Klicken Sie dann auf die Schaltfläche OK, um einen zu installierenden Treiber auszuwählen. Nach der Installation des Treibers wird der Drucker Ihrem Windows-System hinzugefügt.
Schritt 6:CUPS-Drucker über AirPrint für iOS-Clients freigeben
Mit AirPrint können iPhone-, iPad- und macOS-Clients über Wi-Fi drucken, ohne Treibersoftware auf den Clientgeräten zu installieren. CUPS unterstützt AirPrint, aber avahi-daemon
kündigt den AirPrint-Dienst standardmäßig nicht im lokalen Netzwerk an. Wir müssen einen .service
erstellen Datei in /etc/avahi/services/
Verzeichnis für den Drucker mit einem Python-Skript mit dem folgenden Befehl. Das Modell meines Druckers ist die DeskJet 2130-Serie. Ersetzen Sie es durch Ihren eigenen Modellnamen.
sudo nano /etc/avahi/services/AirPrint-DeskJet-2130-series.service
Fügen Sie der Datei die folgenden Zeilen hinzu.
<?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>
Speichern und schließen Sie die Datei. Starten Sie den Avahi-Daemon neu.
sudo systemctl restart avahi-daemon
Jetzt sollten iOS- und macOS-Clients im selben Netzwerk Ihren Drucker verwenden können. Der folgende Screenshot zeigt, dass mein iPhone erfolgreich einen AirPrint-Drucker gefunden hat.