Forum général.général Routage port iptables

Posté par  (site web personnel) .
Étiquettes : aucune
0
9
nov.
2006
Bonjour,

Je cherche à rediriger un port arrivant sur une interface vers un autre réseau.

iptables -t nat -A PREROUTING -j DNAT -i tun0 -p tcp --dport 6667 --to-destination 10.200.1.1

Le but ici étant qu'une personne du même réseau que moi qui essaye de se connecter sur le port 6667 soit redirigé en quelque sorte de maniere transparente vers la bonne machine.

Je ne sais pas si ce que j'ai fais marche... Est-ce qu'il faut aussi faire un masquerade ou quelque chose comme ca ?

(Pour ceux qui se disent : pkoi il teste pas avant de demander ? en fait c'est juste parce que j'aurai pas beaucoup de temps lors du test et que j'ai pas envie de chercher le probleme à ce moment là.)

Merci d'avance ! :)
  • # RE:Routage port iptables

    Posté par  . Évalué à 1.

    Bonjour,
    cela devrait fonctionner mais
    il ne faut pas oublier d'activer le routage au niveau du kernel:

    echo 1 > /proc/sys/net/ipv4/ip_forward

    et biensur le lancement des modules necessaires.

    Pour cela il y a un excellent tuto sur http://lea-linux.org/cached/index/Reseau-secu-iptables.html#

    Ben
  • # Pas suffisant

    Posté par  . Évalué à 3.

    Non,
    Je pense que ça ne fonctionnera que si la route utilisée par la machine de l'autre réseau est configurée pour passer par la machine sur laquelle tu fais le DNAT. ( C'est compliqué sans schémas, mais par exemple, ça marchera
    si ta machine est la gateway des deux réseaux).

    J'essai d'expliquer le problème:
    1)Le client 192.168.0.200 se connecte sur ta machine 192.168.0.100 port 6667.

    2)La destination est modifiée par ta machine vers 10.200.1.1.

    3)La machine 10.200.1.1 reçoit les paquets mais avec une source ip 192.168.0.200.

    4)Donc, la machine 10.200.1.1 va tenter de répondre à 192.168.0.200 directement sans passer par 192.168.0.100.

    5) Le client 192.168.0.200 va recevoir une réponse de la part de
    10.200.1.1 et pas de 192.168.0.100 alors que c'est ce qu' il attends.
    (Le client attends toujours une réponse de l'ip visée)

    6) La réponse va donc être ignorée et ça ne marchera pas, le resultat
    sera quasi pareil qu' un DROP.

    En gros le point 3 est problématique, il te faut donc modifier la source
    également avant de transmettre la requête:

    iptables -t nat -A PREROUTING -j DNAT -i tun0 -p tcp --dport 6667 --to-destination 10.200.1.1
    iptables -t nat -A POSTROUTING -j MASQUERADE -o tun0 -p tcp --dport 6667 -d 10.200.1.1

    Evidement, il faut aussi que les routeurs/passerelles qui relient les deux réseaux permettent à ta machine 192.168.0.100 d' atteindre 10.200.1.1 pour tout ce qui NEW,ESTABLISHED dans un sens et au moins ESTABLISHED dans l'autre sens (dans le cas de tcp), en gros:

    telnet 10.200.1.1 6667
    depuis ta machine 192.168.0.100 doit connecter.


    Par contre, si ta machine est la passerelle par défaut de 10.200.1.1 le MASQUERADE n'est pas nécessaire. Et c'est même mieux car on ne masque plus la vrai source à 10.200.1.1.
    • [^] # Re: Pas suffisant

      Posté par  (site web personnel) . Évalué à 2.

      Merci pour ta réponse.

      Je n'ai pas pu tester encore, j'esserai de penser à venir dire si ca marche.

      Pour le 3 effectivement c'est pour cela que j'ai parlé de masquerade.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.