OVH Cloud OVH Cloud

Routage et Load Balancing

3 réponses
Avatar
Guillaume Leccese
Bonjour,

Je suis en train de réaliser une solution de Load Balancing un peu
maison. Il s'agit plus d'une politique de routage avancée, pour permettre
de tirer au mieux partie de nos deux connexion ADSL en fonction de nos
besoin et contrainte (accès à certains service par rapport à une
adresse ip bien spécifique, serveur web public etc ...)

Je suis donc en train de mettre ne place ma solution dans un environnement
de test. J'ai trois machine:

- Machine A: routeur, 3 interfaces
* eth0: 10.1.1.1/24 lan de nos société
* eth1: 192.168.1.1/24 vers machine B
* eth2: 10.1.100.1/24 vers machine C

- Machine B: 1 interface
* eth0: 192.168.1.11/24

- Machine C: 1 interface
* eth0: 10.1.100.11/24

Avant de mettre ma fameuse politique de routage avancée (entre autre avec
du NAT), j'aimerais bien que mes machines puisses communiquer les uns avec
les autres. Sans ça, j'arriverais à rien :( Je suis donc en train
d'essayer de mettre mes routes correctement en place.

J'ai volontairement oublié eth0 dans les routes pour avoir une machines
qui fasse dans un premier temps simplement le lien entre mes deux réseaux.

Voici mes routes:

# ip route list

192.168.1.0/24 dev eth1 scope link src 192.168.1.1
10.1.100.0/24 dev eth2 scope link src 10.1.100.1
default via 192.168.1.1 dev eth1

# ip rule list

0: from all lookup local
32762: from 10.1.100.1 lookup nerim
32763: from 192.168.1.1 lookup freebox
32764: from all lookup nerim
32765: from all lookup freebox
32766: from all lookup main
32767: from all lookup default


# ip route list table nerim

10.1.100.0/24 dev eth2 proto kernel scope link src 10.1.100.1
default via 10.1.100.1 dev eth2


# ip route list table freebox

192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.1
default via 192.168.1.1 dev eth1


Je ne pense pas avoir fait quelques choses de spécial. Je me suis bassé
sur des documents trouvé sur Internet, et entre autre le HOW-TO Linux
Advancing Routing (sur linux-french). C'est donc ma première étape avant
d'essayer de faire du NAT.

Quand je ping depuis la machine A (routeur) vers la machine C
(10.1.100.11) ça fonctionne (et inversement). Quand je ping depuis la
machine A vers la machine B (192.168.1.11) ca ne fonctionne pas (?!!!).
Quand je ping depuis la machine B -192.168.1.11) vers la machine A
(routeur en 192.168.1.1) ca marche (?!!). J'ai vérifié avec tcpdump si
les packets n'arrivaient pas par hazard sur la machine et souffrait d'un
probleme pour repartir mais non, rien n'arrive sur la machine.

Auriez vous une idée ? Pourquoi cela ne fonctionne pas dans un sens ?

Merci d'avances.

Guillaume L.

3 réponses

Avatar
SiO
Salut Guillaume...

Je ne suis pas certain de bien comprendre ce que tu veux faire...

Tu as deux lien WAN, deux ADSL dans ce cas-ci c'est bien ça ?

Et tu veux faire passer différent type de trafique sur un des liens en
particulier, c'est bien ça ? Exemple HTTP passer par ADSL1 et FTP par
ADSL2 c'est bien ça ? Si oui, ton idée n'est pas mauvaise, mais tu as
peut être pas pensé à quelques petits détails importants.


Si tu y vas par IP, tu devras modifier tes routes à chaque fois que tu
as des changements. Exemple : Tu découvre un nouveau site FTP
intéressant?! Tu devra ajouter une route !? Si tu n'a pas mis son IP
dans les routes, tu ne passera pas par ton lien préféré. Et si ce site
a un nom de domaine et que derrière il a une adresse IP Dynamique, qui
change de temps à autre !?! Tes routes ne fonctionnront plus.

Ce que tu as besoin, est une application qui sépare le traffique au
niveau 4 - TCP/UDP (Ports) et non pas seulement niveau 3 - IP.

Je te conseille fortement je jeter un coup d'oeil à SHOREWALL.
http://www.shorewall.net/ C'est une petite merveille.

C'est un, FIREWALL/PROXY/NAT qui supporte plusieurs options TRÈS
intéressantes pour faire le travail que tu veux faire. Si tu es
familier avec le principe des ZONES et des RÈGLES, POLICY, tu devrais
être en terrain connu.

J'espère que ceci t'aide.

Donne nous des nouvelles !

A+

SiO




Guillaume Leccese wrote:

Bonjour,

Je suis en train de réaliser une solution de Load Balancing un peu
maison. Il s'agit plus d'une politique de routage avancée, pour permettre
de tirer au mieux partie de nos deux connexion ADSL en fonction de nos
besoin et contrainte (accès à certains service par rapport à une
adresse ip bien spécifique, serveur web public etc ...)

Je suis donc en train de mettre ne place ma solution dans un environnement
de test. J'ai trois machine:

- Machine A: routeur, 3 interfaces
* eth0: 10.1.1.1/24 lan de nos société
* eth1: 192.168.1.1/24 vers machine B
* eth2: 10.1.100.1/24 vers machine C

- Machine B: 1 interface
* eth0: 192.168.1.11/24

- Machine C: 1 interface
* eth0: 10.1.100.11/24

Avant de mettre ma fameuse politique de routage avancée (entre autre avec
du NAT), j'aimerais bien que mes machines puisses communiquer les uns avec
les autres. Sans ça, j'arriverais à rien :( Je suis donc en train
d'essayer de mettre mes routes correctement en place.

