RDV+DIAL chat illimit� dans ta r�g!
no save
Assistance
Achat
News

Forum | réseau
IPTABLES - Load Balancing
Wes, le dim. 22 juin 2008 à 00:15:20
Bonjour,

Je suis en train de mettre au point une solution de load balancing pour le boulot.
Une solution qui permettra de répartir les connexions sortantes entre deux lignes ADSL

Pour ca, je me sert de iptables, qui va marquer les paquets concernant les nouvelles connexions d'un 1 ou d'un 2
Ensuite, avec une regle dans iproute2, les paquets marqués 1 passeront par la ligne ADSL1, et les 2 par la ligne ADSL2

Comme je suis en phase "experimentale", je simule mes deux lignes ADSL a l'aide de deux machines virtuelles NAT, situés dans un réseau virtuel 172.16.0.0/16
Meme chose pour la machine de test, dans un réseau virtuel 10.10.10.0/24

Un petit schema du réseau ne ferait pas de tort :

http://www.black-templars.net/loadbalancing.JPG

R1 - IPTABLES : la machine qui va faire le load balancing :D
NAT : les deux machines qui "émulent" mes deux lignes ADSL ...
Le reste ca devrait aller :p

Alors, la liste de commandes effectuées (les machines sont des slackware) :

Sur la machine R1 IPTABLES

Ajout de tables ADSL1 et ADSL2 dans /etc/iproute2/rt_tables

ip route add default via 172.16.1.2 table ADSL1
ip route add default via 172.16.1.3 table ADSL2

ip rule add fwmark 1 table ADSL1
ip rule add fwmark 2 table ADSL2

=> désormais le routeur utiliseras la table ADSL1 (passerelle 172.16.1.2) pour router les paquets marqués 1, et la table ADSL2 (passerelle 172.16.1.3) pour les paquets marqués 2

iptables -t mangle -A PREROUTING -m state --state new -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -m state --state new -m statistic --mode random --probability 0.5 -j MARK --set-mark 2

=> les paquets arrivant sur la machine pour etre routés, et dont l'etat est NEW ( nouvelle connexion ) seront marqués 1, et 50% de chances qu'ils soient marqués 2


Sur les machines NAT :
on configure le nat, simplement :
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to 172.16.1.2
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

et on ajoute une route statique pour 10.10.10.0/24, et une passerelle par défaut
ip route add 10.10.10.0/24 via 172.16.1.1
ip route add default via 192.168.1.1


Voila, en théorie ca devrait marcher du tonnerre, mais c'est pas le cas ...
En jettant un coup d'oeil avec wireshark, qui analyse tout ce qui ressort de ma machine physisque ( et donc situé sur Real LAN, juste avant le routeur adsl réel ) :

En tapant une adresse dans le browser de la machine 10.10.10.5 :
- Les requetes DNS passent bien dans les deux sens( parce que c'est de l'UDP ? )
- Le paquet TCP SYN sur le port 80 du site web que je cherche a atteindre passe aussi
- Le paquet TCP SYN ACK arrive sur ma machine physique, mais il n'ira pas plus loin, car le site web m'en renvoi plusieurs avec le meme numéro...

image ici : http://www.black-templars.net/winpcap.JPG

Les pings passent bien aussi !

Ce que j'en conclus : [u]pas moyen d'etablir de connexion TCP, car les ACK n'arrivent pas a remonter a la machine demandeuse..

Avez vous une idée ? :DConfiguration: Slackware 12.0


Wawan56
sept. 08
Suivant
REPONSES
Wawan56
sept. 08
lazergo
sept. 08
Wawan56
sept. 08
tempus1894
10 juin
WanWan56
19 juin
tempus1894
20 juin
Version Web
Réalisé par RedShift
no save