Cómo compartir una impresora en Ubuntu con CUPS

Actualizado el jueves, 23 abril, 2020

Cómo compartir una impresora en Ubuntu con CUPS.

Hoy vemos cómo compartir una impresora conectada a un sistema Ubuntu con clientes de Windows, macOS ó iOS en la misma red, algo que han solicitado varios usuarios a través de email.

CUPS (Common Unix Printing System) es el sistema de impresión predeterminado en Linux, y otros sistemas UNIX. Tal vez no lo sabes, pero CUPS se instala por defecto en todas las distribuciones linux.

Antes de comenzar con el articulo, debemos saber que una impresora CUPS se puede compartir en red usando varios protocolos, enumeramos los más habituales:

  • Bonjour + IPP : Bonjour, también conocido como mDNS / DNS-SD (servicios DNS / DNS de multidifusión), permite que un sistema encuentre servicios en la red local. IPP (Protocolo de impresión de Internet) es el protocolo de transporte.
  • SMB : también conocido como Samba, es utilizado para compartir archivos e impresoras con clientes de Windows.
  • AirPrint : permite a los clientes de iPhone, iPad y macOS imprimir a través de la Wi-Fi.

Cada protocolo tiene sus ventajas y desventajas. Pero lo primero que debemos conocer es cómo instalar y configurar CUPS. Después compartiremos nuestra impresora CUPS a través de los 3 protocolos que hemos mencionado anteriormente.

 

Cómo compartir una impresora en Ubuntu con CUPS

Comenzamos instalando CUPS (normalmente ya está instalado).

Instalar CUPS

sudo apt install cups

Una vez instalado cups, lo iniciamos y habilitamos con el inicio del sistema.
sudo systemctl start cups

sudo systemctl enable cups

Podemos ver su estado con el siguiente comando…
systemctl status cups

Ahora editamos el archivo de configuracion de CUPS.
sudo nano /etc/cups/cupsd.conf

Busca la línea….
Browsing Off

y la sustituyes por….
Browsing On

Si no quieres tener problemas posteriores también debes buscar…
Listen localhost:631

y lo sustituyes por…
Port 631

Por defecto CUPS escucha todas las peticiones de impresión locales de tu sistema, esto lo tenemos que solucionar. Localiza el siguiente código.
<Location />
  Order allow,deny
</Location>

Para poder imprimir desde toda la red local, independientemente de tu PC; modificas lo anterior por…
<Location />
  Order allow,deny
  Allow @LOCAL
</Location>

Guarda el archivo y cierra el editor. Tenemos que reiniciar CUPS.
sudo systemctl restart cups

Concedemos permisos en el firewall de Ubuntu (si tu ip es diferente la modificas).
sudo ufw allow in from 192.168.0.0/24 to port 631

 

Instalar los drivers de la impresora en Ubuntu

Instalamos los drivers genericos.

sudo apt install hplip

sudo apt install printer-driver-gutenprint

Si tienes algún problema visita la pagina donde la comunidad aporta drivers open.

 

Compartir a través de Bonjour/IPP Protocol

Sigue los pasos indicados.

sudo apt install avahi-daemon

sudo systemctl start avahi-daemon

sudo systemctl enable avahi-daemon

sudo ufw allow 5353/udp

sudo apt install cups-ipp-utils

sudo systemctl restart cups

Listo, ya tienes trabajando el nuevo protocolo.

 

Compartir impresora con Samba

Instalamos samba.

sudo apt install samba samba-common-bin

Verificamos e iniciamos los servicios.
systemctl status smbd

systemctl status nmbd

sudo systemctl start smbd

sudo systemctl start nmbd

Editamos el archivo de configuración de samba.
sudo nano /etc/samba/smb.conf

Habilita la cola de impresión como te indico.
rpc_server:spoolss = external
rpc_daemon:spoolssd = fork

Al final del archivo busca lo siguiente…
browseable = no
guest ok = no

Lo modificas por…
browseable = yes
guest ok = yes

Guarda el archivo y cierra el editor, Reiniciamos Samba.
sudo systemctl restart smbd nmbd

 

Compartir impresora con AirPrint

AirPrint permite a clientes de iPhone, iPad y macOS imprimir a través de Wi-Fi sin instalar el software del controlador en los dispositivos del cliente. El proceso es bastante simple, observa. (sustituye por tu impresora)

# Inserta tu modelo de impresora
sudo nano /etc/avahi/services/AirPrint-DeskJet-5510-series.service

Agrega lo siguiente (con tu modelo de impresora).
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
  <name replace-wildcards="yes">AirPrint DeskJet-5510-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-5510-series</txt-record>
    <txt-record>note=HP DeskJet 5510 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>

Guarda el archivo y cierra el editor. Nos falta reiniciar Avahi.
sudo systemctl restart avahi-daemon

 

Nota final

Independientemente del protocolo seleccionado, tan solo necesitas buscar  a través de tu dispositivo la impresora que tenemos en el servidor Ubuntu. Cualquier duda será aclarada en la zona de comentarios.

 

Canales de Telegram: Canal SoloLinux – Canal SoloWordpress

Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.

 

Agregar comentario