Serveurs linux debian / apache / squid

nouabi Messages postés 147 Statut Membre -  
nouabi Messages postés 147 Statut Membre -
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 1249 Statut Membre 246
 
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 94 Statut Membre 10
 
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 11653 Statut Contributeur 1 847
 
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 147 Statut Membre 8
 
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 11653 Statut Contributeur 1 847
 
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 147 Statut Membre 8
 
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 11653 Statut Contributeur 1 847
 
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 94 Statut Membre 10
 
Le module c'est layer7-filter sous iptable, enfin du moins il existe celui la :)
A+
1
fiddy Messages postés 11653 Statut Contributeur 1 847
 
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 147 Statut Membre 8
 
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 11653 Statut Contributeur 1 847
 
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 11653 Statut Contributeur 1 847
 
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 1249 Statut Membre 246
 
Clair et limpide, chapeau bonne explication, je ne savais pas qu'on pouvait procéder de la sorte ...
0
nouabi Messages postés 147 Statut Membre 8
 
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 147 Statut Membre 8
 
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 147 Statut Membre 8
 
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 11653 Statut Contributeur 1 847
 
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 147 Statut Membre 8
 
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 11653 Statut Contributeur 1 847
 
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 147 Statut Membre 8
 
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