Serveur d'impression

Utilisation d'imprimantes réseau – Bien choisir son serveur d impression

Le 10 mai 2020 - 14 minutes de lecture



Utilisation d'imprimantes réseau

Ce document d'aide décrit comment découvrir, configurer et utiliser des imprimantes réseau TCP / IP avec CUPS.

Configuration automatique à l'aide de Bonjour

La plupart des imprimantes réseau prennent en charge un protocole appelé Bonjour, qui est une combinaison de normes de mise en réseau à configuration zéro ("ZeroConf"), de multidiffusion DNS (mDNS) et de découverte de service DNS (DNS-SD) publiées par Internet Engineering Task Force (IETF) ), le même groupe qui a défini TCP / IP et tous les réseaux que nous utilisons aujourd'hui.

Une imprimante prenant en charge Bonjour peut être trouvée automatiquement à l'aide du dnssd backend. Exécutez le lpinfo (8) pour trouver l'URI de votre imprimante:

lpinfo --include-schémas dnssd -v
réseau dnssd: //Acme%20Laser%20Pro._ipp._tcp.local./? uuid = 545253fb-1cb7-4d8d-98ed-ab6cd607cea7
réseau dnssd: //Bar99._printer.tcp.local./? uuid = f9efff58-9086-4c95-accb-81dee876a475
réseau dnssd: //Example%20EX-42._ipps._tcp.local./? uuid = 4a0c67ad-2824-4ddf-9115-7d4226c5fe65
réseau dnssd: //Foo%20Fighter-1969._pdl-datastream._tcp.local./? uuid = 4e216bea-c3de-4f65-a710-c99e11c80d2b

Vous pouvez ensuite ajouter une imprimante à l'aide de l'URI signalé.

Configuration manuelle à l'aide des adresses IP

Vous pouvez également configurer manuellement une imprimante à l'aide de son adresse IP4 (Internet Protocol v4). Cette adresse est soit configurée manuellement ("IP statique") via le panneau de commande de l'imprimante, soit définie à l'aide d'un protocole réseau automatique tel que le protocole DHCP (Dynamic Host Control Protocol) ou ZeroConf.

Remarque: La configuration d'une imprimante à l'aide d'un ensemble d'adresses IP à l'aide de DHCP ou ZeroConf n'est pas recommandée car l'adresse change à chaque mise sous tension de l'imprimante ou après de longues périodes d'inactivité. Ainsi, chaque fois que l'adresse change, vous devrez modifier la file d'attente d'impression à l'aide du lpadmin commander.

Recherche de l'adresse IP

Vous pouvez normalement trouver l'adresse IP d'une imprimante sur le panneau de commande de l'imprimante ou en imprimant la page de configuration ou d'état. Le protocole SNMP (Simple Network Management Protocol) peut également être utilisé pour obtenir l'adresse IP à distance. Pour vérifier que l'adresse IP a été correctement attribuée et que l'imprimante est correctement connectée à votre réseau LAN ou Wi-Fi, tapez:

adresse IP ping

où "ip-address" est l'adresse indiquée par le panneau de commande de l'imprimante, la page de configuration et / ou la page d'état. Si la connexion fonctionne correctement, vous verrez quelque chose comme:

ping 10.0.1.42
PING 10.0.1.42 (10.0.1.42): 56 octets de données
64 octets à partir de 10.0.1.42: icmp_seq = 0 ttl = 15 temps = 1,123 ms
64 octets à partir de 10.0.1.42: icmp_seq = 1 ttl = 15 temps = 2,034 ms
64 octets à partir de 10.0.1.42: icmp_seq = 2 ttl = 15 temps = 1,765 ms
64 octets à partir de 10.0.1.42: icmp_seq = 3 ttl = 15 temps = 1,234 ms
...

Si la connexion ne fonctionne pas correctement, vous verrez quelque chose comme:

ping 10.0.1.42
PING 10.0.1.42 (10.0.1.42): 56 octets de données
Délai d'expiration de la demande pour icmp_seq 0
Délai d'expiration de la demande pour icmp_seq 1
...

presse CTRL + C quitter le ping commander.

Remarque: Si la commande n'affiche pas les réponses de l'imprimante, vérifiez que l'imprimante ou le serveur d'impression est sous tension et connecté au même réseau LAN ou Wi-Fi que votre ordinateur. Pour les connexions LAN, vérifiez également que votre câblage réseau est bon.

Choix d'un protocole réseau (backend)

CUPS prend en charge la plupart des imprimantes réseau en utilisant l'un des trois protocoles basés sur TCP / IP: AppSocket, Internet Printing Protocol et Line Printer Daemon. Les sections suivantes décrivent les options pour chacun des backends.

Protocole AppSocket (alias JetDirect)

Le protocole AppSocket (parfois aussi appelé protocole JetDirect, en raison de ses origines avec les interfaces réseau HP JetDirect) est le protocole réseau le plus simple et le plus rapide utilisé pour les imprimantes. L'impression AppSocket se produit normalement sur le port 9100 et utilise le prise backend. URI d'appareil pour le prise le backend ressemble à ceci:

socket: // adresse IP
socket: // adresse IP /? contimeout = 30
socket: // adresse IP /? waiteof = false
socket: // adresse IP /? contimeout = 30 & waiteof = false
socket: // adresse IP: numéro de port /? ...

L'option "contimeout" contrôle le nombre de secondes que le backend attendra pour obtenir une connexion à l'imprimante. La valeur par défaut est 1 semaine ou 604800 secondes.

L'option "waiteof" contrôle si le prise le serveur principal attend que l'imprimante termine l'impression du travail. La valeur par défaut est d'attendre (waiteof = true). Ajouter waiteof = false à l'URI pour dire au backend de ne pas attendre.

Remarque: Bien que le protocole AppSocket soit simple et rapide, il n'offre aucune sécurité et est souvent un vecteur d'attaque avec des imprimantes. Pensez à utiliser le protocole d'impression Internet qui prend en charge le chiffrement et d'autres fonctions de sécurité.

Protocole d'impression Internet (IPP)

IPP est le seul protocole que CUPS prend en charge de manière native et est pris en charge par la plupart des imprimantes réseau et des serveurs d'impression. IPP prend en charge le chiffrement et d'autres fonctions de sécurité sur le port 631 et utilise le http (Les fenêtres), ipp, et ipps backends. Les URI des appareils pour ces backends ressemblent à ceci:

http: // adresse-ip-ou-nom-d'hôte: numéro-de-port / imprimantes / nom / .printer
ipp: // adresse IP / ipp / print
ipp: // adresse IP ou nom d'hôte / imprimantes / nom
ipps: // adresse IP / ipp / print
ipps: // adresse IP: 443 / ipp / print
ipps: // adresse IP ou nom d'hôte / imprimantes / nom

Les backends prennent en charge de nombreuses options, qui sont résumées dans le tableau 2. Comme tous les backends, les options sont ajoutées à la fin de l'URI en utilisant le format de codage du formulaire URL, par exemple:

ipp: //10.0.1.42/ipp/print? version = 1.1
ipps: //10.0.1.42: 443 / ipp / print? waitjob = false & waitprinter = false
Tableau 2: Options d'URI IPP
Option La description
contimeout =secondes Spécifie le nombre de secondes à attendre pour que la connexion à l'imprimante se termine (par défaut 1 semaine ou 604800 secondes).
cryptage = toujours Spécifie que la connexion à l'imprimante IPP doit être cryptée à l'aide de SSL.
cryptage = si demandé Spécifie que la connexion à l'imprimante IPP ne doit être chiffrée que si l'imprimante le demande.
cryptage = jamais Spécifie que la connexion à l'imprimante IPP ne doit pas être cryptée.
cryptage = obligatoire Spécifie que la connexion à l'imprimante IPP doit être chiffrée à l'aide de TLS.
version = 1.0 Spécifie que la version 1.0 du protocole IPP doit être utilisée à la place de la version par défaut 2.0.
version = 1.1 Spécifie que la version 1.1 du protocole IPP doit être utilisée à la place de la version par défaut 2.0.
version = 2.1 Spécifie que la version 2.1 du protocole IPP doit être utilisée à la place de la version par défaut 2.0.
waitjob = false Spécifie que le backend IPP ne doit pas attendre la fin du travail.
waitprinter = false Spécifie que le backend IPP ne doit pas attendre que l'imprimante devienne inactive avant d'envoyer le travail d'impression.

Protocole LPD (Line Printer Daemon) (alias lpr)

LPD est le protocole d'impression réseau d'origine créé pour le démon d'imprimante ligne Berkeley UNIX (spouleur) et est pris en charge par de nombreuses imprimantes réseau. L'impression LPD se produit normalement sur le port 515 et utilise le lpd backend. URI d'appareil pour le lpd le backend ressemble à ceci:

lpd: // adresse IP / file d'attente
lpd: // adresse IP / file d'attente? format = l
lpd: // adresse IP / file d'attente? format = l & reserve = rfc1179

Le tableau 3 résume les options prises en charge par le lpd backend.

Remarque: En raison des limitations du protocole LPD, nous vous déconseillons de l'utiliser si l'imprimante ou le serveur prend en charge l'un des autres protocoles. Comme AppSocket, LPD n'offre aucune sécurité et est un vecteur d'attaque courant. LPD exige également par défaut que l'ordinateur enregistre une copie de la totalité du travail d'impression avant de l'envoyer à l'imprimante – cela peut entraîner l'enregistrement de gigaoctets de données d'impression sur le disque avant toute impression, retardant les travaux d'impression et raccourcissant la durée de vie des votre périphérique de stockage de masse!

Tableau 3: Options URI LPD
Option La description
banner = on Spécifie qu'une page de garde doit être imprimée par l'imprimante.
contimeout =secondes Spécifie le nombre de secondes à attendre pour que la connexion à l'imprimante se termine (par défaut 1 semaine ou 604800 secondes).
format = f Spécifie que les données d'impression sont un fichier texte brut.
format = o Spécifie que les données d'impression sont un fichier PostScript.
format = p Spécifie que les données d'impression sont un fichier texte brut qui doit être "joli" imprimé avec un en-tête et un pied de page.
mode = stream Spécifie que le backend doit diffuser les données d'impression sur l'imprimante et ne pas attendre la confirmation que le travail a été correctement imprimé.
ordre = données, contrôle Spécifie que les fichiers de données d'impression doivent être envoyés avant le fichier de contrôle.
réserve = aucune Spécifie que le backend ne doit pas réserver de port source.
reserve = rfc1179 Spécifie que le backend doit réserver un port source de 721 à 731 comme requis par RFC 1179.
sanitize_title = no Spécifie que la chaîne de titre du travail ne doit pas être limitée aux caractères alphanumériques et espace ASCII.
sanitize_title = oui Spécifie que la chaîne de titre du travail doit être limitée aux caractères alphanumériques et espace ASCII.
timeout =secondes Spécifie le nombre de secondes à attendre pour que les commandes LPD se terminent (par défaut 5 minutes ou 300 secondes).

Recherche d'imprimantes à l'aide de SNMP

Chaque fois que vous affichez la page Web d'administration ou une liste d'URI d'appareil pris en charge, snmp le backend peut sonder le ou les réseaux locaux à l'aide de diffusions SNMP (Simple Network Management Protocol) v1. Les imprimantes qui répondent à ces émissions sont ensuite interrogées pour la marque, le modèle et les protocoles pris en charge, produisant un URI de périphérique qui peut être utilisé pour ajouter l'imprimante.

le /etc/cups/snmp.conf fichier configure le snmp backend. Ajoutez la ligne suivante pour activer la découverte à l'aide de la snmp backend:

Adresse @LOCAL

Si vous n'utilisez pas "public" comme nom de communauté, modifiez le Communauté ligne aussi:

Communauté le nom de votre communauté

Remarque: le snmp backend ne pourra pas trouver d'imprimantes sur votre réseau si SNMP v1 ou la diffusion sont désactivées sur votre réseau. En outre, les diffusions sont généralement limitées au sous-réseau local, de sorte que les imprimantes sur différents réseaux ne peuvent pas être détectées à l'aide de SNMP.

Résolution des problèmes SNMP

le snmp le backend expose parfois des problèmes dans les implémentations des fournisseurs. Si vous rencontrez de longs retards dans le chargement de la page d'administration de l'interface Web CUPS, ou si vous ne voyez pas votre imprimante répertoriée, les instructions suivantes vous aideront à diagnostiquer ces problèmes et / ou fournir des commentaires importants aux développeurs CUPS afin que nous puissions corriger les problèmes et améliorer la snmp backend dans les futures versions.

Le backend SNMP prend en charge un mode de débogage qui est activé en l'exécutant à partir d'une invite du shell. Exécutez la commande suivante pour obtenir un journal détaillé de la snmp backend:

CUPS_DEBUG_LEVEL = 2 / usr / lib / cups / backend / snmp @LOCAL 2> & 1 | tee snmp.log

Sur macOS, vous trouverez le backend dans / usr / libexec / cups / backend à la place:

CUPS_DEBUG_LEVEL = 2 / usr / libexec / cups / backend / snmp @LOCAL 2> & 1 | tee snmp.log

La sortie ressemblera à ceci:

    1 INFO: Utilisation de l'adresse SNMP par défaut @LOCAL
 2 INFO: Utilisation de la communauté SNMP par défaut publique
 3 DEBUG: Recherche d'appareils dans "public" via "@LOCAL" ...
 4 DEBUG: 0,000 Envoi de 46 octets au 10.0.1.255 ...
 5 DEBUG: SEQUENCE 44 octets
 DEBUG: INTEGER 1 octets 0
 7 DEBUG: OCTET STRING 6 octets "public"
 8 DEBUG: Get-Request-PDU 31 octets
 9 DEBUG: INTEGER 4 octets 1149539174
10 DEBUG: INTEGER 1 octets 0
DEBUG: INTEGER 1 octets 0
12 DÉBOGAGE: SÉQUENCE 17 octets
13 DÉBOGAGE: SÉQUENCE 15 octets
14 DEBUG: OID 11 octets .1.3.6.1.2.1.25.3.2.1.2.1
15 DEBUG: NULL VALUE 0 octets
16 DEBUG: 0,001 Reçu 55 octets de 10.0.1.42 ...
17 DEBUG: community = "public"
18 DEBUG: request-id = 1149539174
19 DEBUG: error-status = 0
20 DEBUG: SEQUENCE 53 octets
DEBUG: INTEGER 1 octets 0
22 DEBUG: OCTET STRING 6 octets "public"
23 DEBUG: Get-Response-PDU 40 octets
24 DEBUG: INTEGER 4 octets 1149539174
25 DEBUG: INTEGER 1 octets 0
DEBUG: INTEGER 1 octets 0
27 DEBUG: SEQUENCE 26 octets
28 DEBUG: SEQUENCE 24 octets
29 DEBUG: OID 11 octets .1.3.6.1.2.1.25.3.2.1.2.1
30 DEBUG: OID 9 octets .1.3.6.1.2.1.25.3.1.5
31 DEBUG: add_cache (addr = 0xbfffe170, addrname = "10.0.1.42", uri = "(null)", id = "(null)", make_and_model = "(null)")
32 DEBUG: 0,002 Envoi de 46 octets à 10.0.1.42 ...
33 DEBUG: SEQUENCE 44 octets
DEBUG: INTEGER 1 octets 0
35 DEBUG: OCTET STRING 6 octets "public"
36 DEBUG: Get-Request-PDU 31 octets
37 DEBUG: INTEGER 4 octets 1149539175
38 DEBUG: INTEGER 1 octets 0
39 DEBUG: INTEGER 1 octets 0
40 DEBUG: SEQUENCE 17 octets
41 DEBUG: SEQUENCE 15 octets
DEBUG: OID 11 octets .1.3.6.1.2.1.25.3.2.1.3.1
43 DEBUG: NULL VALUE 0 octets
DEBUG: 0,003 Reçu 69 octets de 10.0.1.42 ...
45 DEBUG: community = "public"
46 DEBUG: request-id = 1149539175
47 DEBUG: error-status = 0
48 DEBUG: SEQUENCE 67 octets
DEBUG: INTEGER 1 octets 0
50 DEBUG: OCTET STRING 6 octets "public"
DEBUG: Get-Response-PDU 54 octets
DEBUG: INTEGER 4 octets 1149539175
DEBUG: INTEGER 1 octets 0
DEBUG: INTEGER 1 octets 0
55 DEBUG: SEQUENCE 40 octets
56 DÉBOGAGE: SÉQUENCE 38 octets
DEBUG: OID 11 octets .1.3.6.1.2.1.25.3.2.1.3.1
58 DEBUG: OCTET STRING 23 octets "HP LaserJet 4000 Series"
59 DEBUG: 1.001 Sondage 10.0.1.42 ...
60 DEBUG: 1.001 Essai de socket: //10.0.1.42: 9100 ...
DEBUG: 10.0.1.42 prend en charge AppSocket!
62 DEBUG: 1.002 Scan terminé!
63 prise réseau: //10.0.1.42 "HP LaserJet 4000 Series" "HP LaserJet 4000 Series 10.0.1.42" ""

