Re: redirection avec iptables

Top Page

Reply to this message
Author: Olivier Allard-Jacquin
Date:  
To: Liste Guilde
Subject: Re: redirection avec iptables
    Bonsoir Julien,

Vivenot Julien a écrit :
> Bonjour,
>
> Me voila avec un léger problème.
> Je cherche à rediriger les ports 8000 et 2222 de mon serveur vers 80 et
> 22 sur une machine qui est dessus en local.
> Voila ce que j'ai fait :
> iptables -t nat -A PREROUTING -p tcp --dport 8000 -j DNAT
> --to-destination 192.168.0.254:80 <http://192.168.0.254:80>
>
> Chain INPUT (policy ACCEPT)
> target     prot opt source               destination        
> ACCEPT     all  --  anywhere             anywhere            state
> RELATED,ESTABLISHED
> [...]
> ACCEPT     tcp  --  anywhere             anywhere            state NEW
> tcp dpt:8000

>
> Chain FORWARD (policy ACCEPT)
> target     prot opt source               destination        

>
>
> Chain PREROUTING (policy ACCEPT)
> target     prot opt source               destination        
> DNAT       tcp  --  anywhere             anywhere            tcp
> dpt:8000 to:192.168.0.254:80 <http://192.168.0.254:80>


    J'ai écrit une doc/tuto sur la configuration d'iptables :
http://olivieraj.free.fr/fr/linux/information/firewall/ . Ce n'est
certainement pas la seul documentation de ce type qui a été écrite, mais
les lecteurs la trouve en générale assez simple et clair à comprendre.


    La partie sur netfilter/iptables commence ici :
http://olivieraj.free.fr/fr/linux/information/firewall/fw-03.html , et
la partie spécifique au port forwarding (c'est ce que tu veux faire),
est expliquée ici :
http://olivieraj.free.fr/fr/linux/information/firewall/fw-03-08.html#III-8-2


    A la vue de ce que tu as écrit, il est facile voir que tu as oublié la
règle de FORWARD. Quand à la règle de "POSTROUTING", je dirais qu'elle
est optionnel dans ton cas.


> Mais cependant un lynx monserveur:8000 ne donne absolument rien (de
> n'importe où (serveur, propre machine, extérieur))
>
> Une idée ?


    Oui. Sur les 3 tests que tu as fait, 2 NE peuvent PAS marcher :
- "lynx monserveur:8000" depuis la machine qui se trouve dans le LAN. La
connexion NE peut PAS traverser la passerelle, aller sur l'interface
réseau externe, puis revenir sur cette interface réseau, retraverser la
passerelle, et revenir sur le serveur. C'est techniquement impossible,
oublie donc l'idée.


- "lynx localhost:8000" depuis la passerelle elle-même. Pareil que plus
haut, la connexion réseau ne peut pas aller sur l'interface réseau
externe, puis revenir sur cette interface réseau, traverser la
passerelle, et revenir sur le serveur. C'est là aussi techniquement
impossible, oublie donc l'idée.

- "lynx adresse_ip_extrerne_de_la_passerelle:8000", lancé DEPUIS UNE
MACHINE SE TROUVANT SUR INTERNET. Oui, là c'est le seul cas qui marche.
Conclusion : Trouve toi un copain ! ;)

    Si je puis me permettre, je te conseille de lire toute la partie sur
netfilter de ma doc :
http://olivieraj.free.fr/fr/linux/information/firewall/fw-03.html . Cela
te permettra de mieux comprendre pourquoi ce que tu as fait ne marche pas.


> Merci


    De rien.


    Cordialement,


                        Olivier
-- 
~~~~~~~  _____/\_____  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Phoenix /   _ \/ _   \    Olivier Allard-Jacquin
       /   / \  / \   \   Web:  http://olivieraj.free.fr/
      /___/  /  \  \___\  Mail: olivieraj@???
~~~~ /////  ///\\\  \\\\\ ~~~~~~~~~~~~~~~~~~~~~~~ Linux Powered !!