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


Répondre à