Configurer un serveur d'impression lpd
Auteur : Olivier BOYER - oboyer () ajoute ! org
Mots clés
NetBSD, lpd, printing, impression, réseau, network
Introduction
Ce document décrit comment configurer le serveur d'impression lpd livré en standard avec NetBSD 1.6.x et 2.X
La configuration d'un service d'impression se fait en 4 parties :
- la configuration de la communication entre la machine et l'imprimante
- la configurtion du driver de l'imprimante
- la configuration du daemon d'impression pour permettre aux clients locaux d'accéder à l'imprimante
- la configuration du daemon d'impression pour autoriser les clients du reseau à imprimer
Ces étapes doivent être exécutées dans l'ordre. Il est inutile de passer à la suivante si la première ne fonctionne pas.
Présentation de la maquette
- un serveur de spool d'impression sous NetBSD 1.6.x ou 2.x
- une imprimante HP DeskJet 670C branchée sur le port parallèle du serveur
Notes
Toutes les commandes présentées ici, sont à exécuter, sauf mention contraire, en tant qu'administrateur de la machine.
Une partie de la configuration présentée dans ce document est spécifique à l'imprimante HP-670C.
Installation de l'imprimante en local
Activer lpd au démarrage
Ajouter la ligne suivante au fichier /etc/rc.conf
lpd=YES lpd_flags="-s" # -s "secure" unix domain only
Lancer lpd
# lpd -s
D'après la page de manuel de lpd(8) :
-s The -s flag selects ``secure'' mode, in which lpd does not listen
on a TCP socket but only takes commands from a UNIX domain
socket. This is valuable when the machine on which lpd runs is
subject to attack over the network and it is desired that the
machine be protected from attempts to remotely fill spools and
similar attacks.
Installer le package apsfilter
Procédez comme suit :
# cd /usr/pkgsrc/print/apsfilter # make # make install # make clean clean-depends
Installer le driver approprié
Pour déterminer le driver spécifique de votre imprimante, consulter le site : linuxprinting.org http://www.linuxprinting.org/show_printer.cgi
Dans notre exemple, l'imprimante est une HP-670C
Color inkjet printer, max. 600x600 dpi, works Perfectly Recommended driver: hpijs (Home page, view PPD, download PPD) Setup instructions for: CUPS, LPD, LPRng, GNUlpr, PPR, PDQ, no spooler
Le driver correspondant est : hpijs
Ce driver est disponible via les pkgsrc. Pour l'installer, procédez comme suit :
# cd /usr/pkgsrc/print/hpijs # make install # make clean clean-depends
Remarque :
Au jour ou j'ecris cet document, le driver hpijs n'est pas stable. Il plante. Donc, j'utiliserais le driver pour l'imprimante livré en standard par Ghostscript.
Créer un péripherique paralelle sans interruption
D'après le handbook netbsd : Utiliser le périphérique lpa# (pilote “polled”) au lieu de lpt# (pilote standard à interruptions). L'utilisation des interruptions peut causer des problèmes de communication avec certaines imprimantes, dont la HP Deskjet 690C : l'impression est très lente, une page Postscript peut mettre des heures à sortir. Le problème se résoud en utilisant le pilote lpa.
Ce qui est vrai pour l'imprimante HP-690C l'est aussi pour la HP-670C. Imprimer deux lignes en text brut avec le péripherique lpt prend un temps astronomique.
Pour créer le device sans interruption, exécuter les commandes suivantes :
# cd /dev # ./MAKEDEV lpa0 # ls -l /dev/lpa0 crw------- 1 root wheel 37, 128 Mar 27 23:13 /dev/lpa0 #
Configurer le fichier /etc/printcap
apsfilter est livré avec un outil de configuration en mode text du fichier /etc/printcap. Pour l'exécuter, lancer la commande suivante :
# /usr/pkg/share/apsfilter/SETUP
A la fin, la configuration doit être semblable à celle-ci :
==================================================================
A P S F I L T E R S E T U P -- MAIN MENUE --
==================================================================
(D) Available Device Drivers in your gs binary
(R) Read Ghostscript driver documentation (devices.txt)
(1) Printer Driver Selection [cdj550]
(2) Interface Setup [parallel]
(3) Paper Format [a4]
(4) Printing Quality [medium]
(5) Color Mode [full]
(6) Print Resolution in "dots per inch" [600x600]
(7) Default Printing Method [auto]
(T) Print Test Page
(V) View performance log (times of print attempts)
(A) Abort installation (don't do anything)
(I) ==> Install printer with values shown above - repeat this
step for installing multiple printers
(Q) ==> Finish installation
Your choice?
Note pour le choix (2) : Interface Setup
A la question "Your choice?" : répondre : 1 Puis, à la question : "Full path of parallel print device" : répondre : /dev/lpa0
Voici les modifications apportées au fichier /etc/printcap généré :
# APS1_BEGIN:printer1
# - don't delete start label for apsfilter printer1
# - no other printer defines between BEGIN and END LABEL
lp|cdj550;r=600x600;q=medium;c=full;p=a4;m=auto:\
:lp=/dev/lpa0:\
:if=/usr/pkg/etc/apsfilter/basedir/bin/apsfilter:\
:sd=/var/spool/lpd/lp:\
:lf=/var/spool/lpd/lp/log:\
:af=/var/spool/lpd/lp/acct:\
:mx#0:\
:sh:
# APS1_END - don't delete this
Rendre l'imprimante accessible par le réseau
Dans cet exemple de configuration nons allons utiliser le daemon historique d'impression lpd(8). Ce n'est sans doute pas le meilleur, mais il a le mérite d'etre livré en standard sous NetBSD. Les daemons LPRng et cups sont les versions modernes de lpd, et sont installables par les pkgsrc.
Imprimer via le reseau se fait en 3 étapes :
- configurer l'imprimante en local (voir chapitre précédent)
- lancer
lpdpour qu'il 'coute sur une socket réseau et configurer les contrôles d'accès à l'imprimante - configurer les clients pour qu'ils connaissent l'imprimante distante
Dans ce chapitre, nous allons donc “ouvrir” le daemon lpd sur le réseau et configurer les contrôles d'accès.
Rendre le daemon lpd accessible sur le réseau
Modifier le fichier /etc/rc.conf
Dans le chapitre précédent, nous avons activer lpd(8) pour qu'il attende les requêtes d'impressions que sur une socket unix. Ainsi, les demandes d'impression réseau n'étaient pas prises en compte, ce qui augmente la sécurité du serveur.
Pour activer le service d'impression par le réseau, il faut modifier comme suit le fichier /etc/rc.conf :
lpd=YES lpd_flags="" # -s "secure" unix domain only
Pour débuger la connexion, exécutez lpd comme suit :
# lpd -ld
Modifier les permissions de la file d'impression
# chmod 770 /var/spool/lpd/lp # chown daemon:daemon /var/spool/lpd/lp
Cette manipulation n'est pas nécessaire sur NetBSD2.0
Configuration des contrôles d'accès
Modifier le fichier /etc/hosts.allow
Le daemon lpd(8) utilise l'entrée “lpd” dans les fichiers de hosts_access. Il est possible de faire une entrée spécifique pour ce daemon. Notre réseau local n'a pas de contrainte de sécurité particulièrement élevée. Nous autorisons donc tous les hôtes locaux à accéder au service d'imression. Si vous voulez une configuration plus poussée, consultez les pages de manuel hosts_access(5) et hosts_options(5).
Ajouter la ligne suivante au fichier /etc/hosts.allow :
lpd: .leaves.org
Modifier le fichier /etc/hosts.lpd
Ajouter la ligne suivante au fichier /etc/hosts.lpd :
+