Weblog

Squid cache und Werbeblocker

Da Ambeth ja in erster Linie für mobile Anwendungen gedacht ist und die Datenrate bei HSDPA oder EDGE bzw GPRS eher schlecht ist, macht es Sinn, die Datenübertragung möglichst zu minimieren. Zwei Möglichkeiten bieten sich hier an:

  1. Ein Cache, der schon einmal besuchte Seiten speichert und dann bei erneutem Zugriff diese nicht neu über das Netz lädt
  2. Ein Werbeblocker, der irrelevante Werbung ausblendet und erst gar nicht überträgt.

Beides bietet squid3. Der Vorteil dieser Konfiguration ist, dass die Rechner, die den Ambeth WLAN Gateway benutzen nicht umkonfiguriert werden müssen. Also keine zusätzliche Software brauchen, weder Smartphones, noch PC's oder Netbooks oder Tablets müssen umkonfiguriert werden.

Die folgenden Befehle müssen als root ausgeführt werden also:

sudo -s

Erstmal squid installieren mit:

apt-get install squid3

Die Squid Konfigurationsdatei sichern wir erstmal mit:

cp /etc/squid3/squid.conf /etc/squid3/squid.conf.original

Anschliessend laden wir sie mit einem editor also:

vi /etc/squid3/squid.conf

Jetzt wird es etwas kompliziert, da squid ein extrem leistungsfähiges Werkzeug ist, dass daher auch eine riesige Konfigurationsdatei besitzt. Fangen wir also zuerst mit dem Werbeblocker an: zuerst suchen sie in der Datei die Stelle, die den Text "acl manager proto cache_object" und fügen sie davor folgenden Text ein (das müsste etwa bei Zeile 690 sein):

acl ads dstdom_regex "/etc/squid3/ad_block.txt"
http_access deny ads

Wenig später (etwa bei Zeile 700) sollten sie hinter der Zeile "#acl localnet src 10.0.0.0/8  # RFC1918 possible internal network" folgende Zeile einfügen, die definiert, dass alles was über den Ambeth port wlan1 (10.10.4.x) reinkommt gecached wird.

acl localnet src 10.10.4.0/24 # ambeth wlan1 hostapd

Etwa bei Zeile 831 entfernen sie das # Symbol in der Zeile "#http_access deny to_localhost" so dass es so aussieht:

http_access deny to_localhost

Wieder wenige Zeilen später (etwa bei Zeile 840) entfernen sie auch hier das # Symbol in der Zeile mit "#http_access allow localnet" so dass es so aussieht:

http_access allow localnet

Jetzt etwa bei Zeile 1136 ersezen sie folgende Zeile "http_port 3128" durch:

http_port 3128 intercept

Da wir auch größere Dateien cachen wollen ändern wir jetzt in der Zeile (ca. bei Zeilennummer 2076) mit "# maximum_object_size_in_memory 512 KB" auf folgende Weise ab und aktivieren sie indem wir das # Symbol entfernen:

maximum_object_size_in_memory 512000 KB

Jetzt müssen wir noch die das Cache Directory konfigurieren. Da meine Ambeth installation eine 16GB SD Karte benutzt, habe ich mich entschieden 8 GB davon als Cache Speicher zu reservieren. Ändern sie also die Zeile mit "#cache_dir ufs /var/spool/squid3 100 16 256 " (die sollte etwa bei Zeilenummer 2232 liegen) wie folgt ab und aktivieren sie sie indem sie das # Symbol entfernen:

cache_dir ufs /var/spool/squid3 8000 16 256

Etwa bei Zeile 2614 sollten sie folgende Zeile finden: "# logfile_rotate 0". Ändern sie sie wir folgt ab:

logfile_rotate 10

Jetzt sind wir bald fertig ändern sie nur noch die Zeile mit "# shutdown_lifetime 30 seconds" (sie sollte etwa bei Zeilenummer 3676 zu finden sein) wie folgt ab:

shutdown_lifetime 2 seconds

Die squid Konfigurationsdatei ist fertig und sie sollten sie jetzt speichern.

Als nächstes müssen sie mit:

squid3 -z

die Cache Verzeichnisse anlegen. Wir haben ja zu Anfang die Datei /etc/squid3/ad_block.txt konfiguriert, die aber noch nicht existiert. Wir werden jetzt ein Shell script anlegen, das genau das macht. Also mit:

touch /etc/squid3/fetch_adserver.sh
chmod u+x /etc/squid3/fetch_adserver.sh
vi /etc/squid3/fetch_adserver.sh

Die Datei zum Edieren öffnen und mit folgendem Inhalt füllen:

#!/bin/bash
wget -q -t 5 'http://pgl.yoyo.org/adservers/serverlist.php?hostformat=squid-dstdom-regex&showintro=0&mimetype=plaintext' -O /etc/squid3/ad_block.txt
/usr/sbin/squid3 -k reconfigure

Nachdem sie sie gespeicher haben führen sie sie mit folgendem Befehl aus und holen sich die aktuelle Blocklist.

/etc/squid3/fetch_adserver.sh

Jetzt mit:

/etc/init.d/squid3 restart

squid neu starten.

Wir brauchen noch eine automatische Methode um die Blocklist auf dem aktuellen Stand zu halten. Ein Cronjob bietet sich dafür an:

echo "35   5    *   *   */3 /etc/squid3/fetch_adserver.sh >> /dev/null 2>1" | crontab -u root -

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more  Got it