J'ai un serveur qui exécute une application web déployée sur Tomcat et qui se trouve dans un réseau de test. Nous utilisons SuSE 11 sp1 et avons quelques règles de redirection pour les requêtes entrantes. Par exemple, nous ne lions pas le port 80 dans le fichier server.xml de Tomcat, mais nous écoutons sur le port 9600 et avons une ligne de configuration dans SuSEfirewall2 pour rediriger le port 80 vers 9640. Ceci est dû au fait que Tomcat ne fonctionne pas en tant que root et ne peut pas ouvrir le port 80.
Mon application Web doit être en mesure d'effectuer des requêtes sur le port 80, car c'est le port qu'elle utilisera une fois déployée. Quelle règle puis-je ajouter pour que les requêtes locales soient redirigées par iptables ?
J'ai essayé d'examiner cette question : Comment rediriger un port vers un autre sur un ordinateur local en utilisant iptables ? mais les suggestions qui y sont faites ne semblent pas m'aider.
J'ai essayé d'exécuter tcpdump sur eth0 puis de me connecter à mon adresse IP locale (pas 127.0.0.1, mais l'adresse réelle) mais je n'ai vu aucune activité. Je voyais de l'activité si je me connectais depuis une machine externe. J'ai ensuite lancé tcmpdump sur lo, puis j'ai à nouveau essayé de me connecter et cette fois, j'ai vu de l'activité. Cela m'amène à penser que toutes les requêtes adressées localement à ma propre adresse IP ne sont pas traitées par iptables.
Juste pour référence il est ce que ma table NAT ressemble maintenant :
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
REDIRECT tcp -- anywhere anywhere tcp dpt:http redir ports 9640
REDIRECT tcp -- anywhere anywhere tcp dpt:xfer redir ports 9640
REDIRECT tcp -- anywhere anywhere tcp dpt:https redir ports 8443
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination