• # Pas suffisant

    Posté par . En réponse au message Routage port iptables. É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.