Squid Proxy + VPN auf gehostetem Raspberry pi

wannabe_nerd

Lieutenant
Registriert
Mai 2009
Beiträge
736
Hi Community,

mir schwebt da ein kleines Projekt vor und ich möchte euch gerne ein paar grundsätzliche Fragen dazu stellen.

Ich habe mir in einem niederländischen Rechenzentrum einen Raspberry Pi mit Raspbian als OS gemietet (für Interessierte) und möchte diesen als mein vertrauenswürdiges VPN-Gatway im Internet benutzen.

Nun kam mir die Idee zusätzlich dazu einen Proxy wie Squid darauf zu installieren und sämtlichen Traffic, der durch das VPN geht zu filtern (insbesondere Werbeseiten etc.) .
Der Vorteil wäre afaik einerseits, dass ich z.b. auf meinem Smartphone Traffic spare, lästige Werbeeinblendungen und eventuell die ein oder andere App in ihrer Datensammelwut ausbremsen kann.

Meine Fragen sind nun:

Ist das grundsätzlich möglich?

Ist es sinnvoll?

Was sollte ich beachten bei der Umsetzung?

Danke für Eure Hilfe

mfg wannabe_nerd
 
Ein VPN auf dem Raspberry Pi ist grundsätzlich möglich, wieso auch nicht, ist ja ein PC mit Linux ;) (wenn auch ARM-basiert)

Ich betreibe meinen PI auch als VPN (unter anderem), damit ich einen verschlüsselten Tunnel habe, wenn ich mal unterwegs in nem öffentlichen WLAN sein sollte. Ich nutze dafür OpenVPN (zertifikatbasiert).

Falls du dich mit Linux auskennst, sollte es dir nicht allzu schwer fallen. Auf der OpenVPN Website gibts ne gute Anleitung, auch im deutschen raspberry pi forum gibt es eine Anleitung (die muss allerdings modifiziert werden, wenn der normale Webtraffic auch durch den Tunnel soll).

Wo ich mir allerdings nicht sicher bin ist, ob man OpenVPN auch so konfigurieren kann, dass er Werbeseiten blockt. (Bin jetzt aber auch kein ausgewiesener VPN-Experte ;) )
 
Nein, einen VPN-Server aufzusetzen ist jetzt kein Problem Für mich. Hab mich auch schon etwas eingelesen, aber was ich noch nicht ganz verstehe ist:
Wenn ich jetzt will, dass mein Datenverkehr nicht Nur zum Raspi umgeleitet sondern zusätzlich noch gefiltert wird, dann brauche ich doch noch eine Software, die das leistet oder?

Bei der Suche nach so einer Software bin ich auf squid gestoßen und dachte, dass ich squid und VPN kombinieren müsste.

Deswegen meine Frage : kann ich squid so konfigurieren, dass er den traffic, der durch den VPN-Tunnel geht filtert?
 
Hallo,

es ist kein Problem einen Werbefilter auf dem RasPi zu betreiben.
Ich hatte dazu mal folgendes gemacht: Privoxy hat die Werbefilterung übernommen und Squid3 das Caching.

Zunächst hatte ich Squid als transparenten Proxy am Laufen, d.h. sämtlicher HTTP-Netzverkehr der aus meinem LAN (außer dem RasPi) rausging wurde von meinem Router an den RasPi umgeleitet, dort von Squid gecached und Privoxy gefiltert. Problematisch (aber machbar) dabei ist der HTTPS-Verkehr: der muss nämlich von Squid entschlüsselt und neu verschlüsselt werden, dabei sieht der Webclient nur noch das Zertifikat des Squids, aber nicht mehr die Original-Zertifikate der Webseiten. Man muss sich also darauf verlassen, dass die Akzeptanz oder Abweisung von Zertifikaten, die man vorher manuell durchführen konnte (weil der Browser nachfragt) nun automatisch richtig läuft.
Ein weiteres (vielleicht eher moralisches) Problem ist, dass ein transparenter Proxy ja eigentlich ein Man-in-the-Middle-Angriff ist und die anderen Leuten an meinem LAN so gar keine Chance mehr haben, unverfälscht rumzusurfen.

Deswegen habe ich die Transparenter-Proxy-Geschichte abgeblasen und betreibe auf dem RasPi nur noch einen normalen, filternden Webproxy (Privoxy-Polipo-Kette), den jeder LAN-Teilnehmer auf seinem Client einstellen kann, wenn ihm danach ist. Polipo statt Squid deswegen, weil ich höchstens eine Handvoll Nutzer habe, das Caching genausogut erledigt wird und dieser wesentlich ressourcensparender läuft.

