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 lpd pour 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 :

+

Liens

 
doc/netbsd/lpd.txt · Dernière modification: 2009/12/23 22:36 (édition externe)     Haut de page