[Debian] iptables/squid - "redirect"+"transparenter proxy" Problem [gelöst]

Geini

GSM Surfer
ID: 42707
L
28 Mai 2006
401
17
Hi,

sitze hier schon seit wochen und versuch mein Debian Gateway/proxy einzurichten, nachdem ich mich mit kleinen fehlern beim Routing und NAT rumgeärgert hatte, häng ich nun beim Proxy fest..
irgendwie scheint das umleiten des ports ( 80 -> 3128 ) nicht zu funktionieren..
hab schon stunden mit google gerungen, und diverse Foren durchstöbert, doch ich finde einfach keine Lösung :-? (vllt. auch nur falsch gesucht.. ka)
Mache da wohl irgendwo nen denkfehler, oder hab irgendwas vergessen.. Nur komm ich da jetzt nicht mehr weiter und trete auf der stelle :-?
Brauch unbedingt den entscheidenen Tipp oder denkanstoß.....


Debian 40r1
squid 2.6.5-6etch1
iptables 1.3.6.0debian1-5


Also ich versuch mal genauer auf das Problem einzugehen... wenn ihr noch info´s braucht, etc. dann einfach anfordern ;)

Debain als Gateway/Router/Proxy/Webserver für mehrere Netze.

WAN ~ Router(FritzBox) - Gateway/Proxy ~ Clients
Also muss das system einmal das Routing übernehmen, und zudem soll es den http-traffic durch den Proxy schleusen.. und selbst einen http-server zur verfügung stellen können.

Grundlegend wollte ich alle zugriffsbeschränkungen über die IP-tables regeln..
fand ich für mich als gute möglich, alles in einem abzuhandeln.
(funktioniert auch alles soweit, bis auf den transparenten Proxy!)

Der http-traffic aus dem Client-LAN soll dann über den Proxy geschleust werden (später noch über ne blacklist... aber eins nach dem anderen :biggrin:)
und das ganze dann als transparenten Proxy...
Die Ports (und weiterleitungen) für andere anwendungen sollten dann einfach über die iptables geregelt werden.

Wenn ich den Proxy manuell im Browser vergebe, klappt alles wie gewünscht!!
aber sobald ich den Proxy auf transparent stelle,bzw. die Port-Redirection einschalte, will´s irgendwie nicht mehr..
also ich habe keine ahnung, ob der "redirect" Eintrag fehlerhaft ist, oder die Squidconfig nicht stimmt.. oder was auch immer :yawn:
hab da jedenfalls ne ganze menge ausprobiert (zuletzt neu aufgesetzt um wieder auf stand "0" zu sein :roll: )

Ich werd mal versuchen, die relevanten einstellungen raus zu suchen. Und da ich ja schon sagte, dass ich nicht weiß woran es liegt, werd ich mal nicht sparsam sein :ugly:

......

(schipsel aus meiner txt, die ich in der shell durchrattern lasse ;) )

die module:
Code:
/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
#/sbin/modprobe ip_conntrack_irc
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp
#/sbin/modprobe ip_nat_irc

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

meine zuweisungen, sonst wisst ihr gleich nicht was, was ist 8)
Code:
External Network (WAN/Internet)
EXTIF="eth0"
internal network #1 (Client LAN)
INTIF="eth1"
danach diverse grundlegende einstellungen, wie das masquerading, freien zugriff für loccalhost, DNS, etablished und related verbindungen, ssh,..etc. pp...

iptable policy:
jeweils nur "INPUT" und "OUTPUT" [DROP].
"Forward" mit [ACCEPT]

dann http nach außen
Code:
iptables -A OUTPUT -j ACCEPT -m state --state NEW -o $EXTIF -p tcp -m multiport --dport 80,443
iptables -A INPUT -p tcp -i $INTIF -m multiport --dport 80,443 -m state --state NEW -j ACCEPT

dann einmal freigabe für direkten Proxy-zugriff (damit geht der Proxy)
Code:
#iptables -A INPUT -p tcp -i $INTIF -m state --state NEW --dport 3128 -j ACCEPT
#iptables -A OUTPUT -p tcp -o $INTIF -m state --state NEW --sport 3128 -j ACCEPT


und hier wohl die Fehlerhafte stelle:
Code:
iptables -t nat -A PREROUTING -i $INTIF -p tcp --dport 80  -j REDIRECT --to-port 3128 


iptables -A OUTPUT -p tcp -o $EXTIF --sport 3128 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -j ACCEPT -m state --state NEW -o $EXTIF -p tcp --sport 3128
(wegen "OUTPUT" bin ich mir nicht sicher, hatte ich nur überall zur sicherheit vorsichtshalber beigefügt.. um sowas erstmal auszuschließen.. -- unnötige "freigaben" kann man schneller ausprobieren :ugly: )