Sinnvoll ist ein Werbefilter-Proxy allemal, insbesondere dann, wenn man den Browser nicht mehr mit dem Blocking belasten möchte oder kann. Die Leistung des RasPi reicht dafür auch vollkommen aus, wenn man nicht gleich einen ganzen Häuserblock bedienen will und nicht noch nebenbei Gensequenzen analysieren lässt.

Auch VPN sollte kein Problem sein. Ist das Endgerät ersteinmal mit dem VPN-Server (d.h. deinen RasPi) verbunden, kann der Browser einfach seinen Netzverkehr über einen darauf laufenden Proxy (bspw. Privoxy vor einem Squid oder Polipo) umleiten (einfach die entsprechende VPN-interne IP-Adresse des RasPi benutzen).
 
Zuletzt bearbeitet:
@ fnyrk das klingt ja echt super! Danke für die Hilfe. Sobald mein Raspi online geht werde ich mal Privoxy ausprobieren :-)
 
Soo kleines Status-update:

mein Raspberry pi in Holland ist online und OpenVPN und privoxy sind installiert und eingerichtet. Ich habe mich jetzt per VPN verbunden und bei privoxy die Easylist von Adblock herunter geladen und installiert. Jetzt stellt sich mir die Frage, wie ich es schaffe, dass SÄMTLICHER Traffic, der durch den VPN-Tunnel über den Raspberry ins internet geht gefiltert wird. Irgendwie stehe ich da gerade auf dem Schlauch.

Momentan lauscht Privoxy auf localhost:8118
und auf der VPN-Gateway-ip:8118

könnt ihr mir weiterhelfen?

mfg wannabe_nerd


Update - Lösung:

Ich habe es nun mit Hilfe von iptables gelöst.

Falls nicht schon so eingetragen:

$ iptables -t nat -A POSTROUTING -o eth0 -s <IP-Bereich des VPN> -d 0.0.0.0/0 -j SNAT --to-source <Öffentliche IP des Servers>"

Dann:

$ iptables -t nat -A PREROUTING -i <name des VPN-Adapters (z.b. tun0)> -s <IP-Bereich des VPN> -p tcp --dport 80 -j REDIRECT --to-ports <port des Proxyservers>

$ iptables -t nat -A OUTPUT -s <IP-Bereich des VPN> -p tcp --dport 80 -m owner --uid-owner privoxy -j ACCEPT

$ iptables -t nat -A OUTPUT -s <IP-Bereich des VPN> -p tcp --dport 80 -j REDIRECT --to-ports <port des Proxyservers>

Die letzten drei Befehle nach Wunsch noch einmal mit --dport 8080 wiederholen und alle Befehle in die /etc/rc.local eintragen, damit nach einem reboot die iptables-config erneuert wird ;-)

Jetzt funzt alles wie gewünscht! HTTP-Traffic wird, sobald ich per VPN mit dem Raspberry verbunden bin über den Proxy-Server umgeleitet und ggf. gefiltert. Das Ergebnis ist schon cool: auf Ipad und Android-Smartphone ein systemweiter , transparenter Adblocker, den man durch simples Auf- und Abbauen einer VPN-Verbindung ein- und ausschalten kann.

Kleinere Wermutstropfen:
- manche Browser wie Safari auf dem Ipad zicken hin und wieder, weil es "zu viele Umleitungen" gab.
- HTTPS-Traffic wird nicht gefiltert, da es sonst zu Authentifizierungsproblemen kommt (kann man wohl aber auch irgendwie lösen)
- manche Webviedeos, die einen Werbetrailer vorne weg haben werden nicht abgespielt (z.b. auf SPON)

Alles in allem bin ich aber zufrieden mit dem Ergebnis.

mfg wannabe_nerd
 
Zuletzt bearbeitet: (Lösung gefunden)
Hallo Freunde des Pi´s

Ich überleg mir auch einen anzuschaffen eben wegen Proxy und so..
Wie schaut es da mit der Performance aus ?

LG
 
Hallo ittrekky,

die Performance des RasPi ist für solche Aufgaben mehr als ausreichend. Der ist wie dafür gemacht (jedenfalls eher denn als Mediacenter), gerade im Hinblick auf den 24h/7d-Stromverbauch.
Bei mir erledigt er genau solche Netzaufgaben (und noch einige mehr).
Aber das hängt auch davon ab, wieviele Verbindungen über den Proxy laufen sollen und was der Proxy sonst noch alles mit dem Content so anstellen soll.

Viele Grüße
 
hallo fnyrk !

danke für die antwort. ich war da wohl etwas zu ungenau.
ich muss immer zwischen verschiedenen os hin und her booten und viel browsen. da der cache da ja nicht am anderen os verfügbar ist,
und der laptop ne langsam hdd hat dachte ich ein proxy muss her. also entweder squid oder apache mod_proxy.
deswegen möchte ich auch ne schnelle sdhc karte, hab mich eingelesen, es gibt einige seht gut funktionierende class 10 karten von samsung, transcend oder kingston.
ausserdem würde er als backup smtpmailserver agieren (oder ein 2. pi *gggg* )

meine internetleitung hat je nach tageszeit zwischen 5-7 mbit.

hoffe du kannst mir mehr sagen.. bin für jede info dankbar und es kommt eh die kalte jahreszeit, wo ich lieber am pc bastel als vor der glotze sitze :-)

liebe grüsse !
 
Hallo ittrekky,

leider kann ich zur Proxy-Performance keine allgemeingültigen Antworten geben.
Nur soviel: bei mir läuft auf dem nichthochgetakteten RasPi ein Raspbian auf einer 16GB-Class10-Transcend-Karte (also quasi die Standardkonfiguration).
Darauf läuft eine Privoxy+Polipo+[manchmal +TOR]-Kette, ein CUPS-Druckserver (damit auch die Mobilgeräte drucken können) und demnächst noch ein lokaler Mail- oder Chatserver (muss noch sehen, welches System für LAN-interne Nachrichten bei mir geeigneter und von Anderen akzeptiert wird).

Jedes ausgehende HTTP(S)-Paket muss erst zum Router, von dort zum RasPi, von dort zurück zum Router, von dort dann weiter zum Modem und schließlich ins Internet. Der eigehende Verkehr macht dieselbe Reise rückwärts.
Mindestens eine Zwischenstation ist nur mit 54Mb/s-WLAN angeschlossen. Wegen dem Hin-und-Her muss diese Zahl nochmal halbiert und davon muss noch der Protokoll-Overhead abgezogen werden, so dass (pessimitisch gerechnet) vielleicht 10-15Mb/s Netto-Transferrate übrigbleiben.

Da meine Internetverbindung gerade mal 2-4Mbit/s liefert (entgegen den großmäuligen "theoretischen" Werbeversprechen meines Providers), ist das alles bei maximal 5-6 angeschlossenen Rechnern kein großes Problem (selten werden alle Clients gleichzeitig HTTP(S)-Anfragen starten).

Der Flaschenhals ist bei mir weniger der Caching-Proxy (Polipo bzw. Squid) sondern der in Reihe geschaltete Werbefilter-Proxy (Privoxy), insbesondere bei Seiten, deren Content durch Filterregeln manipuliert wird. Dadurch, dass aber jede Menge Werbekram gar nicht erst geladen wird, gleicht sich das wieder etwas aus.
Der Proxy-Cache speichert bei mir soviel wie möglich im RAM und schreibt erst, wenn es nicht mehr anders geht oder gerade eh nichts zu tun ist, auf die SD-Karte (und das ganze dann in großen Blöcken und nicht für jedes Objekt einzeln). Das schont die die SD-Karte und kann als Ursache für Latenzen ausgeschlossen werden.

Ich habe mal testweise, die Caching- + Adblock-Proxy-Kette auf meinem Arbeitsrechner laufen lassen und diesen direkt mit dem Modem verbunden und konnte (gefühlt!) keinen großen Surfgeschwindigkeits-Unterschied feststellen.

Da der RasPi ja nun wirklich keine schmerzliche -- weil niedrige -- (Fehl-)investition ist, kann ich Dir nur raten, es einfach auszuprobieren, an allerlei Schrauben zu drehen, und zu sehen, ob Du mit dem, was letztlich rauskommt, leben kannst.
Im schlimmsten Fall nutzt den Pi für was anderes und investierst in leistungfähigere Hardware.

Sorry, dass ich da ncht groß helfen kann.
Gruß
 
Zurück
Oben