Bonsoir (ou bonjour vu l'heure),
Je tente de mettre en place depuis plusieurs semaines (mois ?) un système de proxy entre internet et un serveur web sur mon réseau local.
Il fonctionne déjà du réseau local vers Internet mais je cherche à faire l'inverse, que ce soit les Internautes qui passent par le proxy pour se rendre sur le serveur Web en Intranet.
Ca fonctionne assez bien. J'utilise un nat pour rendre transparent la redirection sur le proxy
iptables -t nat -D PREROUTING -i eth0 -p tcp -s --dport 80 -j DNAT --to-destination <mon_ip:3128
est présent pour ne pas impacter tout les internautes et ainsi faire des tests via une seule IP. Cette IP est sur un autre fournisseur d'accès, j'y accède via ssh où j'y utilise un links pour afficher mon serveur Web.
Mais le problème est que dans les journaux des logs du serveur apache en local, n'est visible uniquement l'adresse IP du proxy et non plus la réelle adresse IP de l'internaute.
J'ai pu comprendre que pour rendre ceci possible, il fallait faire un 'reverse proxy'….
Or, en suivant quelques tutos pour le squid.conf… que ce soit sous Squid 2.6 ou Squid 3.0 (j'ai installé les deux au cas ou), il me dit toujours que les arguments "httpd_accel_*" sont inconnus.
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
De plus, pour que ca soit possible, il faut que je précise toutes les adresses web hébergées dans le hosts de la machine proxy (près de 300 sites et une quinzaine de domaines). Au bout d'un certain nombre, le fichier /etc/hosts dit stop car il ne sait plus gérer autant d'arguments.
La machine proxy qui s'occupe du routage est également serveur DNS. Une personne qui interroge un site web depuis l'extérieur, arrive correctement sur le bon site, mais comme présentement, c'est le proxy qui interroge la page, et que l'adresse IP publique DNS du site correspond à l'interface WAN de la machine proxy/routeur, la requête n'aboutit jamais. Je passe actuellement via le fichier hosts pour mes tests.
Il me sera possible de passer par la suite via un second serveur DNS local, mais je trouve ça assez lourd et trop redondant, j'ai cru voir des réécriture d'URL depuis Squid mais je n'ai pas encore bien cherché à ce niveau. Ou alors le reverse proxy gère tout seul le retour en intranet.
Certains hébergeurs utilisent une telle solution, mais je ne vois pas comment faire simple. Et surtout, je souhaites garder le même nombre de machines.
Le réseau local est donc constitué d'un :
routeur/proxy/firewall/ids/ips/dns
serveur web/ftp/sql etc …
(une autre machine pour le serveur irc et une troisième machine pour tout ce qui est annexe à mes activitées…)
Je m'adresse surtout aux personnes qui ont déjà mis en place ce genre de solution. Pourriez vous me guider s'il vous plait ?
L'avantage d'une telle solution est ensuite de pouvoir filtrer par antivirus via les redirecteurs Squid, Squidguard sera également présent bien que un peu inutil du coté Internet>Intranet, mais qui sait … De plus, le filtrage de type mime sera possible, mot clefs, URL et gestion du débit et réduction de charge pour le serveur Web.
Merci d'avance.
# Pound
Posté par petit_bibi . Évalué à 1.
C'est un reverse-proxy leger, simple et efficace:
http://www.apsis.ch/pound
Dans le cas de pound, l'adresse ip réélle est transmise via le header
X-Forwarded-For.
Pour les logs d'apache il faut utiliser une réference tel que
%{X-Forwarded-For}i
(je ne me souviens plus précisement...)
[^] # Re: Pound
Posté par P.-A. . Évalué à 1.
[^] # Re: Pound
Posté par un compte supprimé . Évalué à 1.
Merci encore
[^] # Re: Pound
Posté par un compte supprimé . Évalué à 1.
L'intérêt d'utiliser squid étais de disposer d'un redirecteur sur l'antivirus.
Peut t'on alors ajouter à pound une analyse antivirus (avec havp par exemple), de mot clef etc comme pour squid ?
Merci d'avance -)
[^] # Re: Pound
Posté par un compte supprimé . Évalué à 1.
Je viens de trouver pour mettre le proxy Havp et DansGuardian en reverse proxy. Ils me permettent d'analyser la page à l'antivirus et de vérifier si son contenu n'est pas dangereux.
Ca fonctionne pratiquement pareil que pound sauf qu'ils ne font pas de load balancing, ce que je ne cherche pas à faire.
J'ai également ajouté le X-FORWARD-FOR dans les log de squid et j'ai bien l'adresse IP de la personne sur Internet. Dans les log, je peut placer l'adresse IP X(FORWARD-FOR à la place de la première adresse IP qui représente les IP simples.
Cependant voilà, avec un webanalyser qui se fie au log, ca fonctionne, mais du coup, la variable $_SERVER['REMOTE_ADDR'] php est faussée, il faut utiliser la variable d'environnement X-FORWARD-FOR mais mes 200 hébergés ne le savent pas. En plus de ça, tout les .htaccess par IP ne fonctionne plus et les statistiques des sites genres phpbb ne fonctionnent plus.
J'aimerrai savoir s'il est possible de modifier depuis les sources de httpd et placer le X-FORWARD-FOR dans REMOTE_ADDR.
Je sais que c'est forcément possible, c'est une question d'affectation, par contre, je ne sais pas où ça se trouve.
Pourriez vous m'aider sur ce point ?
Merci d'avance ^^ -)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.