Bonjour,
après une longue période sans pratique, je reviens à IPtables, en l'occurence pour faire du NAT.
Mes souvenirs ne doivent plus être au top, car impossible à faire fonctionner, même en m'aidant de google....
Je veux donc simplement faire du nat de façon à ce que lorsque qu'un poste accède à l'adresse 10.1.0.1:80, il accès en réalité à 10.1.0.2:80.
j'ai donc voulu mettre la règle suivante :
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 10.8.0.1:80
mais ça marche pô....
pour info, iptables -t filter -L me donne ACCEPT pour INPUT, FORWARD et OUTPUT
et iptables -t nat -L me donne ACCEPT également pour tout
Je sais que je suis fatigué aujourd'hui, mais vu que je tourne en rond depuis un moment, si quelqu'un pouvais m'éclairer, je lui en serais reconnaissant.
# --to-destination
Posté par santos . Évalué à 2.
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.8.0.1:80
# mauvaises adresses
Posté par santos . Évalué à 5.
Par ailleurs, si tu veux rediriger uniquement les requêtes initialement à destination de 10.1.0.1, et non les requêtes HTTP à destination de n'importe quelle machine du réseau ou d'Internet, il faut ajouter cette adresse en condition :
iptables -t nat -A PREROUTING -i eth0 -p tcp -d 10.1.0.1 --dport 80 -j DNAT --to-destination 10.8.0.2:80
# Mention de l'interface inutile
Posté par santos . Évalué à 2.
iptables -t nat -A PREROUTING -p tcp -d 10.1.0.1 --dport 80 -j DNAT --to-destination 10.8.0.2:80
# Dans l'autre sens?
Posté par Grunt . Évalué à 3.
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Autrement dit: Que la machine derrière le NAT puisse envoyer des paquets, c'est bien.
Qu'elle puisse recevoir la réponse, c'est mieux.
Sinon, je suppose que tu as pensé à ceci:
echo 1 > /proc/sys/net/ipv4/ip_forward
?THIS IS JUST A PLACEHOLDER. YOU SHOULD NEVER SEE THIS STRING.
# Quelques éléments en plus.... (marche toujours pas...)
Posté par neuro . Évalué à 1.
Par contre, je n'avais effectivement pas mis la règle " -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT"
Ceci étant dis, je viens de la rajouter, et ça ne fonctionne toujours pas.........
Je viens de faire également le test suivant, sur ma machine locale,
iptables -t nat -A PREROUTING -i lo -p tcp --dport 12345 -j DNAT --to-destination 127.0.0.1:80
et ça ne marche pas non plus !
Je ne vois l'erreur....
[^] # Re: Quelques éléments en plus.... (marche toujours pas...)
Posté par nono14 (site web personnel) . Évalué à 1.
"-j REDIRECT --to port 3128" qque chose comme cas ( syntaxe approximative )
Système - Réseau - Sécurité Open Source - Ouvert à de nouvelles opportunités
# je dis surement une betise mais
Posté par NeoX . Évalué à 2.
iptables -t nat -A POSTROUTING -d 10.0.1.1 --dport 80 -j DNAT --to-destination 10.8.0.2:80
le PREROUTING etant pour le SNAT (modification de la source)
[^] # Re: je dis surement une betise mais
Posté par teoB . Évalué à 1.
http://www.netfilter.org/documentation/HOWTO/fr/NAT-HOWTO-6.(...)
Sinon, le plus simple est tout de même de log-er histoire de voir quel type de paquet passe à la trappe.
Voir aussi avec lsmod si tu as bien iptable_nat ou quelque chose de ce genre (sauf bien sûr si c'est en dur dans le noyau).
--to est le raccourci de --to-destination et fonctionne donc aussi.
Une petite chose également, cette règle est sur quelle machine ? :)
# De tête
Posté par Kerro . Évalué à 3.
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables --table nat --append PREROUTING --destination $LOCAL_IP --protocol tcp --destination-port 80 --jump DNAT --to-destination $DEST_IP
iptables --table nat --append POSTROUTING --destination $DEST_IP --protocol tcp --destination-port 80 --jump SNAT --to-source $LOCAL_IP
Sinon socat, rinetd, stone, etc sont des logiciels libres fait pour cela.
Le "-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT" n'a aucune utilitée dans le cas du NAT.
[^] # Re: De tête
Posté par petit_bibi . Évalué à 2.
Effectivement, il est important de modifier la source des paquets forwardé, sinon la machine qui va les recevoir répondra directement à ton client. Ton client recevra (si le réseau et les routes le permettent) des paquets tel que les premiers ACK mais il les ignorera car ils ne viennent pas d'une connection qu'il a initié (response source IP != request destination IP).
Si tu as deux cartes réseaux sur ton 'routeur':
#!/bin/bash
IN_DEVICE=eth0
LOCAL_IP=192.168.0.250
LOCAL_PORT=22
OUT_DEVICE=eth1
OUT_DEVICE_IP=192.168.2.250
NEW_IP=192.168.2.105
NEW_PORT=22
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -i ${IN_DEVICE} -p tcp -d ${LOCAL_IP} --dport ${LOCAL_PORT} -j DNAT --to-destination ${NEW_IP}:${NEW_PORT}
iptables -t nat -A POSTROUTING -o ${OUT_DEVICE} -p tcp -d ${NEW_IP} --dport ${NEW_PORT} -j SNAT --to-source ${OUT_DEVICE_IP}
Mais ça marche aussi si tu n'as qu'une seule carte et une seule adresse tel que:
OUT_DEVICE=IN_DEVICE
OUT_DEVICE_IP=LOCAL_IP
INPUT et OUTPUT ne sont traversé que pour ce qui va a destination des processus locaux, seul FORWARD est traversé dans ton cas.
ouch, it's openarena mumuse time, @+
# il manque un peu de contexte, mais...
Posté par nodens . Évalué à 3.
D'autre part, si tu veux que ça marche, il faut que ton routeur soit la passerelle utilisée quand l'hôte de destination va répondre (si l'hôte de destination est dans le même réseau que la source, il va tenter de répondre directement, et ça va poser problème). Si ce n'est pas le cas, il faut modifier la route correspondante sur l'hôte destination, ou prévoir aussi du SNAT sur le routeur.
Enfin, je vois que tu veux que le trafic à destination de 10.1.0.1 accède à 10.1.0.2. On est plus dans le cas d'un REDIRECT que dans celui d'une translation, là... Ou alors il faut que tu fasse aussi un SNAT sur le routeur pour que les connexions aient l'air de venir de lui (ce qui n'est pas forcément ce que tu veux).
Si tu veux faire un proxy transparent, utilise REDIRECT.
Cela dit il est d'usage quand on a ce genre de souci de fournir un petit schéma simplifié afin qu'on ait une vue d'ensemble plutôt que d'imaginer ce qui pourrait éventuellement poser problème dans tel ou tel cas ;-)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.