PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : problem mit iptables DNAT



morpheus9
20.01.05, 15:58
Hallo,

ich möchte alle Anfragen, die von einer bestimmten SourceIP kommen zwangsweise auf einen Proxy umleiten. SourceIP und Proxy befinden sich im selben Class C.

Das Netz ist folgendermaßen aufgebaut.

Gateway(IP...1)<-Bridging Firewall (br0)->ClassC(IP...2-254)


iptables -t nat -I PREROUTING -i br0 -p tcp -s SourceIP/32 --dport 80 -j DNAT --to DESTIP:3128

Folgende Probleme
1. Ich bekomme bei allen anfragen auf Port 80 einen Timeout vom Browser gemeldet.
2. Ich finde die neu erstelle Rule in keiner chain.

iptables -L PREROUTING und iptables -L FORWARD taucht sie nicht auf.
selbst wenn ich ein iptables -L | grep IP/HOST absetze, finde ich die Rule nicht, obwohl sie etwas macht.

Löschen kann ich die Rule einfach mit

iptables -t nat -D PREROUTING -i br0 -p tcp -s SourceIP/32 --dport 80 -j DNAT --to DESTIP:3128
Dann kann ich auch wieder normal auf Port 80 surfen.

Ich dachte zuerst, dass es am Proxy liegt und haben anstattdessen einen normalen Webserver angegeben, mit dem selben Ergebnis.

Ich wäre wirklich dankbar, wenn mir jemand helfen könnte. Sitze schon den ganzen Tag daran und so langsam gehen mir die Ideen aus.

Danke.

geronet
20.01.05, 18:34
Probiers mal mit iptables -t nat -L ;)

Der Proxy muss dafür abar auch konfiguriert sein.

Grüsse, Stefan

mkahle
20.01.05, 18:55
bzgl. des Anzeigens der Regel: siehe Posting von geronet

Bzgl. des Funktionierens oder auch Nicht-Funktionierens: Deine Regel verbiegt lediglich Ziel-IP und Ziel-Port. Hast Du das resultierende Paket auch in der Forward-Chain (ggf. Input-Chain, falls DESTIP = IP der Firewall) auch erlaubt?

morpheus9
20.01.05, 22:07
Hi,

erstmal dank für die antworten.

iptables -t nat -L hatte ich zwischenzeitlich schon entdeckt, aber trotzdem danke.

was die chains angeht, steht alles relevante auf ACCEPT

leider findet sich zu meiner problematik auch keine brauchbare doku im netz. da gehts wenn überhaupt um masquerading und das mach ich ja nicht. ich hab nur echte IPs. alles subobtimal :(

klemens
20.01.05, 22:42
Den Netzaufbau hast nicht genau beschrieben - Hast da so eine Art "Dreieck"?

Rechner - Router - Proxy -- direkt retour - Rechner

Dann will es meiner Erfahrung nach einfach nicht. Dann musst dafür sorgen, dass die Route retour wieder über den Router geht.

morpheus9
21.01.05, 08:24
client
|
|
| (transparente)
|------ bridging firewall ----------------------------------gateway (cisco 3750, auf den ich aber keinen zugriff habe)
| (2.4.18 + bridge-nf-0.0.7-against-2.4.18)
|
|
proxy
(squid 2.4.6-2)


client, proxy, bridging firewall und der gateway liegen im selben class-C-subnetz

klemens
21.01.05, 11:14
Wenn alle drei im selben Netz liegen, dann bekommt "client" das Antwortpaket seiner Anfragen von "proxy", erwartet sie aber von der "bridging firewall" (bzw. vom gateway).

IMHO geht das nur mit einem Masquerading auf der Firewall, bzw. wenn Du "client" und "proxy" in verschiedene Netze legst.