par tomtom » 26 Mai 2003 20:15
Ce n'est pas la peine de tester, ca ne fonctionnera pas....
<BR>
<BR>Le forward de port fonctionne de la manière suivante :
<BR>
<BR>un paquet arrive sur l'interface red:
<BR>Ip destination : ip publique d'ipcop (fournie par le FAI),
<BR>Port destination : 80
<BR>
<BR>il traverse une chaine de netfilter appelée prerouting (tu peux voir ca dans le fichier grace à la syntaxe iptables :
<BR>iptables -t nat -A PREROUTING.
<BR>
<BR>prerouting, cela veut dire "avant d'etre routé". Donc avant de savoir ou il va l'envoyer par le mecanisme classique de routage, il traverse cette chaine.
<BR>En général, on matche alors sur le port destination.
<BR>
<BR>Typiquement, tu vas avoir ceci :
<BR>
<BR>iptables -t nat -A PREROUTING -i $IFACE_RED --dport 80
<BR>
<BR>le $IFACE_RED, c'est pour dire que ca ne marche qu'avec les paquets arrivant du red (ben oui, on ne veut pas forwarder pour le green. Si on veut quand même le faire, il suffit de supprimer le -i $IFACE_RED)
<BR>
<BR>ensuite, on dit quoi faire... Completons donc ntre règles :
<BR>
<BR>iptables -t nat -A PREROUTING -i $IFACE_RED --dport 80 -j DNAT --to 192.168.1.5:80
<BR>
<BR>
<BR>avec bien sur 192.168.1.5 l'adresse de ton serveur web.
<BR>
<BR>Cette règle est générée automatiquement par le GUI.
<BR>
<BR>Toi, tu veux en rajouter une (disons exactement la même, mais vers le serveur 192.168.1.10)
<BR>
<BR>iptables -t nat -A PREROUTING -i $IFACE_RED --dport 80 -j DNAT --to 192.168.1.10:80
<BR>
<BR>
<BR>ben oui, mais le problème c'est que dès que iptables a trouvé un truc qui colle, il fait ce qui est dit puis il arrête.... En clair, si tu fais ça, il continuera de tout envoyer vers le premier serveur.
<BR>Si tu mets ta règle avant, il enverra vers le deuxième...
<BR>
<BR>Mais comment veux-tu qu'il choisisse vers lequel envoyer ????
<BR>
<BR>Soit tu lui donne un paramètre (je ne sais pas moi, toutes les ip 10.10.10.10 vont vers serveur A, les autre vers serveur B.. par exemple)
<BR>
<BR>soit tu essaye de faire du load balancing (un truc aléatoire, ou alors un paquet sur deux pour chaque serveur...)
<BR>
<BR>Soit tu detectes l'adresse rentrée dans le browser (module string de iptables) et pour ça tu te reportes aux messages concernat le module string
<BR>
<BR>soit tu renvoies tout vers un seul serveur, mais celui-ci detecte ce qui est tapé ddans la barre d'adresse (virtual hosts) et eventuellement il redirige ce qui n'est pas pour lui vers un autre....
<BR>
<BR>Ce sont tes seules possibilités !
<BR>
<BR>Thomas
One hundred thousand lemmings can't be wrong...