hier wollte ich jedenfalls einfach den http-verkehr nach 3128 (Squid-Proxy) umleiten, also transparent machen..
jedoch sollte später die möglichkeit bestehen, auf den localen apache (auch Port 80) zuzugreifen!
hatte da diese lösung probiert:
Code:
iptables -t nat -A PREROUTING -i $INTIF -p tcp --dport 80 -j REDIRECT --to-port 3128 -d ! $INTIP

Was nur seltsam ist, dass Webmin 10000 bei den ganzen versuchen teilw. irgendwie blockiert wurde.. teilw. nur vom externen Netz und auch mal nur vom internen...
SSH dagegen läuft fast immer, was ich auch schon komisch finde, da ssh und webmin die selbe freigabeweise haben und ich anisch nur die port 80 umleitung in der mache hatte
Code:
#+-------------- Allow SSH (Port 22) ------------------+
iptables -A INPUT -p tcp -i $EXTIF --dport 22 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p tcp -o $EXTIF --sport 22 -m state --state NEW -j ACCEPT 
iptables -A INPUT -p tcp -i $INTIF --dport 22 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p tcp -o $INTIF --sport 22 -m state --state NEW -j ACCEPT 
#
#+----------- Allow Webmin (Port 10000) ---------------+
iptables -A INPUT -p tcp -i $EXTIF --dport 10000 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p tcp -o $EXTIF --sport 10000 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp -i $INTIF --dport 10000 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p tcp -o $INTIF --sport 10000 -m state --state NEW -j ACCEPT
#
......

So, dass zu den iptables ^^ (uiuiui, dat wird n langes posting :sing::oops: )


Nun zur Squidconfig, wo ich den Fehler jetzt einfach mal vermute (wegen des transparent-mode)

Code:
http_port 3128 transparent
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
access_log /var/log/squid/access.log
hosts_file /etc/hosts
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow all
http_reply_access allow all
icp_access allow all
cache_effective_user proxy
cache_effective_group proxy
coredump_dir /var/spool/squid
Proxy lauscht auf 3128 und arbeitet transparent

habe in diversen foren, etc. diese zusätzlichen optionen gefunden, kann diese aber nciht anwenden... fehlt mir da vllt. was, bzw. würde es dann durch diese optionen laufen???
* httpd_accel_host virtual
* httpd_accel_port 80
* httpd_accel_with_proxy on
* httpd_accel_uses_host_header on


vllt. findet ihr ja ne ungereimtheit oder sogar des Rätsel´s Lösung...
ich habe jedenfalls schon alles mögliche probiert.. lief auch irgenwann mal "kurz" :roll: (glaub ich zumindest... )... <- waren laaange abende, mit stundenlangen probieren, ändern, lesen, ändern, probieren :sick:.... 8)


also werd ich´s dabei erstmal belassen :mrgreen:
ist ja schonmal viel Input, und vllt. reicht es ja schon... (hoffe, hab nicht zu viel unwichtiges mit reingepackt, und nichts wichtiges vergessen :roll: )

mir raucht jetzt jedenfalls schon wieder der kopf ^^ hab mittlerweile so viele versuche abgespeichert, da weiß ich schon garnicht mehr, was was war :roll:
und von den vielen Tabs zu dem Thema ganz zu schweigen :biggrin:
ohne eure hilfe komm ich da nicht mehr weiter :yawn:

Vllt. kann mir ja einer von euch den entscheidenen Tipp geben ;)

ggf. kann ich auch die kompletten confs. per PN oder mail verschicken, das sich die jmd. mal komplett anschaut...
würd mich auch freuen, wenn sich jmd. bereiterklären könnte, später die "firewall"-config durchzusehen, ob ich die beschränkungen korreckt gesetzt hab oder irgendwelch andere "fehler" gemacht hab.... aber erstmal muss es laufen 8)

jedenfalls hoff ich jetzt erstmal, das ich den proxy demnächst mal in betrieb nehmen kann :pray: 8)


Vielen Dank schonmal!!!!
 
Zuletzt bearbeitet:

Geini

GSM Surfer
ID: 42707
L
28 Mai 2006
401
17
Der Parameter für Redirect ist afaik "--to-ports p1-[p2]"

nee, oder :roll:
das waer's ja.... kann ich heute leider nicht mehr testen..
aber werd's damit mal probieren ;)

sowas aber auch ^^
wie ich's mir gedacht hatte... nur ein kleiner dummer fehler :roll:


also, dank dir erstmal.. ich berichte, ob's das war ;)
und falls noch jemanden was anderes auffaellt, immer her damit... bin fuer alle verbesserungsvorschlaege offen :biggrin: