URL: https://linuxfr.org/forums/linux-general/posts/question-de-nat-dnatsnat-avec-iptables Title: Question de NAT (DNAT+SNAT) avec iptables Authors: defmonkey Date: 2010年12月13日T16:36:01+01:00 Tags: Score: -1 Salut, j'ai 2 machines qui peuvent causer entre elles par 2 adresses différentes: £spaces£ £/spaces£+-----------+ 192.168.1.1 192.168.1.2 +-----------+ £spaces£ £/spaces£| Machine A +------------[...]-------------+ Machine B | £spaces£ £/spaces£+----+------+ +---+-------+ £spaces£ £/spaces£| 10.0.0.1 10.0.0.2 | £spaces£ £/spaces£| | £spaces£ £/spaces£... ... Ce que je voudrais faire: * La machine A possède un serveur TCP qui écoute sur le port 10000 * Quand une connection arrive sur l'addresse en 192.168 de la machine B et sur ce même port 10000, la connection est NATée vers A en utilisant l'addresse en 10.0 Et je voudrais faire le ça avec iptables. Sur A: # on ouvre le port 10000 sur le firewall local iptables -I INPUT -p tcp --dport 10000 -j ACCEPT # on écoute sur le port 10000 nc -l 10000 Sur B: # on active le routage echo 1 > /proc/sys/net/ipv4/ip_forward # on fait le DNAT et le SNAT iptables -t nat -A PREROUTING -d 192.168.1.2 -p tcp --dport 10000 -j DNAT --to-destination 10.0.0.1 iptables -t nat -A POSTROUTING -d 10.0.0.1 -p tcp --dport 10000 -j SNAT --to-source 10.0.0.2 Maintenant, à partir de la machine A, j'essaye de contacter B sur son port 10000: [machine A]# nc 192.168.1.2 10000 Le flux TCP devrait être routé vers A en utilisant l'addresse en 10.0.0.1. Or ça ne fonctionne pas et la machine A reçoit des ICM TYPE=3 CODE=10 (donc a priori "Hôte de destination administrativement interdit"). Alors où est-ce que je me plante ? Si depuis la machine B, j'essaye de joindre la machine A sur le port 10000, pas de soucis. Donc c'est vraiment dans mon NAT que j'ai un soucis.

AltStyle によって変換されたページ (->オリジナル) /