Aller au contenu

[RESOLU] CUPS, JetDirect & nat avec IPTABLES


Messages recommandés

Bonjour,

J'ai 2 serveurs web qui sont avec des adresses IP sur Internet et j'ai mon réseau local qui est connecté à Internet via un serveur Linux également qui partage la connexion. Je n'ai pas d'imprimante bien sur du côté Internet directement, mais j'ai des imprimantes partagéesssur mon réseau local. J'aimerais pouvoir imprimer avec mes 2 serveurs web (pour les rapports d'événements) sur mon imprimante local qui utilise un JetDirect.

Voici un petit graphique pour bien comprendre le setup:

samplejd.gif

Après quelques recherches j'ai trouvé que les serveurs d'impression HP JetDirect fonctionnent sur le port TCP 9100 et CUPS peut imprimer sur ce port.

Voici ce que j'ai essayé:

1- Sur le serveur qui partage mon accès à mon réseau local, j'ai ouvert le port 9100 pour le rediriger en ajoutant cette règle à iptables: /sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 9100 -j DNAT --to-destination 192.168.1.99:9100 (*où eth1 est sur le côté internet de mon serveur).

2- J'ai ajouté une imprimante dans CUPS sur l'un de mes serveurs web en utilisant la communication socket://mon.serveurproxy.com:9100. (*Où mon.serveurproxy.com = à la bonne adresse du côté Internet du serveur qui partage ma connexion à mon réseau local.)

3- Lancé une page de test.... :transpi: ça ne marche pas :mdr:

NOTE: J'ai essayé de brancher l'imprimante directement sur le port parallèle du serveur au tout début pour savoir si CUPS fonctionnait bien avec le pilote sélectionné pour imprimer, et sur lp0 (LPT1) c'est OK.

Mais via le JetDirect... qui passe via le partage de connexion (nat/firewall) ça ne marche pas. J'aimerais bien tester, en plaçant mon imprimante utilisant le JetDirect, directement avec une adresse IP sur Internet (sans passer par le partage de connexion) mais il ne me reste plus d'adresse IP libre que mon FAI me fournit.

Alors je ne sais pas si c'est CUPS en mode socket/JetDirect qui marche pas bien ou ma table de routage qui n'est pas bonne ???

Lien vers le commentaire
Partager sur d’autres sites

2- J'ai ajouté une imprimante dans CUPS sur l'un de mes serveurs web en utilisant la communication socket://mon.serveurproxy.com:9100. (*Où mon.serveurproxy.com = à la bonne adresse du côté Internet du serveur qui partage ma connexion à mon réseau local.)

Il faut utiliser l'utilitaire hp-makeuri fournir par hplip

chez moi

[plouf@lapin ~]$ hp-makeuri 192.168.1.6

HP Linux Imaging and Printing System (ver. 0.9.10)
Device URI Creation Utility ver. 4.1

Copyright (c) 2003-6 Hewlett-Packard Development Company, LP
This software comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to distribute it
under certain conditions. See COPYING file for more details.

CUPS URI: hp:/net/Photosmart_2570_series?ip=192.168.1.6
SANE URI: hpaio:/net/Photosmart_2570_series?ip=192.168.1.6

et ensuite ajouter l'uri à cups avec l'interface web de cups (http://localhost:631)

ça doit donner un truc dans le genre ensuite

[plouf@lapin ~]$ sudo cat /etc/cups/printers.conf
# Printer configuration file for CUPS v1.1.23
# Written by cupsd on Sat Apr 29 14:22:18 2006
<DefaultPrinter HP2575>
Info all in one
Location lab 1
DeviceURI hp:/net/Photosmart_2570_series?ip=192.168.1.6
State Idle
Accepting Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
</Printer>

Lien vers le commentaire
Partager sur d’autres sites

Oui, c'est ok pour le modem DSL/router Cisco, le port 9100 est bloqué sur celui-ci.

Pour le forward de mon ordi qui partage la connexion, j'ai éssayé 2 méthodes:

méthode 1:

/sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 9100 -j DNAT --to-destination 192.168.1.99:9100 

méthode 2:

/sbin/iptables -A PREROUTING -t nat  -i eth1 -p tcp -d 216.x.x.x --dport 9100 -j DNAT --to-destination 192.168.1.99
/sbin/iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 9100 -m state --state NEW,ESTABLISHED,RELATED - j ACCEPT

* Pour la 2e méthode, je me suis fier sur d'autres règles de forward que j'utilise pour le HTTP ou VNC qui fonctionnent bien... mais ça ne semble pas être valide pour l'impression JetDirect.

Lien vers le commentaire
Partager sur d’autres sites

Merci pour vos conseils, mais finalement c'était une petite erreur de frappe.

Résumé:

Pour ce qui est de CUPS sur mon PC côté Internet, je créé l'imprimante depuis l'interface web (avec: w3m http://localhost:631).

1- Add Printer

2- Ajout d'un nom, location et description

3- Sélection du type de périphérique: AppSocket/HP JetDirect

4- Sélection de l'URI du périphérique: socket://hostname:9100 (où hostname est le nom de mon proxy)

5- Sélection de la marque: HP

6- Sélection du modèle: HP Laserjet Series CUPS v1.1 (en)

7- Configurer l'imprimante: 300 DPI, US Letter, Tray 2, ...

8- Print Test Page !

Pour ce qui est de IPTABLES sur mon PC qui sert de passerelle à mon réseau local où l'imprimante se situe, j'édite mon script de règles (que je charge depuis rc.local) en ajoutant ceci:

IPT=/sbin/iptables
WANIP=216.x.x.x  #(adresse IP côté internet = eth1)
HPPRN=192.168.1.90
$IPT -A PREROUTING -t nat  -i eth1 -p tcp -d $WANIP --dport 9100 -j DNAT --to-destination $HPPRN
$IPT -A FORWARD -i eth1 -o eth0 -p tcp --dport 9100 -m state --state NEW,ESTABLISHED,RELATED - j ACCEPT

Ça fonctionne !

*** Reste un petit bug si je veux utiliser le pilote provenant de linuxprinting.org ça ne marche pas (ni en LPT, ni en JetDirect)... mais au moins le pilote natif fonctionne bien.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...