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 thomas benjamin . Évalué à 1.
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 petit_bibi . Évalué à 3.
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 Maxime (site web personnel) . Évalué à 2.
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.