PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Interner Router mit Proxy



tommie19
21.06.2006, 17:37
Hallo,
wir haben hier bei uns einen Router, der die einzelnen Etagen (jeweils ein Subnetz) eines Bürohauses verbindet.

Für das Routing nutze ich bisher diese Regeln:

#!/bin/bash
case "$1" in
start)
echo "Setzen der Firewall-Regeln: "
echo "1">/proc/sys/net/ipv4/ip_forward

INTERNAL_NET_4="192.168.4.0/24"
INTERNAL_NET_5="192.168.5.0/24"
INTERNAL_NET_6="192.168.6.0/24"


EXT_NET="192.168.0.0/24"

echo "Masqerade starten..."
iptables -t nat -A POSTROUTING -s $INTERNAL_NET_4 -d ! $INTERNAL_NET_4 -j MASQUERADE
iptables -t nat -A POSTROUTING -s $INTERNAL_NET_5 -d ! $INTERNAL_NET_5 -j MASQUERADE
iptables -t nat -A POSTROUTING -s $INTERNAL_NET_6 -d ! $INTERNAL_NET_6 -j MASQUERADE
iptables -t nat -A POSTROUTING -s $EXT_NET -d ! $EXT_NET -j MASQUERADE
echo "done."
;;
stop)
echo "Loeschen der Firewall-Regeln: "
iptables -F
iptables -t nat -F
iptables -X
iptables -Z
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
echo "done."
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage $0 (start|stop|restart)"
exit 1

;;
esac

exit 0


Nun sollen alle Etagen den proxy auf dem Router nutzen.
Dazu habe ich im Startabschnitt dieses Regelwerk eingefügt:

echo "Port 80 auf 3128 (Squid) umbiegen..."
iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 80 -j REDIRECT --to-port 3128
echo "done."


Die anfragen ins Internet werden auf den proxy geleitet. Doch dieser beschwert sich über falsche Anfragen.
Das MASQUERADING haut mir warscheinlich die Pakete kaputt.
Wie muss das jetzt richtig konfiguriert werden?

Gruß
Tommie19

diirch
21.06.2006, 17:59
Hi
ich habe von linux so gut wie keine Ahnung aber hast du
schon mal probiert deine redirect´s direk mit dem natd zu machen?
Sprich in /etc/natd.conf ich hoffe die Datei gibt es unter Linux überhaupt. :)
*rofl*
Das funktioniert bei mir immer wunderbar egal was ich mit meinen Routen
anstelle.

Gruss Diirch

tommie19
25.06.2006, 19:49
Hallo,
natd will ich nicht nutzen.
Das muss doch auch mit IPTABLES gehen!
REDIRECT kann ich ja leider nur im PREROUTING und im OUTPUT nutzen.

Kennt denn keiner einen Ausweg aus diesem Dilemma?!?

nikster77
25.06.2006, 19:55
nimm das masquerading halt mal raus wenn sowieso alles ueber den proxy gehen soll...

und poste mal die Fehlermeldungen vom Proxy... welchen nutzt du ueberhaupt?

tommie19
28.06.2006, 13:26
Hallo,
das Masquerading kann ich nicht einfach so entfernen, da über den proxy ja auch alles andere (Netbios, SIP/IAX2 etc.) läuft.
Zur Surfkontrolle soll einfach der Router einen Proxy laufen haben (Squid und Squidguard).
Gebe ich den Proxyport im Browser an klappt alles wunderbar.
Da der Proxy jetzt aber transparent sein soll muss ich alles was als Ziel Port 80 hat auf den Proxy umleiten.

Ach ja, die Fehlermeldung im Squid:The requested URL could not be retrieved - Invalid URL
Am Squid kommt dann immer nur noch alles nach der Domain an: anstelle von http://www.ebay.de/index.php kommt nur noch /index.php an.

Gruß
Tommie19

phrenicus
28.06.2006, 14:19
Ich verstehe Deine iptables-Konfiguration nicht. Warum ist EXT_NET ein reserviertes Klasse-C-Netz (192.168.0.0/24)? Warum willst Du masqueraden, wenn Pakete zwischen den einzelnen Subnetzen hin- und hergehen?

Schrittweise: Du bekommst ein Paket von 192.168.4.1 und es soll nach 192.168.5.1, das forwardest Du und anschließend ersetzt Du die Source-Adresse durch die des Routers. Warum? Das ist doch eigentlich nur sinnvoll, wenn man aus einem Privatnetz ins Internet routen will.

So, dann biegst Du VOR dem Routing den Destination Port 80 auf 3128 um.
Dann wird das Paket geroutet und anschließend die Sender-Adresse durch die des Routers ersetzt. Ich kann hier nicht erkennen, dass ein lokaler Proxy verwendet werden soll. IMHO fehlt hier eine Zeile:

iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 80 -j DNAT --to 192.168.4.1:3128 (oder welche Adresse auch immer Dein Proxy hat).
Übrigens müsste es in Deiner fast richtigen Regel heißen --to-ports (mit s hinten).

Wie ist Dein Proxy konfiguriert? Hast Du ihn überhaupt als transparenten Proxy eingerichtet? Läuft die Http-Beschleunigung?
Die abgerissene URL deutet ja wohl darauf hin, dass Dein Proxy nichts davon weiß, was Du mit ihm vorhast. Ich wette, dass httpd_accel_uses_host_header bei Dir nicht auf on steht.

Versuch mal das hier:
http://www.cyberciti.biz/tips/linux-setup-transparent-proxy-squid-howto.html

Lass Dir die Konfiguration Deines Netzwerks nochmal genau durch den Kopf gehen. Mir scheint, Dir ist nicht hundertprozentig klar, was Dein iptables-Skript macht. Stell Dir mal einfach vor, Du wärst ein Netzwerkpaket und müsstest durch Dein Netzwerk. Dann fallen Dir die Hürden am einfachsten auf.

Gruß