Interner Router mit Proxy

T

tommie19

Grünschnabel
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:
Code:
#!/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:
Code:
    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
 
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
 
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?!?
 
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?
 
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 (Anzeige) kommt nur noch /index.php an.

Gruß
Tommie19
 
Zuletzt bearbeitet:
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:
Code:
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ß
 

Ähnliche Themen

Port Forwarding mit iptables

ip6tables Problem

Wired-Lan komisches Verhalten

iptables und whitelist

IPtables

Zurück
Oben