strammschulte
Goto Top

transparenter Proxy mit Squid

opensuse 10.0

Hallo,
ich habe opensuse 10.0.
2 Netzwerkkarten (eth0=192.168.3.1;eth1 192.168.1.2)
an diesem Rechner ist über eth1 ein DSL-Modem angeschlossen (IP 192.168.1.1) und mit dsl0 konfiguriert.

die Schnittstelle eth0 macht für sein Netz DHCP-Server (192.168.3.10-192.168.3.20 mit Gateway 192.168.3.1).

Alle PCs sollen automatisch auf dem Proxy geleitet werden!

Habe in der squid.conf eingetragen:

http_port 192.168.1.2:3128

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on


und in der SuSEfirewall2

FW_DEV_EXT="dsl0 eth-id-00:e0:20:e3:db:d7" (eht-id==eht1->Schnittstelle zum DSL-Modem)
FW_DEV_INT="eth-id-00:c0:a8:f2:24:44" (eth0)
FW_ROUTE="yes"
FW_MASQUERADE="yes"
FW_SERVICES_EXT_TCP="domain http www"
FW_SERVICES_EXT_UDP="domain"

FW_SERVICES_INT_TCP="domain www 3128"
FW_SERVICES_INT_UDP="domain"

FW_REDIRECT="192.168.3.0/24,0/0,tcp,80,3128"

Das Problem ist: Wenn ein Client (z.B 192.168.3.20) den Proxy (192.168.1.2:3128) einträgt, kann er darüber ins Netz, alles läuft, wunderbar..
doch wenn der Client den Proxy raus nimmt und transparent ins Internet soll, kann er die Seite nicht finden und in der access.log von squid steht auch nichts.

Kann mir jemand weiterhelfen?

Danke im Voraus

Content-ID: 18891

Url: https://administrator.de/contentid/18891

Ausgedruckt am: 19.11.2024 um 09:11 Uhr

duddits
duddits 02.11.2005 um 20:17:58 Uhr
Goto Top
Hi,

kenne mich mit der SuSE Firewall nicht so aus, aber probier mal deine FW_REDIRECT="192.168.3.0/24,0/0,tcp,80,3128" um
FW_REDIRECT="192.168.3.0/24,0/0,tcp,80,3128 192.168.3.0/24,0/0,udp,80,3128 " zu erweitern.

Gruß duddits
Schlachter
Schlachter 02.11.2005 um 21:45:38 Uhr
Goto Top
hast du irgendeine Authentifizierungsmethode eingestellt? wenn squid transparent sein soll, dann geht das nur ohne Authentifizierung
strammschulte
strammschulte 03.11.2005 um 07:43:58 Uhr
Goto Top
Hi,

@ duddits: hab es ausprobiert. Leider funktioniert das so auch net.

@ schlachter: nein, es ist keine authentivizierung eingestellt.

ich glaube, dass muss an der firewall liegen.
duddits
duddits 03.11.2005 um 08:49:43 Uhr
Goto Top
Hi,

probiers mal mit iptables deaktivier dazu aber vorerst mal die SuSE Firewall:
  1. /sbin/iptables-firewall

  1. deklaration
IPT=$(which iptables)
INET=eth1
LAN=eth0

  1. Benoetigte Module laden
modprobe ip_tables &> /dev/null
modprobe ip_conntrack &> /dev/null
modprobe ip_conntrack_ftp &> /dev/null
modprobe ipt_state &> /dev/null
modprobe iptable_nat &> /dev/null
modprobe ipt_REJECT &> /dev/null
modprobe ipt_MASQUERADE &> /dev/null
modprobe ip_nat_ftp

  1. Alle alten Regeln löschen, anschließend die Default-Policy setzen
$IPT -F
$IPT -X
$IPT -F -t nat
  1. Wenn keine andere Regel greift, alles erlauben
$IPT-P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT

  1. Forwarding im Kernel aktivieren
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp

$IPT -t nat -A PREROUTING -p tcp -i $INET --dport 80 -j DNAT --to ip.des.gateways.eintragen:3128
  1. falls das nicht funktioniert probier:
#$IPT -t nat -A PREROUTING -i $INET -p tcp --dport 80 -j REDIRECT --to-port 3128

  1. Masquerading
iptables -t nat -A POSTROUTING -o $INET -j MASQUERADE

  1. neue Regel (block) erstellen
#
$IPT -N block
$IPT -A block -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A block -m state --state NEW -i ! $INET -j ACCEPT
$IPT -A block -j DROP

$IPT -A INPUT -j block
$IPT -A FORWARD -j block

  1. ende

Wenn das nicht funktioniert stelle ich mal mein Firewall-Script zur Verfügung.

Gruß duddits
strammschulte
strammschulte 03.11.2005 um 08:52:45 Uhr
Goto Top
Hi,
danke für deine Hilfe.

Hab den Bock gefunden:
in der Squid.conf steht unter http_port: 192.168.1.2:3128

das muss auf 192.168.3.1:3128 geändert werden, weil er das Netz der Clients filtern soll.

So klappt es bei mir.

Trotzdem nochmal DANKE für die Hilfe