OVH Cloud OVH Cloud

2 Passerelles..

4 réponses
Avatar
yoran
Bonjour,

Je me casse les dents sur un problème d'architecture réseau sous linux. En
fait c'est assez simple, j'ai un arrivée ADSL sur un routeur Linksys. A ce
routeur sont connectés 3 machines sous linux et 2 sous windows (via wifi).
Une des machines linux est un serveur WEB qui est adressée via le routeur
en nat/forwarding. Ce que je cherche à obtenir sans y arriver c'est
d'utiliser une machine linux comme passerelle pour les autres machines, et
cette machine utilisant le routeur pour accéder au net. Sur cette machine
je n'ai qu'une interface réseau (reliée au routeur). L'objectif de la
manoeuvre est double,

1/ Mettre en place un QoS sur cette machine de sorte à ce que les uploads du
serveur Web ne plombe pas l'accès au net du lan. J'ai bien trouvé un
limiteur de bandepassante pour Apache2 mais c'est une limite fixe. Hors 50%
du temps, le trafic du lan vers le net est nul, donc autant fournir le
débit d'upload maximum.

2/ Mettre en place un certain nombre de filtres entre le lan et le net
(antivirus, squid, etc...)

J'ai googlisé autant que j'ai pu trouvant des solutions plus conventionnel à
base de 2 carte réseau mais cela implique de mettre en place un 2° routeur
ce qui est vaguement ridicule.

Voilà, j'espère que j'ai été suffisement clair.

Merci d'avance pour toute informations, pointeurs ou méthode.

Cordialement

Yoran

4 réponses

Avatar
yoran
Thierry Herbelot wrote:

Bonsoir,

Une solution passe par l'utilisation d'un alias : la carte Ethernet de la
machine intermédiaire a deux adresses IP, une (alias1 : 192.168.1.1/24)
visible uniquement du serveur web, et l'autre (alias2 : 192.168.2.1/24)
uniquement du reste du réseau.

il faut autoriser le routage sur la machine et paramétrer correctement les
paramètres IP sur les machines (par exemple mettre alias2 comme routeur
par défaut pour les machines du net).

l'utilisation des alias permet de simuler la présence de deux cartes
réseau sur le routeur (au moins, c'est comme çà que j'essaierai avec un
xBSD - j'espère que Linux marche aussi bien)

TfH

Ah oui ! Bonne idée. Je vais regarder si cela fonctionne sous linux et je te

tiens au courant.

Merci

Yoran

Avatar
yoran
Comme promis, je reviens pour donner la "solution" et aussi poser des
questions :)
J'ai donc réussi, assez simplement en fait (merci Thierry) à mettre en place
la redirection du trafic vers ma machine serveur et son reroutage vers le
Linksys.
Comme conseillé, j'ai créé un deuxième réseau 192.168.1.x. J'y ai mis le
serveur et le linksys. Ensuite j'ai crée une deuxième IP sur la même
interface réseau pour connecter le serveur au réseau lan (192.168.0.x) :

ifconfig eth0:1 192.168.0.D


ensuite il a suffit de mettre de compiler dans le noyau le support iptables
et de taper la command :

echo 1 > /proc/sys/net/ipv4/ip_forward


Ensuite configuration du dhcpd pour que les client prenne 192.168.0.D comme
passerelle et c'est tout.

J'ai ajouté dans l'iptables un chaine de log pour voir si cela fonctionnait
et cela traçait bien tout le trafic. Donc mission accomplit.. sur ce
point :)

Reste la raison pour laquelle j'ai fait tout cela. L'objectif est d'offrir
le maximum d'upload lorsque la demande du lan est faible et de diminuer cet
upload lorsque le lan monte en charge. Et là, j'ai exploré beaucoup de
solutions sans succès. Une piste mène logiquement à QoS mais impossible
(pour moi) de trouver autre chose que du bridage statique. C'est à dire que
je peux limiter l'upload à 50% tout le temps. Mais je n'arrive pas à
obtenir quelque chose de proportionnel. Je ne sais même pas si c'est
réalisable en général et en particulier sous Linux. Précisement je cherche
à limiter l'upload d'un apache lorsque le lan est en forte demande.
Maintenant que je maitrise les alias sur interface réseau ( ;-) je peux
mettre Apache sur une IP spéciale pour lui donner une priorité plus faible
que le reste du lan. Mais bon, j'y arrive pas...

Voilà, si une fois de plus quelqu'un à des idées. Je suis preneur :)

Yoran



yoran wrote:

Bonjour,

Je me casse les dents sur un problème d'architecture réseau sous linux. En
fait c'est assez simple, j'ai un arrivée ADSL sur un routeur Linksys. A ce
routeur sont connectés 3 machines sous linux et 2 sous windows (via wifi).
Une des machines linux est un serveur WEB qui est adressée via le routeur
en nat/forwarding. Ce que je cherche à obtenir sans y arriver c'est
d'utiliser une machine linux comme passerelle pour les autres machines, et
cette machine utilisant le routeur pour accéder au net. Sur cette machine
je n'ai qu'une interface réseau (reliée au routeur). L'objectif de la
manoeuvre est double,

1/ Mettre en place un QoS sur cette machine de sorte à ce que les uploads
du serveur Web ne plombe pas l'accès au net du lan. J'ai bien trouvé un
limiteur de bandepassante pour Apache2 mais c'est une limite fixe. Hors
50% du temps, le trafic du lan vers le net est nul, donc autant fournir le
débit d'upload maximum.

2/ Mettre en place un certain nombre de filtres entre le lan et le net
(antivirus, squid, etc...)

J'ai googlisé autant que j'ai pu trouvant des solutions plus conventionnel
à base de 2 carte réseau mais cela implique de mettre en place un 2°
routeur ce qui est vaguement ridicule.

Voilà, j'espère que j'ai été suffisement clair.

Merci d'avance pour toute informations, pointeurs ou méthode.

Cordialement

Yoran


--
-------------------------------------------------
Le blog de mes histoires avec Free, compte-rendu détaillé depuis maintenant
plus de 80 jours : http://mukti.over-blog.com

Avatar
Pascal
Salut,

Comme promis, je reviens pour donner la "solution"


Excellent ! merci à toi.

J'ai donc réussi, assez simplement en fait (merci Thierry) à mettre en place
la redirection du trafic vers ma machine serveur et son reroutage vers le
Linksys.
Comme conseillé, j'ai créé un deuxième réseau 192.168.1.x. J'y ai mis le
serveur et le linksys. Ensuite j'ai crée une deuxième IP sur la même
interface réseau pour connecter le serveur au réseau lan (192.168.0.x) :

ifconfig eth0:1 192.168.0.D


En réalité ce n'était pas absolument nécessaire. Un seul sous-réseau
aurait été suffisant avec quelques précautions (désactiver l'envoi d'ICMP
redirect sur le serveur, cf. /proc/sys/net/ipv4/conf/*/send_redirects).

ensuite il a suffit de mettre de compiler dans le noyau le support iptables


Iptables pour quoi faire ?

et de taper la command :

echo 1 > /proc/sys/net/ipv4/ip_forward


Pas besoin d'iptables pour ça.

Ensuite configuration du dhcpd pour que les client prenne 192.168.0.D comme
passerelle et c'est tout.


Il me semble qu'il manque quelque chose, autrement je ne vois pas comment
ça peut marcher. Avec cette seule configuration, si je ne m'abuse, le
routeur ne sait pas comment joindre le sous-réseau 192.168.0.x. Soit tu
as masqué ce sous-réseau avec du NAT source (ou du masquerading) sur le
serveur, d'où iptables, soit tu as dû ajouter une route de retour vers
192.168.0.x sur le routeur.

Avatar
yoran
wrote:

Salut,

Comme promis, je reviens pour donner la "solution"


Excellent ! merci à toi.

J'ai donc réussi, assez simplement en fait (merci Thierry) à mettre en
place la redirection du trafic vers ma machine serveur et son reroutage
vers le Linksys.
Comme conseillé, j'ai créé un deuxième réseau 192.168.1.x. J'y ai mis le
serveur et le linksys. Ensuite j'ai crée une deuxième IP sur la même
interface réseau pour connecter le serveur au réseau lan (192.168.0.x) :

ifconfig eth0:1 192.168.0.D


En réalité ce n'était pas absolument nécessaire. Un seul sous-réseau
aurait été suffisant avec quelques précautions (désactiver l'envoi d'ICMP
redirect sur le serveur, cf. /proc/sys/net/ipv4/conf/*/send_redirects).
Ahh veux-tu dire qu'en activant simplement le forwarding cela suffit pour

utiliser mon serveur comme passerelle ? Je vais regarder cela. Ceci dit
c'est assez pratique cet aliasing, ne serais que pour les vhosts apache.

ensuite il a suffit de mettre de compiler dans le noyau le support
iptables
Iptables pour quoi faire ?

En fait à rien :) C'est surtout pour pouvoir avoir une trace de la

redirection en utilisant la chaine de logs.

et de taper la command :

echo 1 > /proc/sys/net/ipv4/ip_forward


Pas besoin d'iptables pour ça.
Yep, je m'en suis rendu compte.


Ensuite configuration du dhcpd pour que les client prenne 192.168.0.D
comme passerelle et c'est tout.


Il me semble qu'il manque quelque chose, autrement je ne vois pas comment
ça peut marcher. Avec cette seule configuration, si je ne m'abuse, le
routeur ne sait pas comment joindre le sous-réseau 192.168.0.x. Soit tu
as masqué ce sous-réseau avec du NAT source (ou du masquerading) sur le
serveur, d'où iptables, soit tu as dû ajouter une route de retour vers
192.168.0.x sur le routeur.
Bein sérieusement, je n'en sais rien mais cela marche (sinon, je ne pourrais

pas écrire là :) Ceci dit, cela ne règle toujours pas mon histoire de
gestion de bande passante. J'ai trouvé une utilisation de l'iptables (sinon
j'aurais recompilé le noyau pour rien ;-) en mettant un squid transparent
mais bon, la base de mon problème reste entier...

Yoran. Apprenti sorcier