Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2694 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  réseaux et sécurité

  IPTABLES - translation sur anicenne adresse IP

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

IPTABLES - translation sur anicenne adresse IP

n°796650
Gus_10
Posté le 28-03-2006 à 14:07:36  profilanswer
 

Bonjour à tous...  
 
Alors voici mon problème :  
 
          PC 1                     Passerelle Linux NAT                         Serveur  
            |____________________|_____|_____________________|  
  192.168.160.170                    eth0    eth1                           192.168.160.161 (ancienne IP)  
                                                                                          172.16.160.161  (nouvelle IP)  
 
eth0=192.168.160.160  
eth1=172.16.160.160  
 
(tous les postes sont connectés sur le même Hub)  
 
Bon alors en gros le serveur était en 192.168.160.161 et est désormais passé en 172.16.160.161. Le problème c'est que PC1 a encore en dur l'ancienne adresse du serveur (la 192...) et impossible de la changer (machine outils !)  
Donc je souhaite utilisé IPTABLES pour résoudre mon problème.  
 
PC1 a bien pour passerelle eth0 et voici les règles IPTABLES présentes sur le linux  
 
echo 1 > /proc/sys/net/ipv4/ip_forward  
iptables -t nat -A OUTPUT -d 192.168.160.161 -j DNAT --to 172.16.160.161  
 
Mais çà ne fonctionne pas !! Je souhaite que le traffic allant de PC1 vers le serveur passe par la passerelle en eth0, que l'adresse de destination change, et que le paquet retour fasse le même trajet et n'aille pas directement sur du serveur au PC1 !  
 
Si quelqu'un à une solution, je suis preneur.  
D'avance merci...  
 

mood
Publicité
Posté le 28-03-2006 à 14:07:36  profilanswer
 

n°796675
jlighty
Posté le 28-03-2006 à 14:36:45  profilanswer
 

As tu essayé cette règle ?

iptables -t nat -A PREROUTING -d 192.168.160.161 -j DNAT --to 172.16.160.161  

n°796681
l0ky
Posté le 28-03-2006 à 14:42:25  profilanswer
 

Les chaines INPUT et OUTPUT sont seulement pour les paquets destinés à des processus locaux. Pour les paquets devant etre forwardés il faut utiliser les autres chaines.

n°796684
Gus_10
Posté le 28-03-2006 à 14:45:23  profilanswer
 

oui j'ai déjà essayé !!
çà ne fonctionne pas du tout...

n°796685
jlighty
Posté le 28-03-2006 à 14:46:50  profilanswer
 

que donne iptables -n -t nat -L -v ?


Message édité par jlighty le 28-03-2006 à 14:47:28
n°796687
l0ky
Posté le 28-03-2006 à 14:48:04  profilanswer
 

Juste pour info, tu es sur que le routage est correct ?
Il ne faut pas que 192.168.160.161 et 192.168.160.170 soit dans le meme subnet et il faut que pour atteindre 192.168.160.161, ton client envoit ses paquets a 192.168.160.160.

n°796696
Gus_10
Posté le 28-03-2006 à 14:59:47  profilanswer
 

Oui j'en suis certain !!

n°796701
jlighty
Posté le 28-03-2006 à 15:06:04  profilanswer
 

que donne iptables -n -t nat -L -v ?
installe un sniffer sur le serveur afin de voir s'il reçoit des paquets provenant du PC1

n°796723
Gus_10
Posté le 28-03-2006 à 15:26:39  profilanswer
 

