Proxy-Zwangsumleitung

Was

HowTo fuer einen Zwangsproxy fuer alle Rechner im Kabelnetz hinter dem Linksys.

Warum

Ein Proxy nimmt jede (HTTP-)Anfrage an und schaut nach,ob er das vielleicht schonmal geladen hat (Bilder&Webseiten). Hat er das,liefert er sie aus seinem Cache und die Daten muss nicht nochmal (langsam) aus dem Internet geladen werden.

Wie

Auf dem Linksys werden zwei Firewallregeln eingerichtet.

Regel1: Alle Pakete,die vom Kabelnetz("br0") reinkommen und als Ziel Port80 haben und NICHT vom Proxy("10.5.28.139") kommen,werden auf den Proxy(Port3128) geleitet:

iptables -t nat -A PREROUTING -i br0 -s ! 10.5.28.139 -p tcp --dport 80 -j DNAT --to 10.5.28.139:3128

Regel2: Alle Pakete die in mein Netzwerk("10.5.28.0/24") als Antwort zurueckkommen und an den Proxy wollen,gehen zum Linksys

iptables -t nat -A POSTROUTING -o br0 -s 10.5.28.0/24 -d 10.5.28.139 -j SNAT --to 10.5.28.254

Diese zwei Regeln kann man resetfest in ein eigenes Skript schreiben. Zum Beispiel in "/etc/init.d/S55zwangsproxy". Auf die Angabe des Interpreters ("#!/bin/sh") in der ersten Skriptzeile achten. Mit "chmod" das Skript ausfuehrbar machen und nach einem Reboot mit "iptables --list -t nat" ueberpruefen, ob das Skript tatsaechlich ausgefuehrt und die Regeln eingetragen wurden.

Besonderheiten mit Squid als Proxy

Damit die Headeranfragen richtig weitergeleitet werden, muessen bei squid als Proxy umbedingt 2 Angaben in der squid.conf stehen:

httpd_accel_host virtual
httpd_accel_uses_host_header on

Probleme

  • Was muss man aendern,wenn nicht nur Pakate aus dem LAN, sondern auch aus dem WLAN ("eth1") an den Proxy geleitet werden ?
  • Wie ist die Regeln,wenn auch HTTPS (port443?) ueber den Proxy geleitet werden soll ?
  • es muesste ein Skript laufen, das alle paar Sekunden checkt,ob der Proxy noch lebt. Wenn nicht,muss die Zwangsumleitung wieder deaktiviert werden. Lebt der Proxy wieder,muss sie wieder aktiviert werden.
  • Wie loescht man die Regeln wieder raus?

Problemloesungen

  • bisher keine