J'ai volontairement oublié eth0 dans les routes pour avoir une machines
qui fasse dans un premier temps simplement le lien entre mes deux réseaux.

Voici mes routes:

# ip route list

192.168.1.0/24 dev eth1 scope link src 192.168.1.1
10.1.100.0/24 dev eth2 scope link src 10.1.100.1
default via 192.168.1.1 dev eth1

# ip rule list

0: from all lookup local
32762: from 10.1.100.1 lookup nerim
32763: from 192.168.1.1 lookup freebox
32764: from all lookup nerim
32765: from all lookup freebox
32766: from all lookup main
32767: from all lookup default


# ip route list table nerim

10.1.100.0/24 dev eth2 proto kernel scope link src 10.1.100.1
default via 10.1.100.1 dev eth2


# ip route list table freebox

192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.1
default via 192.168.1.1 dev eth1


Je ne pense pas avoir fait quelques choses de spécial. Je me suis bassé
sur des documents trouvé sur Internet, et entre autre le HOW-TO Linux
Advancing Routing (sur linux-french). C'est donc ma première étape avant
d'essayer de faire du NAT.

Quand je ping depuis la machine A (routeur) vers la machine C
(10.1.100.11) ça fonctionne (et inversement). Quand je ping depuis la
machine A vers la machine B (192.168.1.11) ca ne fonctionne pas (?!!!).
Quand je ping depuis la machine B -192.168.1.11) vers la machine A
(routeur en 192.168.1.1) ca marche (?!!). J'ai vérifié avec tcpdump si
les packets n'arrivaient pas par hazard sur la machine et souffrait d'un
probleme pour repartir mais non, rien n'arrive sur la machine.

Auriez vous une idée ? Pourquoi cela ne fonctionne pas dans un sens ?

Merci d'avances.

Guillaume L.





Avatar
Guillaume Leccese
Hello,

Le Wed, 18 Aug 2004 19:51:50 -0300, SiO a écrit :

Salut Guillaume...

Je ne suis pas certain de bien comprendre ce que tu veux faire...

Tu as deux lien WAN, deux ADSL dans ce cas-ci c'est bien ça ?

Et tu veux faire passer différent type de trafique sur un des liens en
particulier, c'est bien ça ? Exemple HTTP passer par ADSL1 et FTP par
ADSL2 c'est bien ça ? Si oui, ton idée n'est pas mauvaise, mais tu as
peut être pas pensé à quelques petits détails importants.



Bah ouai, c'est exactement ca :)


Si tu y vas par IP, tu devras modifier tes routes à chaque fois que tu
as des changements. Exemple : Tu découvre un nouveau site FTP
intéressant?! Tu devra ajouter une route !? Si tu n'a pas mis son IP
dans les routes, tu ne passera pas par ton lien préféré. Et si ce site
a un nom de domaine et que derrière il a une adresse IP Dynamique, qui
change de temps à autre !?! Tes routes ne fonctionnront plus.

Ce que tu as besoin, est une application qui sépare le traffique au
niveau 4 - TCP/UDP (Ports) et non pas seulement niveau 3 - IP.


Bien, je parlais des routes simplement pour qu'au moins je puisse
communiquer correctement sur mon installation de tests. Il est
effectivement pas efficace de devoir ajouter la route a chaque fois :)
C'est pour ca que je veux ensuite passer par du NAT avec iptables.


Je te conseille fortement je jeter un coup d'oeil à SHOREWALL.
http://www.shorewall.net/ C'est une petite merveille.

C'est un, FIREWALL/PROXY/NAT qui supporte plusieurs options TRÈS
intéressantes pour faire le travail que tu veux faire. Si tu es
familier avec le principe des ZONES et des RÈGLES, POLICY, tu devrais
être en terrain connu.


Je vais de ce pas jeter un coup d'oeil dessus !!!

Merci beaucoup !!!


J'espère que ceci t'aide.

Donne nous des nouvelles !

A+

SiO




Guillaume

Avatar
T0t0
"Guillaume Leccese" wrote in message
news:
Je suis en train de réaliser une solution de Load Balancing un peu
maison.


J'ai fait un petit doc là dessus:
<http://www.lalitte.com/double.html>

- Machine A: routeur, 3 interfaces
* eth0: 10.1.1.1/24 lan de nos société
* eth1: 192.168.1.1/24 vers machine B
* eth2: 10.1.100.1/24 vers machine C

- Machine B: 1 interface
* eth0: 192.168.1.11/24

- Machine C: 1 interface
* eth0: 10.1.100.11/24

# ip rule list

0: from all lookup local
32762: from 10.1.100.1 lookup nerim
32763: from 192.168.1.1 lookup freebox
32764: from all lookup nerim
32765: from all lookup freebox
32766: from all lookup main
32767: from all lookup default


Là je comprends pas trop. Tout va passer par votre table Nerim, non ?

Je ne pense pas avoir fait quelques choses de spécial.


Si, essayez de virer les tables 32764 et 32765 et ca devrait aller
mieux.
En faisant
#ip rule del table nerim
#ip rule del table freebox
Puis en les réajoutant avec seulement la table avec le from.

Quand je ping depuis la machine A (routeur) vers la machine C
(10.1.100.11) ça fonctionne (et inversement). Quand je ping depuis la
machine A vers la machine B (192.168.1.11) ca ne fonctionne pas (?!!!).


Ca m'étonne pas trop, tout passe dans la table Nerim.

Auriez vous une idée ? Pourquoi cela ne fonctionne pas dans un sens ?


Déjà en remettant les tables au propre, ca devrait aller mieux j'espère
:-)



--
Posted via Mailgate.ORG Server - http://www.Mailgate.ORG