squid Reverse Proxy: Ip der Nutzer anzeigen
-
- Posts: 65
- Joined: 2007-10-01 20:17
squid Reverse Proxy: Ip der Nutzer anzeigen
Guten Tag,
ich benutze Squid als Reverse Proxy vor meinen Apache 2 Servern.
Nun wollte ich wissenw as ich in squid oder wahlweise pound in der config eintragen muss damit er die IP des Users mitliefert.
Wenn man nur eine IP hat mit denen meine Scirpts arbeiten können ist das sehr doof da einige Funktionen dann völlig durchdrehen.
Gruß
ich benutze Squid als Reverse Proxy vor meinen Apache 2 Servern.
Nun wollte ich wissenw as ich in squid oder wahlweise pound in der config eintragen muss damit er die IP des Users mitliefert.
Wenn man nur eine IP hat mit denen meine Scirpts arbeiten können ist das sehr doof da einige Funktionen dann völlig durchdrehen.
Gruß
-
- Administrator
- Posts: 2643
- Joined: 2004-01-21 17:44
Re: squid Reverse Proxy: Ip der Nutzer anzeigen
Was verstehst Du unter "mitliefern"? Soll die IP des originären Client als X-Forwareded-For im HTTP-Header erscheinen, oder geht es um den Host-Header - oder meinst Du noch etwas ganz anderes?
“Some humans would do anything to see if it was possible to do it. If you put a large switch in some cave somewhere, with a sign on it saying 'End-of-the-World Switch. PLEASE DO NOT TOUCH', the paint wouldn't even have time to dry.” — Terry Pratchett, Thief of Time
-
- Posts: 65
- Joined: 2007-10-01 20:17
Re: squid Reverse Proxy: Ip der Nutzer anzeigen
Ich wieß nicht genau auf welche Art der Übertragung da zurückgegriffen wird, aber ich möchte das z.b. in den Apache2 Logs oder in den vBulletin logs etc. die tatsächliche IP ersichtlich ist und nicht die IP des Servers auf dem Squid läuft.
Auf der anderen Seite hätte ich gerne das die Clients möglichst wenig von Squid sehen, also das im Header zum Client hin nichts von Squid oder der eigl. Server IP sehen.
Gruß
Auf der anderen Seite hätte ich gerne das die Clients möglichst wenig von Squid sehen, also das im Header zum Client hin nichts von Squid oder der eigl. Server IP sehen.
Gruß
-
- Administrator
- Posts: 2643
- Joined: 2004-01-21 17:44
Re: squid Reverse Proxy: Ip der Nutzer anzeigen
Das erreichst Du, indem Du das Logging auf dem Applikations-Apachen anpasst (und nur so, dass es eben die Natur eines Proxy ist, anstelle des tatsächlichen Client die Anfrage an den Webserver zu stellen):IncheZ wrote:Ich wieß nicht genau auf welche Art der Übertragung da zurückgegriffen wird, aber ich möchte das z.b. in den Apache2 Logs oder in den vBulletin logs etc. die tatsächliche IP ersichtlich ist und nicht die IP des Servers auf dem Squid läuft.
Code: Select all
LogFormat "%{X-Forwarded-For}i %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
Welche Spuren hinterlässt Squid denn, die Dich stören? Ich bin mit Squid nicht so furchtbar fit, aber die Manipulationsmöglichkeiten, die ein auf Apache basierender Reverse Proxy mit mod_proxy, mod_proxy_http und mod_headers bietet, sollte sich doch mit Squid auch umsetzen lassen.IncheZ wrote:Auf der anderen Seite hätte ich gerne das die Clients möglichst wenig von Squid sehen, also das im Header zum Client hin nichts von Squid oder der eigl. Server IP sehen.
Stichworte hierfür: Content Adaption, reply_header_access
“Some humans would do anything to see if it was possible to do it. If you put a large switch in some cave somewhere, with a sign on it saying 'End-of-the-World Switch. PLEASE DO NOT TOUCH', the paint wouldn't even have time to dry.” — Terry Pratchett, Thief of Time
-
- Posts: 65
- Joined: 2007-10-01 20:17
Re: squid Reverse Proxy: Ip der Nutzer anzeigen
Also muss ich diese ändertungen von LogFormat in der apache conf oder in der vonsquird vornehmen?jfreund wrote:Das erreichst Du, indem Du das Logging auf dem Applikations-Apachen anpasst (und nur so, dass es eben die Natur eines Proxy ist, anstelle des tatsächlichen Client die Anfrage an den Webserver zu stellen):IncheZ wrote:Ich wieß nicht genau auf welche Art der Übertragung da zurückgegriffen wird, aber ich möchte das z.b. in den Apache2 Logs oder in den vBulletin logs etc. die tatsächliche IP ersichtlich ist und nicht die IP des Servers auf dem Squid läuft.Code: Select all
LogFormat "%{X-Forwarded-For}i %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
Welche Spuren hinterlässt Squid denn, die Dich stören? Ich bin mit Squid nicht so furchtbar fit, aber die Manipulationsmöglichkeiten, die ein auf Apache basierender Reverse Proxy mit mod_proxy, mod_proxy_http und mod_headers bietet, sollte sich doch mit Squid auch umsetzen lassen.IncheZ wrote:Auf der anderen Seite hätte ich gerne das die Clients möglichst wenig von Squid sehen, also das im Header zum Client hin nichts von Squid oder der eigl. Server IP sehen.
Stichworte hierfür: Content Adaption, reply_header_access
Und sehe Webapps wie vBulletin dann auch wieder die User IP. Denn ohne die UserIP hat man arge Probleme mit IP Bans, Spam Schutz etc.
Gruß
-
- Project Manager
- Posts: 11190
- Joined: 2003-02-27 01:00
- Location: Hamburg
Re: squid Reverse Proxy: Ip der Nutzer anzeigen
httpd.confIncheZ wrote:Also muss ich diese ändertungen von LogFormat in der apache conf oder in der vonsquird vornehmen?
Das muss die jeweilige Applikation selbst unterstützen und diese dann entsprechend konfiguriert werden.IncheZ wrote:Und sehe Webapps wie vBulletin dann auch wieder die User IP. Denn ohne die UserIP hat man arge Probleme mit IP Bans, Spam Schutz etc.
PayPal.Me/JoeUser ● FreeBSD Remote Installation
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
-
- Administrator
- Posts: 2643
- Joined: 2004-01-21 17:44
Re: squid Reverse Proxy: Ip der Nutzer anzeigen
Die IP können die Applikationen prinzipbedingt nicht sehen. Als Möglichkeit bleibt nur, entweder auf den Host-Header zurückzugreifen oder auf X-Forwarded-For. Die meisten Webapplikationen können letzteres nicht, wohl aber ersteres. Damit der Host-Header auf dem Proxy so gesetzt wird, dass er dem anfragenden Client entspricht, braucht's aber ein bisschen Konfiguration auf dem Proxy. Wie das Squid-Pendant zu ProxyPreserveHost (Apache) aussieht, darfst Du Dir gerne selber aus der Doku fischen.IncheZ wrote:Und sehe Webapps wie vBulletin dann auch wieder die User IP. Denn ohne die UserIP hat man arge Probleme mit IP Bans, Spam Schutz etc.
“Some humans would do anything to see if it was possible to do it. If you put a large switch in some cave somewhere, with a sign on it saying 'End-of-the-World Switch. PLEASE DO NOT TOUCH', the paint wouldn't even have time to dry.” — Terry Pratchett, Thief of Time
-
- Posts: 65
- Joined: 2007-10-01 20:17
Re: squid Reverse Proxy: Ip der Nutzer anzeigen
Okay, Vielen Dank an euch.
Könnt ihr mir zu guter letzt vielleicht noch sagen ob ich was konkret an vBulletin umstellen muss damit es mit Host Header klarkommt.
Gruß
Könnt ihr mir zu guter letzt vielleicht noch sagen ob ich was konkret an vBulletin umstellen muss damit es mit Host Header klarkommt.
Gruß
-
- Administrator
- Posts: 2643
- Joined: 2004-01-21 17:44
Re: squid Reverse Proxy: Ip der Nutzer anzeigen
Durchsuche den Quellcode noch $_SERVER['REMOTE_ADDR'] und $_SERVER['REMOTE_HOST'] - an den Stellen müsste auf $_SERVER['HTTP_HOST'] bzw. dessen Reverse DNS-Auflösung zurückgegriffen werden. Wenn Du auf die IP aus X-Forwarded-For zurückgreifen willst, bleibt nur apache_request_headers() (funktioniert nur mit mod_php, nicht mit (Fast)CGI!)
“Some humans would do anything to see if it was possible to do it. If you put a large switch in some cave somewhere, with a sign on it saying 'End-of-the-World Switch. PLEASE DO NOT TOUCH', the paint wouldn't even have time to dry.” — Terry Pratchett, Thief of Time
-
- Posts: 65
- Joined: 2007-10-01 20:17
Re: squid Reverse Proxy: Ip der Nutzer anzeigen
So, also ich habe auf dem Server auf dem vBulletin läuft die änderung in der apache2.conf gemacht und habe mir jetzt mal die loggs angeschaut.
Ich hab immernoch nur die IP vom Squid System drinne...
Es läuft fcgi.
Kann mir jemand sagen woran es vielleicht liegen könnte.
Bzw empfehlt ihr mir eher apache als Reverse Proxy bzw ist mein Vorhaben damit einfacher zu vollziehen?
Ich hatte vorher eigl. sehr zu meiner zufriedenheit pound laufen, allerdings habe ich dort überhaupt keine Option gefunden um die IPs der User bis zum vB zu kriegen, pound lief meines erachtens aber wesendlich stabiler als squid.
Gruß
Ich hab immernoch nur die IP vom Squid System drinne...
Es läuft fcgi.
Kann mir jemand sagen woran es vielleicht liegen könnte.
Bzw empfehlt ihr mir eher apache als Reverse Proxy bzw ist mein Vorhaben damit einfacher zu vollziehen?
Ich hatte vorher eigl. sehr zu meiner zufriedenheit pound laufen, allerdings habe ich dort überhaupt keine Option gefunden um die IPs der User bis zum vB zu kriegen, pound lief meines erachtens aber wesendlich stabiler als squid.
Gruß
-
- Administrator
- Posts: 2643
- Joined: 2004-01-21 17:44
Re: squid Reverse Proxy: Ip der Nutzer anzeigen
Bitte Log-relevante Teile der httpd.conf (und ggf. der vhost-Konfiguration) posten.
“Some humans would do anything to see if it was possible to do it. If you put a large switch in some cave somewhere, with a sign on it saying 'End-of-the-World Switch. PLEASE DO NOT TOUCH', the paint wouldn't even have time to dry.” — Terry Pratchett, Thief of Time
-
- Administrator
- Posts: 2643
- Joined: 2004-01-21 17:44
Re: squid Reverse Proxy: Ip der Nutzer anzeigen
Transparent macht bei Reverse Proxies keinen Sinn - der Client hält ja aufgrund der DNS-Einträge den Proxy für den tatsächlichen Ziel-Host.
“Some humans would do anything to see if it was possible to do it. If you put a large switch in some cave somewhere, with a sign on it saying 'End-of-the-World Switch. PLEASE DO NOT TOUCH', the paint wouldn't even have time to dry.” — Terry Pratchett, Thief of Time
-
- Posts: 65
- Joined: 2007-10-01 20:17
Re: squid Reverse Proxy: Ip der Nutzer anzeigen
Also der Server läuft mit ISPCP.
Dementsprechend poste ich euch mal die ispcp.conf aus /etc/apache2/sites-enabled
Oben habt ihr die log Settings, das andere vom entsprechenden vhost.
Gruß
P.S: Wie gesagt, kennt jemand eine Alternative, oder gibt es im zweifelsfall sogar eine Möglichkeit pound so zu konfigurieren.
Dementsprechend poste ich euch mal die ispcp.conf aus /etc/apache2/sites-enabled
Code: Select all
# httpd Data BEGIN.
#
# wget-hack prevention
#
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^LWP::Simple
RewriteRule ^/.* http://%{REMOTE_ADDR}/ [L,E=nolog:1]
</IfModule>
#
# Log processing.
#
LogFormat "%{X-Forwarded-For}i %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%B" traff
LogFormat "%v %b %h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" ispcplog
CustomLog "| /var/www/ispcp/engine/ispcp-apache-logger" ispcplog
ErrorLog "| /var/www/ispcp/engine/ispcp-apache-logger -e"
#
# mod_cband configuration
#
<IfModule mod_cband.c>
CBandScoreFlushPeriod 10
CBandRandomPulse On
</IfModule>
#
# let the customer decide what charset he likes to use
#
AddDefaultCharset Off
#
# Header End
#
Code: Select all
# httpd [board.xxx.de] sub entry BEGIN.
<VirtualHost 212.123.123.123:80>
#
#User vu2002
#Group vu2002
#
<IfModule suexec_module>
SuexecUserGroup vu2002 vu2002
</IfModule>
ServerAdmin webmaster@xxx.de
DocumentRoot /var/www/virtual/xxx.de/board/htdocs
ServerName board.xxx.de
ServerAlias www.boardxxx.de board.xxx.de *board.xxx.de
Alias /errors /var/www/virtual/xxx.de/errors/
ErrorDocument 401 /errors/401.html
ErrorDocument 403 /errors/403.html
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.html
ErrorDocument 503 /errors/503.html
<IfModule mod_cband.c>
CBandUser xxx.de
</IfModule>
# httpd sub entry cgi support BEGIN.
ScriptAlias /cgi-bin/ /var/www/virtual/xxx.de/board/cgi-bin/
<Directory /var/www/virtual/xxx.de/board/cgi-bin>
AllowOverride AuthConfig
#Options ExecCGI
Order allow,deny
Allow from all
</Directory>
# httpd sub entry cgi support END.
<Directory /var/www/virtual/xxx.de/board/htdocs>
# httpd sub entry PHP support BEGIN.
# httpd sub entry PHP support END.
Options -Indexes Includes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
# httpd sub entry PHP2 support BEGIN.
<IfModule mod_php5.c>
php_admin_value open_basedir "/var/www/virtual/xxx.de/:/var/www/virtual/xxx.de/phptmp/:/usr/share/php/"
php_admin_value upload_tmp_dir "/var/www/virtual/xxx.de/phptmp/"
php_admin_value session.save_path "/var/www/virtual/xxx.de/phptmp/"
php_admin_value sendmail_path '/usr/sbin/sendmail -f vu2002 -t -i'
</IfModule>
<IfModule mod_fastcgi.c>
ScriptAlias /php5/ /var/www/fcgi/xxx.de/
<Directory "/var/www/fcgi/xxx.de">
AllowOverride None
Options +ExecCGI -MultiViews -Indexes
Order allow,deny
Allow from all
</Directory>
</IfModule>
<IfModule mod_fcgid.c>
<Directory /var/www/virtual/xxx.de/board/htdocs>
FCGIWrapper /var/www/fcgi/xxx.de/php5-fcgi-starter .php
Options +ExecCGI
</Directory>
<Directory "/var/www/fcgi/xxx.de">
AllowOverride None
Options +ExecCGI MultiViews -Indexes
Order allow,deny
Allow from all
</Directory>
</IfModule>
# httpd sub entry PHP2 support END.
Include /etc/apache2/ispcp/board.xxx.de.conf
</VirtualHost>
# httpd [board.xxx.de] sub entry END.
Gruß
P.S: Wie gesagt, kennt jemand eine Alternative, oder gibt es im zweifelsfall sogar eine Möglichkeit pound so zu konfigurieren.
-
- Administrator
- Posts: 2643
- Joined: 2004-01-21 17:44
Re: squid Reverse Proxy: Ip der Nutzer anzeigen
OK, das erklärt dein Logging-"Problem": Du hast zwar für das combined-Format definiert, dass X-Forwarded-For verwendet werden soll, verwendst aber das ispcplog-Format:
Also musst Du eben das ispcplog-Format anpassen:
Wenn ich keine Tomaten auf den Augen habe (nicht auszuschließen um diese Uhrzeit
), dann ist für den VHost kein individuelles Logging konfiguriert. Dazu könntest Du noch sowas in den virtuellen Host einbauen:
Das combined-Format hast Du ja bereits an zentraler Stelle umdefiniert...
Code: Select all
CustomLog "| /var/www/ispcp/engine/ispcp-apache-logger" ispcplog
Code: Select all
LogFormat "%v %b %{X-Forwarded-For}i %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" ispcplog
Code: Select all
ErrorLog /var/www/virtual/xxx.de/log/error.log
CustomLog /var/www/virtual/xxx.de/log/access.log combined
“Some humans would do anything to see if it was possible to do it. If you put a large switch in some cave somewhere, with a sign on it saying 'End-of-the-World Switch. PLEASE DO NOT TOUCH', the paint wouldn't even have time to dry.” — Terry Pratchett, Thief of Time
-
- Posts: 65
- Joined: 2007-10-01 20:17
Re: squid Reverse Proxy: Ip der Nutzer anzeigen
Okay, vielen Dank, das hat schonmal das Problem gelößt.
Jetzt die andere Frage, wie oft und in welchen Datein taucht $_SERVER['HTTP_HOST'] auf.
Bzw gäbe es nicht noch eine simplere Lösung um das ganze auf vB oder sogar auf allen Script lauffähig zu machen.
Gruß
Jetzt die andere Frage, wie oft und in welchen Datein taucht $_SERVER['HTTP_HOST'] auf.
Bzw gäbe es nicht noch eine simplere Lösung um das ganze auf vB oder sogar auf allen Script lauffähig zu machen.
Gruß
-
- Project Manager
- Posts: 11190
- Joined: 2003-02-27 01:00
- Location: Hamburg
Re: squid Reverse Proxy: Ip der Nutzer anzeigen
Nein.IncheZ wrote:Bzw gäbe es nicht noch eine simplere Lösung um das ganze auf vB oder sogar auf allen Script lauffähig zu machen.
PayPal.Me/JoeUser ● FreeBSD Remote Installation
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
-
- Posts: 65
- Joined: 2007-10-01 20:17
Re: squid Reverse Proxy: Ip der Nutzer anzeigen
Okay, Schade, naja, dann muss ich wohl in dne sauren Apfel beißen.
Kann mir jemand sagen in welchen Datein von vBulletin sich diese Anweisungen befinden.
Danke.
Gruß
Kann mir jemand sagen in welchen Datein von vBulletin sich diese Anweisungen befinden.
Danke.
Gruß
-
- Posts: 410
- Joined: 2008-03-12 05:36
Re: squid Reverse Proxy: Ip der Nutzer anzeigen
Zu vBulletin - dazu muss eine PHP Datei modifiziert werden - class_core.php
Dort in der Funktion fetch_ip - am Ende sollte dass so aussehen:
Selbiges gilt für andere PHP Scripte, normalerweise wird irgendwo ein HOST / REMOTE_ADDR oder ähnliches ausgelesen und verarbeitet, da die FORWARD Variable auslesen lassen.
Dort in der Funktion fetch_ip - am Ende sollte dass so aussehen:
Code: Select all
function fetch_ip() {
return $_SERVER ['HTTP_X_FORWARDED_FOR'];
}
-
- Posts: 150
- Joined: 2004-12-15 16:48
Re: squid Reverse Proxy: Ip der Nutzer anzeigen
Um die IP-Adresse eines Clients, der über einen Proxy reinkommt, sichtbar zu machen gibt es diverse Apache-Module:
- mod_rpaf
- mod_extract_forwarded
- mod_remoteip
(Gerade erst im Trunk => http://www.mail-archive.com/dev@httpd.a ... 43561.html)
Mit mod_rpaf habe ich (gute) Erfahrungen gemacht.
- mod_rpaf
- mod_extract_forwarded
- mod_remoteip
(Gerade erst im Trunk => http://www.mail-archive.com/dev@httpd.a ... 43561.html)
Mit mod_rpaf habe ich (gute) Erfahrungen gemacht.
-
- Posts: 65
- Joined: 2007-10-01 20:17
Re: squid Reverse Proxy: Ip der Nutzer anzeigen
Danke für eure überaus ausführliche Hilfe.
Ich habe es jetzt soweit perfekt hinbekommen.
Ich freue mich das es doch so hilfsbereite Menschen gibt :)
Gruß
Edit:
Sind die mod die du beschrieben hats nur für die apache log oder beziehen sie sich auf alle Scripte etc die dort laufen.
Ich habe es jetzt soweit perfekt hinbekommen.
Ich freue mich das es doch so hilfsbereite Menschen gibt :)
Gruß
Edit:
Sind die mod die du beschrieben hats nur für die apache log oder beziehen sie sich auf alle Scripte etc die dort laufen.