transparenter squid - rdr-problem

Ich habe auf ner 2. Maschine nen Squid aufgesetzt, den ich gerne transparent hätte. Die Squid-config stimmt so weit. Wenn ich den Proxy händisch im Browser des Clients configuriere kann ich auch wunderbar surfen, nur sobald ich den proxy transparent nutzen möchte bekomm ich beim Seitenaufbau nen timeout.

rdr-rule:
Code:
rdr on $int_if proto tcp from ! 192.168.0.254 to any port {80} -> 192.168.0.254 port 8080
.254 ist die IP des proxys

Ich habe nun mal mit tcpdump mitgelauscht.
Client startet ne Anfrage, die kommt beim router an. Dieser leitet die auf :8080 auf den proxy um. Dieser schnackt mit dem router und holt sich die Daten übers Internetz. Nun will der Proxy die Daten an den Client liefern, und genau hier vermute ich das Problem. Der Client wartet nämlich auf Pakete vom Webserver. Wenn aber die Pakete vom Proxy mit dessen IP als sorce kommen, sacht der nur "Pfft, was soll das denn, mit dem habe ich nix am Hut" und schmeißt die Dingers wech.

Ich müsste wohl nun noch irgendwie dafür sorgen, dass der router sowohl Source- als auch Destination-IP umschreibt.
Nur - wie?
 
Zuletzt bearbeitet:
Die Umleitung der Pakete auf den Squid reicht aus, um einen transparenten Proxy zu betreiben. Nach Deiner Beschreibung tippe ich eher auf die squid.conf und nicht auf den Redirect der Firewall. Ich hab bei mir folgende Eintraege in der squid.conf und soweit funktioniert das auch.

Code:
httpd_accel_host virtual
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

HTH
 
danke für die schnelle antwort, aber daran liegt's leider nicht.

meine squid.conf
http_port 8080
visible_hostname proxy.schlossfeld.de
cache_mgr keller@schlossfeld.de
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
acl all src 0.0.0.0/0.0.0.0
acl our_networks src 192.168.0.0/24
acl localhost src 127.0.0.1
http_access allow our_networks
http_access allow localhost
http_access deny all

#don't proxy local hosts
acl local_hosts dst 192.168.0.0/255.255.255.0
never_direct deny local_hosts
never_direct allow all
 
nimm mal das hier raus

#don't proxy local hosts
acl local_hosts dst 192.168.0.0/255.255.255.0
never_direct deny local_hosts
never_direct allow all

haste auch pass in/out fuer den port in firewall drin?

pass in on $int_if inet proto tcp from any to 127.0.0.1 port 3128 keep state
pass out on $ext_if inet proto tcp from any to any port www keep state

und bist du dir sicher das du den squid transparent gebaut hast?

mfg marvin
 
Marvin schrieb:
nimm mal das hier raus

#don't proxy local hosts
acl local_hosts dst 192.168.0.0/255.255.255.0
never_direct deny local_hosts
never_direct allow all

keine veränderung

Marvin schrieb:
haste auch pass in/out fuer den port in firewall drin?

pass in on $int_if inet proto tcp from any to 127.0.0.1 port 3128 keep state
pass out on $ext_if inet proto tcp from any to any port www keep state[/quote]

genau so hab' ich's drin. Mir viel aber gerade auf, dass das _so_ ja nicht gehn kann, oder? Müsste doch dann heißen:

Code:
pass in on $int_if inet proto tcp from any to 192.168.0.254 port 8080 keep state
pass out on $ext_if inet proto tcp from any to any port 80 keep state

edit: tut so aber auch nicht

Marvin schrieb:
und bist du dir sicher das du den squid transparent gebaut hast?

Das Ding läuft auf nem Debian Sarge, also einfach mit apt-get install squid installiert.

edit: hab' ihn jetzt nochmal von Hand aus den sourcen kompiliert, mit --enable-linux-netfilter (weil er auf ner linux-kiste läuft). Keine Veränderung.
 
Zuletzt bearbeitet:
o.0 debian kein plan.
ich hab das so und zwar genau so mehr als einmal auf openbsd und freebsd am laufen und zum laufen gebracht.
weis nich was da put bei dir is. was nutz du als firewall? ich hab von linux keinen blassen schimmer.

mfg marvin
 
nicht falsch verstehn :)
Als firewall läuft ne BSD-Kiste mit pf. Lediglich der proxy läuft auf ner 2. Kiste mit Debian.

Wie schaut bei dir denn das setup aus? Proxy und Firewall auch auf 2 unterschiedlichen Maschinen? Denn das scheint mir ja das eigentliche Problem zu sein. Wenn der Proxy auch auf der firewall-maschine laufen würde, hätte ich das Problem warscheinlich nicht. Ist aber Hardware-Bedingt nicht machbar.

Naja, dann werd' ich halt einfach jeglichen Traffic auf :80 blocken und die User so zwingen den proxy zu nutzen (bin ich gemein? :) )
Ich bastel da nun schon viel zu lange dran rum...
 
also ich habs verschieden laufen aber derzeit auch auf 2 maschinen weil der router/firewall is nen cisco 1721 durch E1 leitung und bei mir tut das prima. Aber ich hab das auch schon in sehr vielen anderen einrichtungen so aufgebaut ohne probleme. Ich weis halt nich ob der proxy von debian wirklikch schon transparent is.
 
ahso du solltest auch mal schaun das der proxy nich von der firewall zurueck geschickt wird vom port 80 an sich selber!
 
also der debian squid is per default auch als transparent lauffaehig.
tail mal deine access.log vom squid und schau mal was da passiert.
 
Marvin schrieb:
ahso du solltest auch mal schaun das der proxy nich von der firewall zurueck geschickt wird vom port 80 an sich selber!

nö, den hab' ich von der rdr-regel ja ausgenommen (falls du das meintest)

Code:
rdr on $int_if proto tcp from ! 192.168.0.254 to any port {80} -> 192.168.0.254 port 8080

Edit: wie ich vorhin noch angefügt hatte, hab den proxy ja nochmal neu aus den sourcen gebaut und als option eben gesagt, er möge bitte transparent sein - half aber auch nix

Marvin schrieb:
also der debian squid is per default auch als transparent lauffaehig.
tail mal deine access.log vom squid und schau mal was da passiert.

nix - genau das ist's ja. Wenn ich den proxy transparent betreibe wird _nix_ in die access.log geschrieben.
 
Der Debian Squid ist fuer transparenten Einsatz kompiliert, zumindest hatte ich da bisher keine Probleme mit.
Der transparente Proxy funktioniert auch, wenn der Proxy nicht auf der Firewall Maschine laeuft.

Ich tippe immer noch, dass die squid.conf kaputt ist. Hast Du eine eigene Config genommen, oder hast Du die mitgelieferte Debian Config angepasst?

Wichtig ist auch, dass die Browser HTTP/1.1 verwenden.
 
xbit: ich hab noch keinen browser gesehen mit dem transparent proxying nich geht.
funzt unter windows, freebsd, osx mit verschiedenen browsern von IE bis Opera bis zu Camino ohne probleme.
 
probiers mal in der config mal nur mit den folgenden einstellungen und mach alles andere was du rein gemacht mal raus

http_port 10.0.0.1:8080
http_access deny to_localhost
acl our_networks src 10.0.0.0/8
http_access allow our_networks
visible_hostname insomnia.benzedrine.cx
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

ich denke naemlich auch das du deine config zerhaemmert hast.
 
Marvin schrieb:
xbit: ich hab noch keinen browser gesehen mit dem transparent proxying nich geht.
funzt unter windows, freebsd, osx mit verschiedenen browsern von IE bis Opera bis zu Camino ohne probleme.

Ich wollte auch nur sichergehen, dass es nicht daran liegt. ;)
 
Zurück
Oben