Réseau - iptables - 2 ISP

Demat d’an holl,

J’ai 2 ISP et je cherche à balancer de manière eguale du traffic http.

J’ai été voir sur le site de netfilter et dans les anciennes version de patch-o-magic, il y avait la target random. celle-ci ne semble plus exister dans la nouvelle version de patch…

Il n’a pas moyen de la trouver non plus dans les target de compilation du noyeau.

Qq saurait il où la trouver ?

Bon je sais, cela n’a pas grand chose a voir avec la distrib debian, Mais j’ai une debian alors…

bien venu au club, mon amis, ca fais 7 mois que je suis dessus, et si tu veux faire du load balancing avec deux interfaces pour deux ISPs, oublis le random…

Ne cherche même pas à trouver le module ROUTE pour IPTABLES avec DEBIAN. tu jette un oeil au man (iptables / -m route) et tu te rendra compte que les noyaux debian n’aurrons JAMMAIS ce module :cry: . Si il est instable ca se comprend.

Le fait est que j’ai trouvé un trésor depuis peu: une aide sur ce même forum, mais planqué quelque part, et j’ai du érrer durant des mois avant de le trouver par hasard…

J’avais déjas une piste:
LOAD BALANCING IP ROUTE2
je t’invite à consulter les fichier suivants qui tournent sur la etch comme une horloge. je tourne avec trois cartes réseaux, dont deux vers les routeurs de chaque ISP. Si t’est dans le même cas ca devrais t’aider. en tout cas ne fais pas non plus l’erreur de faire du load balancing avec SHOREWALL: en plus de squizzer ta config iptables, il semblerait que la config est plutôt chatouilleuse et pas adapté à 100% à du load balancing. (perte de paquets sur retours C se que j’ai lu qek part)

voici le shema logique de mo affaire:

ROTUEURISP1(10.0.0.1)---(10.0.0.2)eth1\
                                                             >PROXY/FW<eth0(X.X.X.X) 
ROUTEURISP2(10.0.1.1)---(10.0.1.2)eth2/

vérifie que tu as IPROUTE2 d’installé si tu ne l’à pas : installe le.
Daborts tu dois ajouter deux tables de routage supplémentaire (une par Interface réseau vers ISP) dans le fichier /etc/iproute2/rt_tables

# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
201     UPL1       #<----- là
200     UPL2        #<----- et là

et ensuite tu edites le suivant en changeant réseau et masques etc…évidement.

==========================================================
nano /etc/network/interfaces
==========================================================
auto lo eth0 eth1 eth2
# The loopback network interface
iface lo inet loopback
# The primary network interface LAN, INTRANET
iface eth0 inet static
    address X.X.X.X
    netmask X.X.X.X
    broadcast X.X.X.X
    network X.X.X.X
    pre-up echo 1 > /proc/sys/net/ipv4/ip_forward # ca c'est le forward

iface eth1 inet static
# Vers routeur 1
    address 10.0.1.2
    netmask 255.255.255.252
    broadcast 10.0.1.3
    network 10.0.1.0
 	# LOAD BALANCING ================================================
        post-up ip route add 10.0.1.0/30 dev eth1 src 10.0.1.2 table UPL1
        post-up ip route add default via 1.0.1.2 table UPL1
        post-up ip rule add from 10.0.1.2 table UPL1
        post-down ip rule del from 10.0.1.2 table UPL1

iface eth2 inet static
# Vers routeur 0
    address 10.0.0.2
    netmask 255.255.255.252
    broadcast 10.0.0.3
    network 10.0.0.0
 	# LOAD BALANCING ================================================
        post-up ip route add 10.0.0.0/30 dev eth2 src 10.0.0.2 table UPL2
        post-up ip route add default via 2.0.0.2 table UPL2
        post-up ip rule add from 10.0.0.2 table UPL2
        post-up ip route add default scope global nexthop via 10.0.1.1 dev eth1 weight 1 nexthop via 10.0.0.1 dev eth2 weight 1
        post-down ip rule del from 10.0.0.2 table UPL2
============================================================

avec cette config les paquets qui sortent par une porte, rentrerons par cette porte, et pas de quiproco possibles. le débit est répartit sue les deux interfaces… satisfais ou tant pis pour ta pomme :laughing:

dailleurs je me demande si quelqu’un a déjàs essayé de faire du load balancing avec trois routeurs et les tables de routages. ca m’arrangerais de savoir si cetait possible. (ajouter une table et la configurer comme les autres et ajouter “nexthop via 10.0.3.1 dev eth3 weight 1”)

vala, si tout se passe bien tu devrais avoir ceci (apres redemarrage du réseau (ifdown -a, ifup -a) quand tu tappes “ip route”.

# /etc/iproute2>ip route
10.0.0.0/30 dev eth2  proto kernel  scope link  src 10.0.0.2
10.0.1.0/30 dev eth1  proto kernel  scope link  src 10.0.1.2
X.X.X.X/XX dev eth0  proto kernel  scope link  src X.X.X.X
default
        nexthop via 10.0.1.1  dev eth1 weight 1
        nexthop via 10.0.0.1  dev eth2 weight 1

Hop et voilà, comble du bonheur pas besoin d’alourdir le pauvre iptables avec des règles à la mord moi le noeud…

par contre, je suis un peu hors sujet vu que tu souhaitais distribuer uniquement le http sur les deux routeurs. Là c’est tout le traffic qui est distribué indifférement du protocole. le filtrage iptables se fait sur le forward(filter).

quote="fmor"
J’ai 2 ISP et je cherche à balancer de manière eguale du traffic http.
(…)[/quote]Mais du traffic client comme dans la soluce de megs, ou une repartition de charge http sur deux serveurs ?
Parceque ultramonkey n’est pas forcement tres dur à mettre en oeuvre, quand on est aidé.

Oui, il s’agit bien de router du traffic client vers 2 isp.

Merci megs mais je connaissais déjà, et j’ai déjà ces nexthop dans la table default, Sur le routeur lin, cela fonctionne !!! le problème c’est que les paquets client sont invariablement forwardé sur le second nexthop. Un flush du cache des routes ne change rien.

Si j’avais un marteau …

ah oui! c’est vrais y a ca aussi!, t’as recompilé ton noyau en supprimant l’option cached_routes ?
CONFIG_IP_ROUTE_MULTIPATH_CACHED is not set
c’était conseillé… en effet avant javais le même soucis et c’est pourquoi j’avais abandonné cette idée là. mais quand j’ai vu que ca pouvais venir de ca j’y suis revenu et maintenant ca marche tres bien.

IMPEC !

Je te remercie, cela fonctionne très bien maintenant !