Un règle avancée .... [IPTables] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 12-06-2002 à 14:08:32
246tNt a écrit a écrit : Voila, j'ai mon routeur en 10.0.0.1 Je veut que toute machine du sous reseau 10.0.0.0/24 sauf la 10.0.0.2 quand elle essaye de contacter l'ip w.x.y.z en tcp sur le port p soit redirigée ( DNAT ) vers la machine 10.0.0.2 du reseau local. J'ai essayé : iptables -D PREROUTING -s \! 10.0.0.2/32 -d w.x.y.z -t nat -p tcp --dport p -j DNAT --to-destination 10.0.0.2 mais ca marche pas ... Quelqu'un a une idée ? |
ben c'est plutot un -A qu'un -D non ?
Marsh Posté le 12-06-2002 à 14:39:54
... oui bon ... j'ai pris la mauvaise ligne lors du copier coller .. j'avais mis un -A puis j'ai fait un -D comme ca marchait pas
Marsh Posté le 12-06-2002 à 15:55:48
ben redit exactement ce que tu veux (en bon français , si possible) et dis à quoi correspond l'ip w.x.y.z
Marsh Posté le 12-06-2002 à 16:10:47
J'ai un reseau local. Sur celui ci il y a deux serveur, deux machines linux. Une de celle ci c'est le routeur ( 10.0.0.1 ) et la deuxieme, c'est un serveur web proxy ( 10.0.0.2 ).
Il y a une ip a l'exterieure w.x.y.z qui est aussi un serveur web et dont je veut "cacher" ( pas masquer, fait faire du cache, genre squid ). J'ai pour ca un programme qui tourne sur mon 10.0.0.2 et qui se charge de faire le cache. Mais pour que ca soit transparent a toutes mes machines dans mon LAN, il faut que toute les requete vers le site que je veut cacher soit redirigée vers le 10.0.0.2 ( sauf celle provenant de 10.0.0.2 sinon lui non plus ne pourait pas voir le contenu actuel ).
Alors j'ai essayé de mettre :
iptables -A PREROUTING -s \! 10.0.0.2/32 -d w.x.y.z -t nat -p tcp --dport p -j DNAT --to-destination 10.0.0.2
Mais ca ne marche pas. Si par contre je redirige vers le 10.0.0.1 ( la machine ou je met la rules ), la ca marche, quand je me connecte a partir d'une machine du LAN vers le port 80 de w.x.y.z je tombe bien sur le serveur Web de ma passerelle
Marsh Posté le 12-06-2002 à 16:44:41
246tNt a écrit a écrit : J'ai un reseau local. Sur celui ci il y a deux serveur, deux machines linux. Une de celle ci c'est le routeur ( 10.0.0.1 ) et la deuxieme, c'est un serveur web proxy ( 10.0.0.2 ). Il y a une ip a l'exterieure w.x.y.z qui est aussi un serveur web et dont je veut "cacher" ( pas masquer, fait faire du cache, genre squid ). J'ai pour ca un programme qui tourne sur mon 10.0.0.2 et qui se charge de faire le cache. Mais pour que ca soit transparent a toutes mes machines dans mon LAN, il faut que toute les requete vers le site que je veut cacher soit redirigée vers le 10.0.0.2 ( sauf celle provenant de 10.0.0.2 sinon lui non plus ne pourait pas voir le contenu actuel ). Alors j'ai essayé de mettre : iptables -A PREROUTING -s \! 10.0.0.2/32 -d w.x.y.z -t nat -p tcp --dport p -j DNAT --to-destination 10.0.0.2 Mais ca ne marche pas. Si par contre je redirige vers le 10.0.0.1 ( la machine ou je met la rules ), la ca marche, quand je me connecte a partir d'une machine du LAN vers le port 80 de w.x.y.z je tombe bien sur le serveur Web de ma passerelle |
a premiere vue ta regle a l air correcte
qd tu dis que ca marche pas, c'est que tu obtiens une erreur qd tu applique cette regle ou bien que le routage apres ne se fais pas kom il faut ?
juste une chose a la limite le \, je le mettrai pas
je suppose que c pour ne pas interpreter le !, mais normalement c pas necessaire
puis je pense que c mieux de declarer le -t nat avant de mettre le -A PREROUTING
Marsh Posté le 12-06-2002 à 18:42:31
ben ca route pas correctement. Si j'essaie de faire a partir d'une machine du reseau un telnet w.x.y.z 80 ca met no route to host ...
Sinon le -t nat avant et le ! j'ai essayé mais ca change rien. Si je fait un iptables -t nat -L ca se marque comme il faut
Marsh Posté le 12-06-2002 à 20:11:08
246tNt a écrit a écrit : ben ca route pas correctement. Si j'essaie de faire a partir d'une machine du reseau un telnet w.x.y.z 80 ca met no route to host ... Sinon le -t nat avant et le ! j'ai essayé mais ca change rien. Si je fait un iptables -t nat -L ca se marque comme il faut |
ok
question conne
sur tes machines du LAN tu as bien en passerelle par defaut la 10.0.0.1 ?
Marsh Posté le 12-06-2002 à 20:19:21
Oui ...
Si a la place de --to-destination 10.0.0.2 je met 10.0.0.1:80, la ca marche je tombe sur le port 80 de mon routeur ...
Marsh Posté le 12-06-2002 à 20:33:54
246tNt a écrit a écrit : Oui ... Si a la place de --to-destination 10.0.0.2 je met 10.0.0.1:80, la ca marche je tombe sur le port 80 de mon routeur ... |
et ton site web sur la 10.0.0.2 marche kom il faut ?
Marsh Posté le 12-06-2002 à 23:42:47
246tNt a écrit a écrit : oui ... |
t as suivi un peu le traffic avec tcpdump ?
Marsh Posté le 13-06-2002 à 00:15:19
Pas trouvé grand chose ...
13:40:12.882187 10.0.0.10 48891 > www2.vip.lng.yahoo.com.www: S 3652653804:3652653804(0) win 5840 <mss 1460,sackOK,timestamp 257986857[|tcp]> (DF) [tos 0x10]
13:40:12.905034 www2.vip.lng.yahoo.com > 10.0.0.10: icmp: host www2.vip.lng.yahoo.com unreachable
Marsh Posté le 14-06-2002 à 14:03:55
Ben alors, personne ne sait ???? J'ai cherché sur le web mais j'ai trouvé aucune solution ... ( J'ai bien trouvé des mec avec le meme problème que moi mais ca m'avance pas ... )
Marsh Posté le 14-06-2002 à 14:44:59
ta machine qui fait routeur, c'est un hub ou un swith qui est dessus ?
et pk tu mets pas ton cache sur ton routeur, tu sera pu emmerder comme ça (enfin je pense que tu seras moins emmerder)
Marsh Posté le 14-06-2002 à 16:27:06
C un hub ( 3 Com office connect 16 port )
Oui en effet je pourrait mettre le cache sur le routeur mais bon c pas une solution ...
Marsh Posté le 14-06-2002 à 16:52:45
3 petites questions (je vois vraiment pas ce qui cloche) :
Marsh Posté le 15-06-2002 à 01:24:21
Voila mon installation :
Routeur :
eth0 - interface locale ( 10.0.0.1 ) - Connecté sur un HUB
eth1 - Connexion Cable 1 ( 130.104.x.x )
eth2 - Connexion Cable 2 ( 130.104.x.x )
eth3 - Lien vers modem ADSL
ppp0 - Interface PPPOE ( 130.104.x.x )
Cache WEB :
eth0 - interface locale ( 10.0.0.2 )
Machine à caché : ( n'est PAS sur mon reseau local mais qq part sur internet )
eth0 - interface vers le net ( w.x.y.z )
Machine cliente : ( dont le traffic vers w.x.y.z doit etre redirigée de maniere transparente vers 10.0.0.2 )
eth0 - interface reseau local ( 10.0.0.3 )
Je met sur le routeur et la machine cache ( 10.0.0.1 & 10.0.0.2 ) un service a la con sur le port 80 ( qui envoie toujour la string OK quand on fait un telnet dessus ).
Si je met :
iptables -A PREROUTING -s \! 10.0.0.2/32 -d w.x.y.z -t nat -p tcp --dport p -j DNAT --to-destination 10.0.0.1:80
et si je fait un telnet w.x.y.z 80 a partir de la machine cliente ( 10.0.0.3 ), je tombe bien sur le serveur du port 80 du 10.0.0.1
Je met :
iptables -A PREROUTING -s \! 10.0.0.2/32 -d w.x.y.z -t nat -p tcp --dport p -j DNAT --to-destination 10.0.0.2:80
Et la ca met no route to host.
En fait c comme si des packet venant d'une interface, qui sont DNATer ne pouvaient pas repartir par la même interface ...
Marsh Posté le 15-06-2002 à 01:25:21
J'ai essayé avec des rules minimale ( tout en ACCEPT + une rule MASQUERADE pour que les machine du lan aie internet ) et ca marche pas mieux ...
Marsh Posté le 15-06-2002 à 03:12:09
ah ouai quand même
c'est bien la zone ton truc quand même
y-a un peu un mélange de tout là ... en fait, y-a un gros truc qui me gene, c'est que tu es trois interface internet
je comprends pas ça...
Marsh Posté le 15-06-2002 à 10:10:52
Ben j'ai trois interface internet parce que sur mon LAN on est 13. Et pour assurer un debit correct a tout le monde, il faut plus que un seul acces internet ... Alors on a deux access cable sur les quels sont routés les application gourmante en bande passante et/ou upload ( FTP, Peer To Peer, Envoi de mail , ...) et une autre sur la quel sont routé les application ou un ping bas et une reponse rapide sont appreciable ( Web, InstantMessaging, DNS, Jeux On Line, SSH, ... )
Marsh Posté le 15-06-2002 à 10:35:56
Euh ... ben merde ca marche maintenant ...
Apparemment un
iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT
iptables -A FORWARD -d 10.0.0.0/24 -j ACCEPT
ca suffit pas ... il a fallu que je rajoute
iptables -A FORWARD -s 10.0.0.0/24 -d 10.0.0.0/24 -j ACCEPT
Mais je comprend pas pk quand j'ai mis les rules mininaml ca foirait ... J'avait du me gourer qq part ...
Enfin merci djoh et désolé de t'avoir dérangé ...
Marsh Posté le 12-06-2002 à 13:19:19
Voila, j'ai mon routeur en 10.0.0.1
Je veut que toute machine du sous reseau 10.0.0.0/24 sauf la 10.0.0.2 quand elle essaye de contacter l'ip w.x.y.z en tcp sur le port p soit redirigée ( DNAT ) vers la machine 10.0.0.2 du reseau local.
J'ai essayé :
iptables -D PREROUTING -s \! 10.0.0.2/32 -d w.x.y.z -t nat -p tcp --dport p -j DNAT --to-destination 10.0.0.2
mais ca marche pas ...
Quelqu'un a une idée ?