squid mit iptables

Post Reply
Message
Author
arthur+schubert

squid mit iptables

#1 Post by arthur+schubert »

Hallo Leute,
hab einen Linux-Router der ein kleines Netzwerk mit dem Internet verbindet. alles läuft prima bis auf die Tatsache, dass ich die anfragen über Squid nicht hinbekomme. wie laufen die Pakete von Client zu Squid und ins Internet?
mit Ethereal auf den Client konnte ich herrausfinden dass die Pakete über ein sport >1023 und dport 8080 rausgehen. was auch ja logisch ist. ab da habe ich aber keine Ahnung wie das ganze weiter läuft. meine Annahme, dass das in Input mit sport >1023 und dport 8080 und in Output mit sport 8080 und dport http geht, schein nicht korrekt zu sein, da das ganze nicht läuft. wie sieht es mit source und Destination aus? kommt das paket in Input mit source = Client und Destination = gate bzw. in Output mit source = gate und Destination = www.xxxx.xx ?
hoffe konnte das ganze einigermaßen verständlich rüberbringen wenn nicht mailt mir einfach arthur.schubert@web.de

rattte

Re: squid mit iptables

#2 Post by rattte »

Anfrage Client Webserver:

von UP an 80

Antwort Webserver Client:

von 80 an UP

Gleiches gilt analog fuer den Squidproxy, und UP sind zufaellige unpreviligierte Ports ueber 1022


ratte

Schiermeier Andreas

Re: squid mit iptables

#3 Post by Schiermeier Andreas »

Hallo,

ich denke du willst einen transparenten Proxy machen?!?

iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j REDIRECT --to-ports 3128
damit schickst alles was über eth0 (dein LAN) reinkommt und an Port 80 (http) gerichtet ist
an Port 3128 (dein Squidport) weiter.

Im Squid brauchst dann die Zeilen:

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

MfG
Schiermi

Arthur Schubert

Re: squid mit iptables

#4 Post by Arthur Schubert »

Hallo Leute,
danke für die antworten. hab mich wohl ein wenig unverständlich ausgedrückt. Was nicht funktioniert war der Zugriff auf http und https über Squid (nicht transparent) mit meinen Iptables-Regeln über die OUTPUT- und INPUT-Chain. Der Fehler lag im Missverständnis bzw. Nichtverstehen der Funktionsweise eines Proxies.
Langer Rede kurzer Sinn:
1.
#Ausgehende Pakete bei bestehender Verbindung
$ipt -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ipt -A FORWARD -i $int -o $ext \
-m state --state ESTABLISHED,RELATED -j ACCEPT
echo "Ausgehende Pakete einer bestehender Verbindung => READY"
#
#Rueckkanal: eingehende Pakete zu einer bestehenden Verbindung
IW /sbin/myiprules_cache (Modi Row 96 Col 1 6:28 Ctrl-K H for help
$ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ipt -A FORWARD -i $ext -o $int \
-m state --state ESTABLISHED,RELATED -j ACCEPT
echo "Eingehende Pakete einer bestehenden Verbindung => READY"

2.
#FILTERREGELN FUER SQUID (OUTPUT- & INPUTCHAIN)
#----------------------------------------------
#dns fuer squid
IW /sbin/myiprules_cache (Modi Row 144 Col 1 6:28 Ctrl-K H for help
echo "SQUID ..."
foreach ns ($NS)
$ipt -A OUTPUT -o $ext -m state --state NEW -p UDP \
--sport $p_high -d $ns --dport domain \
-j ACCEPT
$ipt -A OUTPUT -o $ext -m state --state NEW -p TCP \
--sport $p_high -d $ns --dport domain \
-j ACCEPT
end
echo "DNS fuer SQUID => OK"
#
#client
$ipt -A INPUT -i $int -s $intern -p TCP --sport $p_high --dport $p_squid \
-m state --state NEW -j ACCEPT
echo "Client ueber SQUID => OK"
#
#squid
$ipt -A OUTPUT -o $ext -p TCP --sport $p_high --dport http\
-m state --state NEW -j ACCEPT
echo "SQUID @HTTP => OK"
$ipt -A OUTPUT -o $ext -p TCP --sport $p_high --dport https \
-m state --state NEW,ESTABLISHED,RELATED \
-j ACCEPT
echo "SQUID @HTTPS => OK"
echo "SQUID => READY"

wobei:
int = eth0
ext = ppp0
p_high = 1024:65535

Post Reply