NAT IPTABLES sur LAN

Forum sur la sécurité des réseaux, la configuration des firewalls, la mise en place de protections contre les attaques, de DMZ, de systèmes anti-intrusion ...

Modérateur: modos Ixus

NAT IPTABLES sur LAN

Messagepar aureliensm » 18 Mai 2010 11:30

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

Tout les clients sont en local.


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 :






Code: Tout sélectionner
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-dest 192.168.0.1:80
aureliensm
Quartier Maître
Quartier Maître
 
Messages: 15
Inscrit le: 28 Déc 2004 21:52

Messagepar fleib » 18 Mai 2010 17:15

Est ce que la commande que tu cherches ne serait pas, par hasard, la suivante?

# iptables -t nat -A PREROUTING -p tcp -d 192.168.0.1 --dport 80 -j DNAT --to-destination 192.168.0.2

Je ne garantis rien...

Sinon, il te reste a potasser http://linux-ip.net/html/ch-nat.html

Bon courage
Avatar de l’utilisateur
fleib
Lieutenant de vaisseau
Lieutenant de vaisseau
 
Messages: 205
Inscrit le: 28 Mai 2009 14:50
Localisation: St Paul / La Réunion

Messagepar aureliensm » 19 Mai 2010 09:03

ok je vais regarder ça
merci
aureliensm
Quartier Maître
Quartier Maître
 
Messages: 15
Inscrit le: 28 Déc 2004 21:52

Messagepar tomtom » 19 Mai 2010 09:29

Salut,

Ta règle est correcte, mais il faut aussi activer le forwarding de paquets au niveau du noyau :

Code: Tout sélectionner
echo 1 > /proc/sys/net/ipv4/ip_forward


Egalement, il faut prévoir un SNAT sinon la machine .1 va renvoyer directement les paquets au client avec son adresse source .1 et le client ne comprendra pas vu qu'il s'est adressé à .2.

Code: Tout sélectionner
iptables -t nat -A POSTROUTING -p tcp --dst 192.168.0.1 --dport 80 -j SNAT --to-source 192.168.0.2


Et probablement ajouter quelques règles de filtrage.
Voir le site de C. Caleca largement cité sur les forums pour les bases.


t.
One hundred thousand lemmings can't be wrong...
Avatar de l’utilisateur
tomtom
Amiral
Amiral
 
Messages: 6035
Inscrit le: 26 Avr 2002 00:00
Localisation: Paris

Messagepar aureliensm » 19 Mai 2010 12:03

En effet, maintenant ça marche mieux.
Par contre, je ne comprend pas trop l'utilité du SNAT ?
Pourquoi seule la première règle de PREROUTING ne suffit pas ?
aureliensm
Quartier Maître
Quartier Maître
 
Messages: 15
Inscrit le: 28 Déc 2004 21:52

Messagepar tomtom » 19 Mai 2010 15:27

Un très bête sniff wireshark te le montrera très vite :

Soit un client à l'adresse 192.168.0.10 qui veut causer avec le serveur web

- Sans SNAT :
Code: Tout sélectionner
192.168.0.10:xxxxx -> 192.168.0.2:80 SYN            est reçu par le routeur qui DNAT :
192.168.0.10:xxxxx -> 192.168.0.1:80 SYN            est reçu par le serveur web qui répond donc logiquement :
192.168.0.1:80 -> 192.168.0.10:xxxxx SYN ACK     qui est reçu par le client... Qui refuse ce paquet, car il s'est pour sa part adressé à 192.168.0.2


- Avec SNAT :
Code: Tout sélectionner
192.168.0.10:xxxxx -> 192.168.0.2:80 SYN            est reçu par le routeur qui DNAT + SNAT :
192.168.0.2:yyyyy -> 192.168.0.1:80 SYN            est reçu par le serveur web qui répond donc logiquement :
192.168.0.1:80 -> 192.168.0.2:yyyyy SYN ACK     qui est reçu par le routeur.. Qui cherche dans son conntrack pour voir que c'est une connexion snatée, et donc "DéSNATte" :
192.168.0.2:80 -> 192.168.0.10:xxxxx SYN ACK      est reçu par le client qui est content, et donc
192.168.0.10:xxxxx -> 192.168.0.2:80 ACK            ce paquet sera lui aussi envoyé au vrai serveur et la connexion est établie.



On voit bien que ce n'est pas du totu optimal pour le réseau, car tous les paquets sont envoyés en double, mais le vrai serveur est complétement masqué du client.
Une manière plus élégante pour le réseau serait d'heberger un serveur web sur le "routeur" avec une simple 302 REDIRECT HTTP qui renverrai vers le bon serveur, et ainsi la suite de la connexion se ferait vers le serveur directement.
Mieux encore, modifier le DNS pour indiquer que le serveur web est à 192.168.0.1.

Mais je suppose que tu as tes raisons de procéder ainsi.


Attention, pour le FTP ce sera un peu plus sioux et il te faudra trouver les modules adaptés pour les conntrack ftp, car ce protocole utilise deux connexions dont une sur un port variable.


t.
One hundred thousand lemmings can't be wrong...
Avatar de l’utilisateur
tomtom
Amiral
Amiral
 
Messages: 6035
Inscrit le: 26 Avr 2002 00:00
Localisation: Paris

Messagepar aureliensm » 19 Mai 2010 16:35

ok, merci pour ton explication.
C'est vraiment très clair et ça me permets de comprendre les lignes que j'ai tappé.
aureliensm
Quartier Maître
Quartier Maître
 
Messages: 15
Inscrit le: 28 Déc 2004 21:52

Messagepar Franck78 » 19 Mai 2010 21:57

Mais tomtom ne précise pas sur laquelle des trois machines en question il faut ajouter sa ligne :lol:

A ton avis aureliensm ?
Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar aureliensm » 20 Mai 2010 08:49

la ligne, je l'ai ajouté sur la meme machine que l'autre ligne, c'est a dire mon routeur linux en 192.168.0.2

tout marche niquel
aureliensm
Quartier Maître
Quartier Maître
 
Messages: 15
Inscrit le: 28 Déc 2004 21:52

Messagepar Franck78 » 20 Mai 2010 10:31

Et si la ligne était placée sur le serveur web?

Est-ce que cela marcherait mieux ou moins bien ou pas du tout si le serveur web avait le même genre de règle le dirigeant toujours sur la machine intermédiaire pour répondre à un client?
Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar aureliensm » 20 Mai 2010 10:40

je ne sais pas trop
en tout cas, dans ce que je veux faire, je ne dois pas toucher au serveur web
aureliensm
Quartier Maître
Quartier Maître
 
Messages: 15
Inscrit le: 28 Déc 2004 21:52


Retour vers Sécurité et réseaux

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité