Serveurs linux debian / apache / squid

Fermé
nouabi Messages postés 143 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 16 juillet 2010 - 19 août 2008 à 17:03
nouabi Messages postés 143 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 16 juillet 2010 - 21 août 2008 à 10:11
Bonjour,

Je vous présente mon réseau simplifié et la partie intéressante :


INTERNET -------------> routeur/modem/firewall -----------------> proxy (Squid) ----------------------------------> Serveur A ET Serveur B (2 machine différentes) tout en IP fixe


Mon problème, c'est que je souhaite rediriger des requêtes différentes sur l'un ou l'autre des serveur sachant qu'ils répondent tous les deux uniquement sur le port 80 et il est impossible de changer cela.

Je souhaiterai que telle requete http soit redirigé vers le serveur A (80) et telle autre soit redirigé vers le serveur B (80). Toutes les requetes arrive sur le port 80 (ou autre) sur le proxy en entrant.

Comment faire ? Comment configurer Squid pour fair cela ?

Merci d'avance pour votre aide !

Nouabi
A voir également:

17 réponses

XxTitxX Messages postés 1176 Date d'inscription samedi 24 mai 2008 Statut Membre Dernière intervention 30 août 2012 246
19 août 2008 à 17:05
BOnjour,

La solution aurait été du NAT avec les ports mais si tu ne peux pas changer du port 80, je vois pas trop comment faire ...

Je suis à court d'idée dsl, je continu à y réfléchir quand même.
1
raclif Messages postés 87 Date d'inscription mercredi 16 mars 2005 Statut Membre Dernière intervention 11 juin 2014 10
19 août 2008 à 17:23
Oula je sens que tu veux essayer de réinventer le réseau toi :)
En faite tu voudrais mettre deux serveurs Web sur ton réseau alors que tu n'as qu'une seule adresse public, c'est ca?

Dans ce cas, pour moi (mais je ne suis pas dieu!) c'est impossible même avec ton proxy

1 serveur Web = 1 adresse IP public
Ou alors, tu fais écouter un serveur sur le port 80 et le second sur le port 81

A+
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
19 août 2008 à 17:31
Salut,
Si c'est possible.
Sur ton firewall (par exemple netfilter), tu fais de la redirection de paquets en fonction de matching.
Par exemple, telle requête arrivant sur le firewall par telle interface qui correspond à un pattern sera redirigé vers ton serveur Web sur le port 80, ou sinon sur l'autre serveur web.
Cdt
1
nouabi Messages postés 143 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 16 juillet 2010 8
20 août 2008 à 09:22
Merci pour vos réponse !

En fait, ce que je voudrai faire, c'est :
les requetes : http://xx.xx.xx.xx/sadmin arrive sur un serveur et toutes les autres arrive sur l'autre serveur.

Le proxy n'est pas capable de filtrer les requete et les rediriger vers différentes IP ?
Le firewall peut rediriger uniquement une IP/port vers une ip/port mais ne s'occupe pas des requete je crois ?

Par exemple, peux utiliser un ACL ou squidgard pour cela ?

C'est bizarre qd meme !

Qu'en pensez vous ?
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
20 août 2008 à 10:05
Cela dépend du firewall. Si tu prends Netfilter (firewall présent sur Linux), il ne réalise que le filtrage cconcernant les couches basses. Mais il y a un module à rajouter pour qu'il puisse traiter les requêtes au-dessus de transport (au sens ISO). Donc, ça répond à ton problème.
Les ACL ne répondent pas à ce besoin.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nouabi Messages postés 143 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 16 juillet 2010 8
20 août 2008 à 10:32
Je n'ai pas de firewall sur mon serveur proxy car j'ai un firewall sur mon routeur (au dessus)

En fait, pour faire cela, je n'ai pas besoin de proxy ? et squidguard ?

A+
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
20 août 2008 à 10:35
Eh bien installe un firewall sur ton serveur proxy. C'est la solution la plus simple. Tu configures netfilter avec le module qui va bien pour les couches hautes et tu pourras refaire les redirections. Ou alors si tu veux vraiment pas, il te reste la possibilité de monter ton proxy en reverse. Et de faire le filtrage en amont (sur ton vrai Firewall).
0
raclif Messages postés 87 Date d'inscription mercredi 16 mars 2005 Statut Membre Dernière intervention 11 juin 2014 10
20 août 2008 à 11:39
Le module c'est layer7-filter sous iptable, enfin du moins il existe celui la :)
A+
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
20 août 2008 à 11:44
Netfilter est certainement déjà installé sur ton proxy (si tu parles de Squid). Ce firewall est implémenté dans la plupart des noyaux Linux. Tu peux configurer le firewall en ligne de commande grâce à iptables (si noyau > 2.4). Et tu installes layer7-filter pour traiter les couches HTTP.

Sinon, ce que tu peux faire, c'est tout diriger vers un seul serveur. Et rediriger l'adresse http://xx.xx.xx.xx/sadmin vers l'autre serveur (au niveau http, dans une balise meta). Solution simple. A toi de voir si cette bidouille te convient.
1
nouabi Messages postés 143 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 16 juillet 2010 8
20 août 2008 à 11:48
ok ca m'arrangerai bien cette "bidouille" mais c'est tout ce que je demande ! lol

Tu peux dévellopé un peux comment que je peux fair ca ?

Merci

PS : ce que j'ai dit plus haut :
"En fait, ce que je voudrai faire, c'est :
les requetes : http://xx.xx.xx.xx/sadmin arrive sur un serveur et toutes les autres arrive sur l'autre serveur."
...
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
20 août 2008 à 12:01
Oui, c'est bien ce que j'ai dit ;).
Mais cette bidouille à l'inconvénient que tous les requêtes seront envoyés (inutilement) sur l'un des serveurs. Et ceux qui demanderont la page http://xx.xx.xx.xx/sadmin se verront rediriger sur l'autre serveur. Voilà pourquoi j'ai dit bidouille.

L'autre solution est plus propre. Redirection directe sur le bon serveur.

Alors solution propre compliquée ou solution simple moche ?
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
20 août 2008 à 13:48
Salut
Solution simple et moche :
Tu rediriges tout sur ton serveur web. Dans le dossier sadmin (http://xx.xx.xx.xx/sadmin) tu mets un .htaccess contenant la directive :
Redirect sadmin/ http://autreServeurWeb/ 


Solution élégante :
#iptables -t filter -I INPUT 1 -p tcp --dport 80 -j DNAT -m layer7 --l7proto SITE2 --to-destination ipSiteWeb2

Et dans /etc/l7-protocols, tu crées un fichier SITE2.pat qui contiendra :
SITE2
pattern http (pour filtrer l'URL xx.xx.xx.xx/sadmin)

Pour le pattern, inspire toi de /etc/l7-protocols/http.pat.

Simple question : xx.xx.xx.xx = une adresse ip (de l'autre serveur) ou ça désigne un répertoire ?
1
XxTitxX Messages postés 1176 Date d'inscription samedi 24 mai 2008 Statut Membre Dernière intervention 30 août 2012 246
20 août 2008 à 14:49
Clair et limpide, chapeau bonne explication, je ne savais pas qu'on pouvait procéder de la sorte ...
0
nouabi Messages postés 143 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 16 juillet 2010 8
20 août 2008 à 11:27
ok, je vais installer Netfilter !

Comment je peux configurer un firewall pour qu'il me redirige "intelligement" mes requêtes HTTP ?
Un firewall, comme Netfilter est censé recevoir un paquet venant d'une ip sur un port et le renvoi sur une autre ip et sur un autre port (ou les même d'ailleurs) , non ?

Comment le configurer pour qu'il me redirige une requete particuliere sur un poste et les autres requete sur une autre machine ?

Quel est ce module dont tu me parlais tout à l'heure ?

Merci
0
nouabi Messages postés 143 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 16 juillet 2010 8
20 août 2008 à 12:11
Solution propre si c'est pas trop chiant à mettre en place !

Sinon, bidouille !

C'est pas très important, c'est sur une plateforme de test !!!

Merci d'avance
0
nouabi Messages postés 143 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 16 juillet 2010 8
20 août 2008 à 14:04
J'ai pas tout saisi encore parce que je comprend pas ce que tu veux faire !

En ce qui concerne le xx.xx.xx.xx, ça représente l'adresse ip d'un des 2 serveur web mais dispos via dyndns de l'extérieur !
En fait j'explique mon réseau simplifié dans le premier post.

Je crois que je vais faire la solution bidouille en fait ... :D
Mais, même elle, j'arrive pas a comprendre pourquoi tu fais ça ! Si tu pouvais développer un peu plus, ça m'arrangerai ...

Merci d'avance

Nouabi
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
20 août 2008 à 14:15
Pourquoi je fais ça ? oO Ben pour répondre à tes besoins lol.
Tu veux que lorsqu'un utilisateur demande à visualiser l'adresse http://xx.xx.xx.xx/sadmin, il soit redirigé sur ton autre serveur. Ok. Tu mets le .htaccess avec la directive que je t'ai donnée. Ainsi lorsqu'un client se connectera sur http://xx.xx.xx.xx/sadmin/ il sera redirigé sur l'autre serveur. Sinon, il restera sur le bon serveur.
0
nouabi Messages postés 143 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 16 juillet 2010 8
20 août 2008 à 14:35
ok, le .htaccess, je le met ou en fait ? (et oui je debute sur Squid ! un peu bete mais bon ... )

merci de ton aide en tout cas
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
20 août 2008 à 14:43
Le .htaccess n'a rien à avoir avec Squid, mais avec ton serveur web (apache, ...).
Tu le mets dans le répertoire sadmin de ton serveur comme dit dans le post 14.
0
nouabi Messages postés 143 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 16 juillet 2010 8
21 août 2008 à 10:11
Pour tout ceux qui ont suivi ce post !

La solution est simple mais propre !!!

J'ai réussi a faire de la redirection d'URL a l'aide de Squidguard qui embarque une fonction de redirection tout simplement. Il suffit, de remplacé les URL "interdite" par les URL sources et fair ensuite une redirection dans les acl de squidguard.conf.
Et le tour sera joué !

J'ai des ptit msg d'erreur a résoudre mais ca se profile mieu.

J'ai préférer cette solution ca me perttra de rajouté des URL, ou d'en modifié au fur et a mesure de mes besoin.

Mais l'idée de Fiddy marche très bien, je l'ai testé !

Merci beaucoup all et si vous souhaité plus d'info sur ma solution ,n'hésité pas, je suis toujour le post ...

A+
0