J'ai installé un sniffer sur le serveur, mais malheureusement, rien n'arrive de PC1...
Par contre lorsque je lance un ping depuis la passerelle Linux, je vois les paquets arrivés correctement sur le serveur ! (c'est déjà...)
 
lorsque je tape iptables -n -t nat -L -v, voilà ce qu'il me mets :
 

Code :
  1. Chain PREROUTING (policy ACCEPT 197 packets, 30788 bytes)
  2. pkts bytes target     prot opt in     out     source               destination
  3.     0     0 DNAT       all  --  *      *       0.0.0.0/0            192.168.160.161    to:172.16.160.161
  4. Chain POSTROUTING (policy ACCEPT 565 packets, 38417 bytes)
  5. pkts bytes target     prot opt in     out     source               destination
  6. Chain OUTPUT (policy ACCEPT 560 packets, 38117 bytes)
  7. pkts bytes target     prot opt in     out     source               destination


 
et voici iptables -L -t nat
 

Code :
  1. Chain PREROUTING (policy ACCEPT)
  2. target     prot opt source               destination
  3. DNAT       all  --  anywhere             192.168.160.161    to:172.16.160.161
  4. Chain POSTROUTING (policy ACCEPT)
  5. target     prot opt source               destination
  6. Chain OUTPUT (policy ACCEPT)
  7. target     prot opt source               destination


 
Dans iptables -L, il n'y a rien...
 
Merci de m'aider ainsi...

n°796732
l0ky
Posté le 28-03-2006 à 15:37:04  profilanswer
 

Met le sniffer sur la passerrelle plutot !


Message édité par l0ky le 28-03-2006 à 20:28:51
mood
Publicité
Posté le 28-03-2006 à 15:37:04  profilanswer
 

n°796733
jlighty
Posté le 28-03-2006 à 15:37:55  profilanswer
 

je ne comprend pas, je viens de faire un test sur mon routeur et ça marche
le firewall étant déjà installé
iptables -I  PREROUTING -t nat -d 192.168.1.254 -j DNAT --to 216.239.59.104
 
puis sur le PC (windows 192.168.1.2) j'ai ajouté une route statique
route add 192.168.1.254 MASK 255.255.255.255 192.168.1.1
donc quand je fais http://192.168.1.254 je tombe directement sur le site de google


Message édité par jlighty le 28-03-2006 à 15:59:33
n°796744
Gus_10
Posté le 28-03-2006 à 15:52:52  profilanswer
 

Alors, j'ai lancer Ethereal sur la passerelle Linux....
Je fais ma capture et en même temps je lance un Ping depuis PC1 à destination de l'ancienne adresse du serveur (192.168.160.161)...
Je n'ai aucune requète ICMP arrivant de PC1 sur la passerelle Linux. En revanche j'ai une requète ARP (Who's 192.168.160.161) !!
Personne ne connait cette adresse, or j'ai bien mon DNAT dans mes règles IPTABLE (cf post précédent !)
PC1 possède bien comme passerelle l'adresse 192.168.160.160 (le Linux !!)
 
Je ne comprends plus rien là !!

n°796747
l0ky
Posté le 28-03-2006 à 15:58:13  profilanswer
 

C'est ce que je te disais tout l'heure...
C'est la base du réseau
192.168.160.170 et 192.168.160.161 sont dans le meme subnet
Donc tout le traffic pour ce subnet est directement envoyé sur le lien !:!

n°796749
jlighty
Posté le 28-03-2006 à 15:58:55  profilanswer
 

Tu as bien mis une route statique supplémentaire (la définition de la passerelle par défaut n'est pas suffisante) de ce type :
 
pour atteindre le PC 192.168.160.161 (netmask 255.255.255.255) j'utilise la passerelle 192.168.160.160

n°796751
Gus_10
Posté le 28-03-2006 à 16:05:57  profilanswer
 

Mais sur la machine outils présente dans la réalité, je ne peux en aucun cas rajouter cette information ! Pas de route supplémentaire possible !!

n°796756
jlighty
Posté le 28-03-2006 à 16:14:10  profilanswer
 

il n'y a pas d'OS "évolué" dessus (style OS/2) ?
Je crains que tu devras modifier l'adressage de ton machine outils en 172.16.160.* à moins de brancher uniquement (i.e pas de switch/hub) la machine sur la passerelle .

n°796757
l0ky
Posté le 28-03-2006 à 16:15:13  profilanswer
 

Dans ce cas tu peux tenter de rajouter une adresse IP a l'interface de ta passerelle

n°796762
Gus_10
Posté le 28-03-2006 à 16:25:56  profilanswer
 

quelle adresse rajouter à la passerelle ?? 192.168.160.161 ??

n°796765
jlighty
Posté le 28-03-2006 à 16:31:41  profilanswer
 

Oui, normalement en rajoutant 192.168.160.161, les paquets à destination du serveur devront passer par la passerelle.

n°796770
Gus_10
Posté le 28-03-2006 à 16:40:22  profilanswer
 

Alors là y'a du changement...
Je n'ai pas mis de route supplémentaire...
Je n'ai pas mis d'adresse supplémentaire non plus sur la passerelle...
 
Mais désormais lorsque je lance un ping depuis PC1 vers l'ancienne adresse du serveur, celui-ci reçoit bien le paquet en provenance de la passerelle, j'ai bien le changement d'adresse qu'il faut et tout, mais  le serveur répond directement à PC1 sans passer par la passerelle Linux...
 
Voici le sniffing réalisé sur le serveur :
 
               Source                          Destination
request :  192.168.160.170             192.168.160.161
request :  192.168.160.170             172.168.160.161
 
reply     :  172.168.160.161             192.168.160.170
 
Donc la réponse au ping fonctionne mais n'arrive jamais à PC1 ! Il faut que le retour se fasse aussi par la passerelle non ?


Message édité par Gus_10 le 28-03-2006 à 16:44:55
n°796772
jlighty
Posté le 28-03-2006 à 16:44:40  profilanswer
 

Sur le serveur, la passerelle par défaut est bien 172.16.160.160  ?

n°796778
Gus_10
Posté le 28-03-2006 à 17:12:46  profilanswer
 

Oui, la passerelle par défaut du serveur est effectivement l'adresse de eth1 de la passerelle Linux
 
Mais çà y est je n'ai plus mes traces sur mon sniffer (sur le serveur)!!


Message édité par Gus_10 le 28-03-2006 à 17:13:27
n°796783
jlighty
Posté le 28-03-2006 à 17:18:09  profilanswer
 

Quelles sont les manip que tu as faite ?

n°796788
Gus_10
Posté le 28-03-2006 à 17:23:56  profilanswer
 

J'ai tout redémarrer parce que j'ai l'impression d'avoir rajouter pleins de règles qui au final se contredisait !!
Donc là maintenant je suis dans la position de départ :
 
PC1
IP : 192.168.160.161
GW : 192.168.160.160
 
Linux :
eth0 : 192.168.160.160
eth1 : 172.16.160.160
 
Serveur :
IP¨: 172.16.160.161
GW : 172.16.160.160
 
Sur le linux il y a :
iptables -t nat -A PREROUTING -d 192.168.160.161 -j DNAT --to 172.16.160.161
et
echo 1 > /proc/sys/net/ipv4/ip_forward
 
Et c'est tout !!

n°796791
l0ky
Posté le 28-03-2006 à 17:28:28  profilanswer
 

l'ip de ton pc1 c'est 192.168.160.161 ou 192.168.160.170 :heink: ?
 
Donne nous exactement l'adressage, avec les masques réseaux correspondant s'il te plait !

n°796796
jlighty
Posté le 28-03-2006 à 17:35:20  profilanswer
 

En effet ça ne concorde pas avec  

Citation :

request :  192.168.160.170             192.168.160.161


et fait apparaitre la deuxième adresse IP de l'interface de la passerelle Linux eth0

n°796812
Gus_10
Posté le 28-03-2006 à 18:29:47  profilanswer
 

Autant pour moi je me suis trompé dans mon dernier POST !!
L'adresse de PC1 est bel et bien 192.168.160.170 (désolé !)
 
PC1  
IP : 192.168.160.170 / 255.255.255.0  
GW : 192.168.160.160  
 
Linux :  
eth0 : 192.168.160.160 / 255.255.255.0
eth1 : 172.16.160.160 / 255.255.255.0
 
Serveur :  
IP¨: 172.16.160.161 / 255.255.0.0
GW : 172.16.160.160  
 

Citation :

fait apparaitre la deuxième adresse IP de l'interface de la passerelle Linux eth0


Je n'ai pas de seconde adresse sur l'interface eth0 de mon Linux !! (s'il m'en faut une, comment dois-je faire ?)

n°796852
jlighty
Posté le 28-03-2006 à 20:17:57  profilanswer
 

Sur la gateway linux, il faut que les modules ip et network aliasing soient chargés ou compiler dans le noyau.
Après :
ifconfig eth0:1 192.168.160.160 netmask 255.255.255.0 up
ifconfig eth0:2 192.168.160.161 netmask 255.255.255.0 up

n°796860
Gus_10
Posté le 28-03-2006 à 21:04:03  profilanswer
 

OK je testerais çà demain... Encore merci pour votre aide.
Je vous retiens au courant demain matin

n°796957
Gus_10
Posté le 29-03-2006 à 09:33:28  profilanswer
 

Bonjour,
 
bon alors je reprends tout où je l'ai laissé hier soir...
 
j'ai essayer de créer les interfaces virtuelles mais çà me mets ces messages d'erreur...

Code :
  1. SIOCSIFADDR: Le fichier existe.
  2. SIOCSIFFLAGS: Ne peut attribuer l'adresse demandée
  3. SIOCSIFNETMASK: Ne peut attribuer l'adresse demandée
  4. SIOCSIFFLAGS: Ne peut attribuer l'adresse demandée


 
Alors bon, je suppose que çà n'est pas compiler dans le noyau comme jlighty le disais !! Comment faire ?
Je sens que nous ne sommes pas loin de trouver la solution à ce foutu problème, mais bon, c'est pas encore pour tout de suite...

n°796970
jlighty
Posté le 29-03-2006 à 10:09:37  profilanswer
 

Oui d'après ton message d'erreur, le support ip aliasing n'est pas activé dans le noyau.
Quelle est la version de ton noyau ?

n°796981
Gus_10
Posté le 29-03-2006 à 10:47:08  profilanswer
 

Mes connaissances Linux étant très limité, je ne sais absolument pas comment faire pour voir çà !
Mais si je vais voir dans /proc/version, je trouve ces infos là :
Linux Version 2.4.20-8 (gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5))
Alors si çà te suffit comme info....

n°796982
jlighty
Posté le 29-03-2006 à 10:49:36  profilanswer
 

"uname -a" suffisait  ;)
je retelecharge un 2.4.x car je n'ai que des 2.6.x

n°796989
jlighty
Posté le 29-03-2006 à 11:17:31  profilanswer
 

as tu "ip routing" activé
ainsi tu pourrais faire :

Citation :

ip address add X.X.X.X dev eth0

n°796992
Gus_10
Posté le 29-03-2006 à 11:30:07  profilanswer
 

bon çà fonctionne toujours pas. Je pense que je vais tout mettre par la fenêtre parce que là, çà commence sérieusement à me les briser...

n°796994
jlighty
Posté le 29-03-2006 à 11:32:37  profilanswer
 

il ne reconnait pas la commande "ip" ?
regarde si tu n'as pas un paquetage nommé "iproute"


Message édité par jlighty le 29-03-2006 à 11:33:19
n°796996
l0ky
Posté le 29-03-2006 à 11:34:43  profilanswer
 

Tu n'as pas la possibilité d'upgrader ta paserelle, parce qu'elle me parait un peu ancienne là...
 
Sinon, tu as compris ce qui n'allait pas, car sinon c'est pas la peine de taper des commandes a l'aveugle en espérant que ca marche.
Prend 5 minutes pour comprendre EXACTEMENT ce qui ne marche pas, tout a été expliquer au dessus, c'est juste un probleme de routage.


Message édité par l0ky le 29-03-2006 à 11:36:47
n°797080
Gus_10
Posté le 29-03-2006 à 14:40:33  profilanswer
 

j'essaye de rentrer des routes supplémentaires, mais rien n'y fait...


Message édité par Gus_10 le 29-03-2006 à 15:11:34
n°797363
Gus_10
Posté le 30-03-2006 à 09:41:41  profilanswer
 

Toujours rien ?!

n°797394
Gus_10
Posté le 30-03-2006 à 11:10:48  profilanswer
 

sur ma passerelle Linux, j'ai déjà mes routes vers les réseaux respectifs :
192.168.160.0/24 dev eth0
172.16.0.0/16 dev eth1
 
Donc a priori, il sait où envoyer le paquet quand une demande est faite. Ce que je ne comprends pas c'est :
Quand PC1 envoi un paquet à destination de 192.168.160.161 (Serveur!), il arrive sur la passerelle Linux, et aussitôt il voit deux règles :
Une IPTABLES qui lui dit, change cette destination et transforme la en 172.16.160.161 (iptables -t nat -A PREROUTING -d 192.168.160.161 tj DNAT --to-destination 172.16.160.161)
et
Une règle de routage qui lui dit, tout ce qui est à destination de 192.168.160.x s'en va sur l'interface eth0...  
 
Laquelle de ces règles est prioritaire ?? Parce que si la route est d'abord lu, alors c'est normal que çà ne fonctionne pas !

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  réseaux et sécurité

  IPTABLES - translation sur anicenne adresse IP

 

Sujets relatifs
[Iptables] Config de ftp (résolu)Multiposte (free tv) >> configuration de Arno's iptables
Iptables, restreindre l'acces internet pour certains postesRenouveller adresse ip sous linux
Comment récuperer l'adresse d'un flux RSS, facilement[Debian / IPTables] Création du script ?
Point d'accès Wi-Fi qui a plus d'adresseSamba: %m renvoi l'adresse ip
Options Squid et IPtables intéressantes pour une entrepriseIPTABLES et redirection vers plusieurs ips simultanément
Plus de sujets relatifs à : IPTABLES - translation sur anicenne adresse IP


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)