NAT IPTABLES sur LAN

Bonjour,
je vous explique ce que je souhaiterais faire. J’ai essayé avec iptables mais ça ne marche pas.

J’ai une machine avec dessus un serveur web apache sur le port 80 et un serveur ftp proftpd sur le port 21, avec ip de la machine 192.168.0.1

Ce que je souhaiterais faire, c’est sur une autre machine en 192.168.0.2, faire en quelque sorte un routeur avec des règles NAT. Je voudrais donc, que lorsque l’on contacte la machine 192.168.0.2 (donc le routeur) sur le port 80, ca redirige la connexion sur la 192.168.0.1 port 80 pour toucher le serveur web et pareil pour le ftp sur le port 21

est ce que cela est possible ?
merci

La règle iptables que j’ai tappé sur la machine en 192.168.0.2 est la suivante :

iptables -t nat -A PREROUTING -d IP_exterieure -i eth0 -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 80 -j DNAT --to-destination 192.168.0.1:80
Route les requêtes intérieures extérieures (sur eth0) destinée à ton serveur (donc à l’adresse IP donnée par le DNS i.e IP_exterieure) vers ton serveur 192.168.0.1

iptables --t nat A PREROUTING -i eth1 -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 80 -j DNAT --to-destination 192.168.0.1:80 

Route les requêtes extérieures vers ton serveur

iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -o eth0 -p tcp -m tcp --dport 80 -j MASQUERADE 

Les requêtes venant du LAN vers ton serveur doivent être «NATées» pour que le retour soit accepté.

merci pour ta réponse très rapide.
Pour l’instant, mon réseau n’est pas ouvert à l’extérieur, tout reste dans le LAN. Donc j’ai un client en 192.168.0.15 et je ne veux pas quil se connecte directement au serveur web 192.168.0.1. Je veux qu’il passe par le routeur en 192.168.0.2 sur le port 80 et après le routeur envoie vers le serveur web

Enlève la deuxième règle.

En tapant les lignes, j’ai le retour

iptables : No chain/target/match by that name

Oups, rajoute -t nat à chaque fois.

Comme je suis et reste sur le lan, j’ai tappé seulement la première et troisième ligne mais ça marche pas.
Quand je tappe 192.168.0.1 marche bien

Il te faut activer le routage:

echo "1" > /proc/sys/net/ipv4/ip_forward
Que donne iptables-save ?

en fait c’etait bien ça qu’il me manquait

Maintenant ça marche. Merci pour beaucoup !

J’ai fait la meme chose pour le port 21 et quand je tappe ftp://192.168.0.1 je n’ai pas ce problème de listing.
J’utilise proftpd en serveur ftp

C’est normal, il te faut faire de même pour le port 20 (mode actif) et faire un
modprobe ip_nat_ftp ip_conntrack_ftp ou nf_nat_ftp nf_conntrack_ftp

merci encore une fois !
tout est résolu :smiley: