Este tutorial le mostrará cómo compartir una impresora conectada a una computadora CentOS 8/RHEL 8 con clientes Windows, macOS e iOS en la misma red. CUPS (Common Unix Printing System) es el sistema de impresión predeterminado en Linux, FreeBSD y macOS. Su entorno de escritorio Linux puede tener una utilidad de configuración de impresora dedicada, pero todos usan CUPS debajo del capó. La impresora CUPS se puede compartir en la red utilizando varios protocolos, incluidos:
- Bonjour + IPP :Bonjour, también conocido como mDNS/DNS-SD (descubrimiento de servicios DNS/DNS de multidifusión), permite que una computadora encuentre servicios en la red local. IPP (Protocolo de impresión de Internet) es el protocolo de transporte.
- PYMES :también conocido como Samba, se utiliza principalmente para compartir archivos e impresoras con clientes de Windows.
- Impresión de aire :permite que los clientes de iPhone, iPad y macOS impriman a través de Wi-Fi.
Cada protocolo tiene sus ventajas y desventajas. Primero, le mostraré cómo instalar y configurar CUPS. Luego, aprenderemos cómo compartir la impresora CUPS a través de los 3 protocolos anteriores. Recomiendo usar los 3 métodos para compartir su impresora, para que los usuarios puedan encontrar una impresora disponible en la red local con un mínimo esfuerzo.
Paso 1:Instalar y configurar CUPS en CentOS 8/RHEL 8
La edición de escritorio CentOS 8/RHEL 8 tiene CUPS preinstalado. Si usa la edición del servidor CentOS 8/RHEL 8, debe ejecutar el siguiente comando para instalar CUPS desde el repositorio predeterminado de CentOS 8/RHEL 8.
sudo dnf install cups
Luego inicie CUPS.
sudo systemctl start cups
Habilite el inicio automático en el momento del arranque.
sudo systemctl enable cups
Compruebe su estado:
systemctl status cups
Salida de muestra:
A continuación, edite el archivo de configuración principal de CUPS con un editor de texto de línea de comandos como Nano.
sudo nano /etc/cups/cupsd.conf
De forma predeterminada, la interfaz web de CUPS solo está disponible en localhost:631
. Si está ejecutando la edición del servidor CentOS 8/RHEL 8, es posible que desee hacer que CUPS escuche en todas las interfaces de red disponibles, de modo que pueda acceder a la interfaz web de CUPS desde otras computadoras. Busque la siguiente línea.
Listen localhost:631
Cámbielo a lo siguiente, para que CUPS escuche en todas las interfaces de red.
Port 631
La siguiente línea hará que CUPS muestre las impresoras compartidas en la red local, de modo que otras computadoras en la misma red puedan ver las impresoras conectadas a su computadora CentOS 8/RHEL 8.
Browsing On
Luego busque las siguientes líneas.
<Location /> Order allow,deny </Location>
La configuración anterior solo permite el acceso a la interfaz web de CUPS desde localhost. Para permitir el acceso desde otras computadoras en la misma red, agregue Allow @LOCAL
a la configuración como a continuación.
<Location /> Order allow,deny Allow @LOCAL </Location>
Si desea permitir la administración remota desde la red local, agréguela también para /admin
directorio.
<Location /admin> Order allow,deny Allow @LOCAL </Location>
Guarde y cierre el archivo. Luego reinicie CUPS para que los cambios surtan efecto.
sudo systemctl restart cups
Necesitamos permitir que los clientes en la misma red accedan al puerto 631 en su computadora CentOS 8/RHEL 8.
sudo firewall-cmd --permanent --add-port=631/tcp
Vuelva a cargar el firewall para que el cambio surta efecto.
sudo systemctl reload firewalld
Además del principal cups.service
, también está cups-browsed.service
, que se utiliza para escanear y agregar impresoras desde la red local. Si desea que su computadora CentOS 8/RHEL 8 pueda usar otras impresoras en la red local, inicie este servicio.
sudo systemctl start cups-browsed
Y habilite el inicio automático en el momento del arranque.
sudo systemctl enable cups-browsed
Paso 2:instale el controlador para su impresora en CentOS 8/RHEL 8
Debe instalar el controlador en CentOS 8/RHEL 8, para que pueda reconocer y usar la impresora. Si tiene una impresora HP, puede instalar fácilmente el controlador con el siguiente comando.
sudo dnf install hplip
También recomiendo instalar las gutenprint-cups
paquete, que proporciona controladores CUPS para impresoras Canon, Epson, HP y compatibles.
sudo dnf install gutenprint-cups
Si tiene otras impresoras, puede encontrar controladores en openprinting.org.
Después de instalar el controlador, es posible que deba volver a conectar la impresora al puerto USB de su computadora CentOS 8/RHEL 8. Para probar si el controlador funciona correctamente, puede crear un archivo de texto en CentOS 8/RHEL 8:
echo "LinuxBabe is awesome!" > file.txt
Luego ejecute el siguiente comando para imprimir este archivo de texto desde la línea de comandos.
lp file.txt
Este es un método muy rudimentario, así que no se preocupe por la calidad de impresión ahora.
Paso 3:Comparta la impresora CUPS a través del protocolo Bonjour/IPP
Instalando Avahi-demonio
CUPS puede anunciar su presencia en la red a través del protocolo mDNS (Multicast DNS) y DNS-SD (DNS Service Discovery), también conocido como Bonjour. Para hacerlo, debe instalar y ejecutar avahi-daemon
, que es un servicio similar al servicio Bonjour de Apple que permite que las computadoras descubran automáticamente dispositivos y servicios compartidos en la red local.
sudo dnf install avahi
También necesitamos instalar el nss-mdns
paquete del repositorio EPEL, que es necesario para que los clientes resuelvan .local
dominio en la red.
sudo dnf install epel-release sudo dnf install nss-mdns
Inicie avahi-daemon.
sudo systemctl start avahi-daemon
Habilite el inicio automático en el momento del arranque.
sudo systemctl enable avahi-daemon
Avahi-daemon escucha en el puerto UDP 5353. Ábralo en el firewall.
sudo firewall-cmd --permanent --add-port=5353/udp
Vuelva a cargar el firewall para que el cambio surta efecto.
sudo systemctl reload firewalld
Impresión IPP sin controlador
Bonjour se utiliza para anunciar la impresora en la red local. Para que los clientes y el servidor CUPS se comuniquen entre sí, se necesita IPP (Protocolo de impresión de Internet). La ventaja de IPP es que los clientes pueden usar la impresora compartida sin instalar ningún controlador en sus propios dispositivos. CUPS es compatible con IPP desde el primer momento, por lo que no necesita hacer nada más para compartir la impresora CUPS a través de IPP.
Paso 4:Agregue la impresora en las computadoras cliente
clientes macOS y Linux
Debido a que macOS y la mayoría de las distribuciones de escritorio de Linux tienen CUPS instalado como sistema de impresión predeterminado, una vez que haya habilitado el uso compartido de impresoras a través de Bonjour/IPP en la caja CentOS 8/RHEL 8, los usuarios de macOS y Linux en la misma red pueden usar la impresora automáticamente. Cuando hacen clic en la opción de impresión en las aplicaciones (procesadores de texto, lectores de correo electrónico, editores de fotos y navegadores web), la impresora estará disponible automáticamente. No tienen que agregar explícitamente la impresora. Es mágico.
Si su computadora Linux no puede encontrar la impresora, es posible que su sistema no tenga ippfind
dominio. Ejecute el siguiente comando para instalarlo en una distribución de Linux basada en Debian.
sudo apt install cups-ipp-utils
En CentOS 8, ejecute el siguiente comando.
sudo dnf install cups-ipptool
Luego reinicie CUPS en la computadora cliente.
sudo systemctl restart cups
Ventanas
Windows 10 se envía con un cliente IPP. Escriba impresora en la barra de búsqueda inferior izquierda y abre Impresoras y escáneres . Luego haga clic en Agregar una impresora o escáner botón. Escaneará las impresoras disponibles en la red local.
Como puede ver, encontró mi impresora HP Deskjet. Seleccione la impresora encontrada y haga clic en Agregar dispositivo . Se añadirá a la lista de impresoras en unos momentos.
Si está utilizando una versión diferente de Windows que no puede agregar una impresora de esta manera, puede instalar los servicios de impresión de Bonjour. Una vez instalado, inicie el asistente de la impresora Bonjour. Escaneará automáticamente las impresoras disponibles en la red local. Como puede ver en la captura de pantalla, encontró mi impresora HP.
Haga clic en Siguiente, luego debe elegir un controlador para esta impresora. Puede elegir el controlador de clase IPP de Microsoft, que está instalado en el sistema de forma predeterminada.
Haga clic en Siguiente y la impresora se agregará a su sistema Windows.
Agregar impresora manualmente en Linux
Si por alguna razón no ve la impresora, puede agregar una manualmente. Para agregar una impresora compartida Bonjour en el escritorio de Linux, busque en la configuración del sistema o en el menú de la aplicación la utilidad de configuración de la impresora. Haz clic en Agregar botón para agregar una nueva impresora.
Luego haga clic en Impresora de red y escaneará automáticamente las impresoras disponibles en la red local. Como puede ver, encontró mi impresora HP Deskjet. Haz clic en Adelante botón.
Luego puede darle a la impresora un nombre y una descripción. Simplemente acepto los valores predeterminados. Haz clic en Aplicar y listo.
Agregar impresora manualmente en macOS
Para agregar una impresora compartida de Bonjour en macOS, vaya a preferencias del sistema -> Impresoras y escáneres . Haga clic en el botón más (+) para agregar una impresora.
Escaneará automáticamente las impresoras disponibles en la red local. Como puede ver, encontró mi impresora HP Deskjet.
Haz clic en Agregar y aparecerá en la lista de impresoras.
Paso 5:Comparta la impresora CUPS a través de Samba
Samba es una implementación de protocolo SMB/CIFS gratuita y de código abierto para Unix y Linux que permite compartir archivos e impresoras entre máquinas Unix/Linux y Windows en una red de área local. Se utiliza principalmente para compartir archivos e impresoras con clientes de Windows.
Para instalar Samba en CentOS 8/RHEL 8, ejecute el siguiente comando.
sudo dnf install samba
Luego emita el siguiente comando para iniciar el smbd
y nmbd
servicio.
sudo systemctl start smb nmb
Habilite el inicio automático en el momento del arranque.
sudo systemctl enable smb nmb
Para verificar si el servicio Samba se está ejecutando, emita los siguientes comandos.
systemctl status smb nmb
Una vez iniciado, el smb
el demonio estará escuchando en los puertos TCP 139 y 445. El nmbd
estará escuchando en los puertos UDP 137 y 138. Ejecute el siguiente comando para abrir estos puertos en el firewall.
sudo firewall-cmd --permanent --add-service=samba
Vuelva a cargar el demonio de firwall para que el cambio surta efecto.
sudo systemctl reload firewalld
Luego edite el archivo de configuración principal.
sudo nano /etc/samba/smb.conf
Encuentra las [printers]
sección. Por defecto, se ve así:
[printers] comment = All Printers path = /var/tmp printable = Yes create mask = 0600 browseable = No
Necesitamos cambiar el valor de browseable
a yes
, para que los clientes en la misma red puedan encontrar la impresora y agregar guest ok = yes
para permitir que cualquiera en la red use la impresora.
[printers] comment = All Printers path = /var/tmp printable = Yes create mask = 0600 browseable = yes guest ok = yes
Se recomienda habilitar el spoolssd
servicio al compartir la impresora. Esto hará que Samba sea más eficiente cuando haya muchos trabajos de impresión. Simplemente agregue las siguientes dos líneas en el [global]
sección para habilitar el spoolssd
servicio.
rpc_server:spoolss = external rpc_daemon:spoolssd = fork
Guarde y cierre el archivo. Luego reinicie Samba.
sudo systemctl restart smb nmb
Agregar una impresora compartida Samba en Windows.
Abra el explorador de archivos, ingrese la dirección IP de la computadora CentOS 8/RHEL 8 en la barra de direcciones como \\192.168.0.110
. La impresora ahora debería aparecer en la lista.
Haga doble clic en la impresora para agregarla a su sistema Windows. Luego haga clic en el botón Aceptar para seleccionar un controlador para instalar. Después de instalar el controlador, la impresora se agregará a su sistema Windows.
Paso 6:Comparta la impresora CUPS con clientes iOS a través de AirPrint
AirPrint permite a los clientes de iPhone, iPad y macOS imprimir a través de Wi-Fi sin instalar el software del controlador en los dispositivos cliente. CUPS admite Airprint, pero avahi-daemon
de forma predeterminada, no anuncia el servicio AirPrint en la red local. Necesitamos crear un .service
archivo en el /etc/avahi/services/
directorio para la impresora con un script de Python. Ejecute el siguiente comando para descargar el script en CentOS 8/RHEL 8.
wget https://raw.github.com/tjfontaine/airprint-generate/master/airprint-generate.py
Añadir permiso de ejecución.
chmod +x airprint-generate.py
Este script de python está hecho para Python2. CentOS 8/RHEL 8 usa Python3 de forma predeterminada. Necesitamos instalar Python2.
sudo dnf install python2
Edite este archivo.
nano airprint-generate.py
Cambiar
#!/usr/bin/env python
a
#!/usr/bin/env python2
Guarde y cierre el archivo. Luego instale las dependencias.
sudo dnf install gcc python2-devel cups-devel redhat-rpm-config
Instale el módulo de tazas.
sudo pip2 install cups pycups
Luego ejecute este script.
sudo ./airprint-generate.py -d /etc/avahi/services/
Ahora debería haber un .service
archivo bajo /etc/avahi/services/
directorio de su impresora.
ls /etc/avahi/services/
Salida de muestra:
AirPrint-DeskJet-2130-series.service
Reinicie Avahi-daemon.
sudo systemctl restart avahi-daemon
Ahora los clientes de iOS y macOS en la misma red deberían poder usar su impresora. La siguiente captura de pantalla muestra que mi iPhone encontró con éxito una impresora AirPrint.