Les deux premières lignes sont uniquement informatives et vous indiquent que le nom et l'adresse de la communauté par défaut sont utilisés. Les lignes 3 à 15 contiennent la requête SNMP initiale pour le type de périphérique OID (.1.3.6.1.2.1.25.3.2.1.2.1) de la MIB hôte.

Les lignes 16 à 31 montrent la réponse que nous avons obtenue d'une imprimante réseau HP LaserJet 4000. À ce stade, nous découvrons qu'il s'agit d'un périphérique d'impression, puis nous envoyons une autre requête SNMP (lignes 32 à 43) pour l'OID de description de périphérique (.1.3.6.1.2.1.25.3.2.1.3.1) à partir de la MIB hôte également.

Les lignes 44 à 58 indiquent la réponse à la requête de description de périphérique, qui nous indique qu'il s'agit d'une imprimante HP LaserJet 4000 Series.

Sur la ligne 59, nous démarrons notre sonde de connexion active et découvrons que ce serveur d'impression prend en charge le protocole AppSocket (JetDirect) sur le port 9100.

Enfin, la ligne 63 affiche la ligne d'informations sur le périphérique pour le serveur d'impression qui est envoyée à CUPS.

Si vous ne voyez pas votre imprimante répertoriée ou si les informations incorrectes sont répertoriées, vous devez collecter plus d'informations sur l'imprimante. La façon la plus simple de procéder consiste à exécuter la commande snmpwalk:

snmpwalk -Cc -v 1 -c adresse IP publique | tee snmpwalk.log

où "ip-address" est l'adresse IP de l'imprimante ou du serveur d'impression. Vous devriez voir un lot des valeurs sont diffusées par – celles que vous voulez voir sont:

HOST-RESOURCES-MIB :: hrDeviceType.1 = OID: HOST-RESOURCES-TYPES :: hrDevicePrinter
HOST-RESOURCES-MIB :: hrDeviceDescr.1 = STRING: HP LaserJet 4000 Series

La ligne hrDeviceType doit afficher hrDevicePrinter; sinon, votre imprimante ou votre serveur d'impression ne s'identifie pas en tant qu'imprimante. La ligne hrDeviceDescr devrait fournir une chaîne lisible par l'homme pour la marque et le modèle de l'imprimante, bien que dans certains cas, vous verrez juste quelque chose de moins utile comme "Axis OfficeBASIC Parallel Print Server".

Une fois que vous avez collecté la sortie snmpwalk, vous devez vous rendre sur la page CUPS Issue Tracker pour soumettre une demande de fonctionnalité pour prendre en charge votre imprimante ou votre serveur d'impression. Assurez-vous de joindre ces deux fichiers journaux que vous avez créés – ils nous aideront à identifier les valeurs SNMP que nous devons rechercher.

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.