[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: SNAT depuis le firewall



Raphael Manfredi wrote:

> :iptables -t nat  -A postrouting -o $PPP_IFACE -j MASQUERADE
>
> En fait, j'utilise SNAT parce que ma connection ADSL tombe toutes les
> 24 heures, mais est retablie avant le timeout de TCP (2 minutes) avec
> la meme adresse IP en general.  Dans ce cas, les connections en cours
> reprennent comme si de rien n'etait.
>
> Si j'utilisais MASQUERADE, les connections tomberaient avec l'interface ppp0.
>
> En fait, mon probleme est comment forcer le SNAT sur des connections
> initiees par des processus locaux sur le firewall.  Theoriquement, il
> n'y a pas besoin de faire du masquerading puisque cette machine est
> connectee, et qu'il y a une route default sur ppp0.
>
> Mais pour pouvoir filtrer les ports en entree, en me limitant au range
> 61000-65000, il faut que je force les connections locale a faire "comme si"
> elles venaient de 61000-65000, pour que les reponses distantes reviennent
> sur cet intervalle de ports.
>
> D'apres la doc, POSTROUTING est appele avant l'emission sur l'interface.
> Mais ce n'est pas le cas en pratique.
>
> Je suis coince, parce que sur la chaine OUTPUT, je ne peux pas faire
> de SNAT...  D'ou mes questions.
>
> Raphael

J'ai un peu plus réfléchi à la question. En fait, il y a dans le noyau 2.4 une
gestion implicite
des ports sources avec le SNAT, ce qui expliquerait que les machines du réseau
local fonctionnent.

Par contre, par défaut, le noyau essaie de modifier le paquet le moins possible.
Pour la machine locale,
l'adresse source du paquet ip est PPP_LOCAL. Pour le noyau, il n'y a donc pas
nécessité de masquer
cette adresse. Une idée serait de forcer la modification de l'adresse source. Il
faut utiliser l'outil iproute2 et
taper :

ip route change default dev ppp0 src ETH_LOCAL

où ETH_LOCAL est l'adresse ip associé à la carte ethernet. Je pense que le SNAT
devrait être appliqué.
A tester.

Laurent Foucher



Reply to: