Ziproxy – HTTP-Traffic Kompression

Ziproxy ist ein nicht HTTP-Proxy Server, welcher Daten nicht zwischenspeichert, diese jedoch komprimiert und weiterleitet. Die meiste Bandbreite wird eingespart, indem Bilder neu-konvertiert werden und andere Daten per gzip komprimiert werden.

Ziproxy benötige keine Client-Software, solange der Browser die gzip-Daten korrekt dekomprimieren kann und auch mit JPEG 2000 Bildern umgehen kann. Der Proxy kann auf unterschiedliche Arten konfiguriert werden, ich hatte bereits vor langer Zeit über Ziproxy berichtet (Mein Proxy-Server) und da ich darauf aufmerksam gemacht wurde, dass die gezeigte Konfiguration in der neuen Version nicht mehr funktioniert, ich jedoch den gezeigten Proxy-Aufbau nicht mehr im Einsatz habe, wollte ich in diesem Blog-Post zumindest die beiden Grundkonfigurationen zeigen. (ggf. wäre ein solcher Proxy auch für Smartphones hilfreich)


1.) Ziproxy als Remote-Proxy

Als erstes die einfachste Variante, hier verbindet sich der Ziproxy über eine schnelle Verbindung (extern) mit dem HTTP-Servern und schickt die Daten über eine langsame Verbindung weiter.


Konfiguration: ziproxy.conf (mit ein paar Kommentaren)




Ziproxy-Standard
Ziproxy-Standard





2.) Ziproxy als Remote-Proxy + Local-Proxy

Die Konfiguration des Remote-Proxys unterscheidet sich im Grunde nicht von der ersten Variante, auch hier wird keine Client-Software benötigt, da ein zweiter lokaler Ziproxy sozusagen als Client fungiert, dies hat den Vorteil:

  • der Browser muss nicht “JPEG 2000” unterstützen
  • der Client (z.B. Squid) muss nicht “gzip” unterstützen
  • CPU-Last wird auf einen Server verlagert (ggf. wenn der Browser durch “JPEG 2000”-Bilder hohe CPU-Last erzeugt)

Konfiguration: Ziproxy-Client

Port = 8080
Address = "127.0.0.1"
NextProxy="81.169.188.94"
NextPort=3128
ImageQuality = {85,85,85,85}
JP2ImageQuality = {85,85,85,85}
MaxUncompressedGzipRatio = 4000
MinUncompressedGzipStreamEval = 250000
MaxSize = 2097152
Gzip = true
DecompressIncomingGzipData = true




Ziproxy_Dual
Ziproxy_Dual




Link: ziproxy.sourceforge.net

Web Proxy Auto Detection (WPAD)

Wer seinen Browser so einstellt, dass dieser den Proxy (z.B. Squid) im Netzwerk selber finden soll, muss man folgendes zuvor in seiner Konfiguration des Servers anpassen.

1.) Webserver Konfigurieren

ggf. den Webserver installieren, wenn es keinen im Netzwerk gibt

aptitude install apache2

folgende Datei anpassen

vim /etc/apache2/httpd.conf

AddType application/x-ns-proxy-autoconfig.dat

in der zuvor angegebenen Datei angeben und danach den Webserver neu-starten

/etc/init.d/apache2 reload

Datei im Web-Verzeichnis erstellen, so dass alle im Netzwerk darauf zugreifen können.

vim /var/www/wpad.dat

function FindProxyForURL(url, host)
{
if (isInNet(host, "x.x.x.0", "255.255.255.0"))
return "DIRECT";
else
return "PROXY x.x.x.x:8080";
}

folgende Dinge müssen noch angegeben werden

x.x.x.0 -> Netzwerk

x.x.x.x:8080 -> Proxy-IP:Port

2.) DHCP-Server Konfigurieren

Einen DHCP-Server installieren, dabei muss beachtet werden, dass der DHCP-Server der CPE (Router) welcher Standardmäßig aktiv ist, zuvor deaktiviert werden muss.

aptitude install dhcp3-server

vim /etc/dhcp3/dhcpd.conf

als Beispiel gebe ich hier meine Konfigurations-Datei an

server-identifier 192.168.0.254;
subnet 192.168.0.0 netmask 255.255.255.0 {
        pool {
            deny dynamic bootp clients;
            range 192.168.0.1 192.168.0.100;
            default-lease-time 360000;
            max-lease-time 600000;
        }
option subnet-mask 255.255.255.0;
option domain-name "test.dyndns.ws";
option routers 192.168.0.254;
option wpad "http://192.168.0.254/proxy.pac";
option domain-name-servers 192.168.0.254, 192.168.1.2;
option ntp-servers 192.168.0.254, 212.20.160.4;
option custom-proxy-server "http://192.168.0.232/wpad.dat"
}

Diese Konfigurations-Datei ist nur ein Beispiel und kann so nicht übernommen werden!!!

die Zeile um die es in diesem HowTo geht ist:

option custom-proxy-server "http://192.168.0.232/wpad.dat"

nach der Anpassung der Konfiguration muss auch der DHCP-Server neu-gestartet werden

/etc/init.d/dhcp3 restart

Video Cache – mit Squid im lokalen Netz

Heute stelle ich ein Programm für Squid vor, welches jedoch nicht mehr in der Form als freies Programm weiterentwickelt wird,

Unterstützte Webseiten:

1. Youtube Videos – youtube.com
2. Metacafe Videos – metacafe.com
3. DailyMotion Videos – dailymotion.com
4. Google Videos – video.google.com
5. Vimeo HD Videos – vimeo.com
6. Wrzuta Audio – wrzuta.pl
7. MSN Soapbox Videos – soapbox.msn.com
8. Blip TV Videos – blip.tv
9. Break Videos – break.com
10. TV UOL – tvuol.uol.com.br
11. Red Tube Videos
12. X Tube Videos
13. You Pron Videos
14. Tube 8 Videos

Was wird vorausgesetzt?

1.) Squid >= 2.6

2.) Python = 2.4 oder 2.5

3.) Python-urlgrabber

4.) Python-iniparse

5.) Apache ( bzw. Web Server)

Installation:

1.) python-urlgrabber installieren

aptitude install python-urlgrabber

2.) python-iniparse installieren

cd /usr/src/
wget http://iniparse.googlecode.com/files/python-iniparse_0.3.1-1_all.deb
dpkg -i python-iniparse_0.3.1-1_all.deb

3.) VideoCache installieren

cd /usr/src/
wget http://voku-online.de/videocache-1.9.2.tar.gz
tar -xzf videocache-1.9.2.tar.gz
cd videocache-1.9.2/
./setup-deb.py  install
cp videocache-httpd.conf /etc/apache2/conf.d/videocache.conf
cp videocache-sysconfig.conf /etc/videocache.conf
vim /etc/videocache.conf

cachevideos.com/configure

# Wo lauscht dein Squid-Proxy?
proxy = http://127.0.0.1:8080/
# nicht localhost oder 127.0.0.1 als cache_host verwenden, da man dort später nicht per Webserver-Cache zugreifen kann
cache_host = proxy.domain.tld
cp update-vc /usr/sbin/update-vc
chmod 744 /usr/sbin/update-vc
cp scripts/vccleaner /usr/sbin/vccleaner
chmod 744 /usr/sbin/vccleaner
cp -r videocache /usr/share/
cd /var/spool/
mkdir videocache
mkdir videocache/tmp videocache/youtube videocache/metacafe videocache/dailymotion videocache/google videocache/redtube videocache/xtube videocache/vimeo videocache/wrzuta videocache/youporn videocache/soapbox videocache/tube8 videocache/tvuol videocache/bliptv videocache/break
chown -R proxy:proxy videocache
chmod -R 755 videocache
mkdir -p /var/log/videocache
chmod -R 755 /var/log/videocache/
chown -R proxy:proxy /var/log/videocache/
/etc/init.d/apache2 restart

vim /etc/squid3/squid.conf

url_rewrite_program /usr/bin/python /usr/share/videocache/videocache.py
url_rewrite_children 7
acl videocache_allow_url url_regex -i .youtube.com/get_video?
acl videocache_allow_url url_regex -i .youtube.com/videoplayback .youtube.com/videoplay .youtube.com/get_video?
acl videocache_allow_url url_regex -i .youtube.[a-z][a-z]/videoplayback .youtube.[a-z][a-z]/videoplay .youtube.[a-z][a-z]/get_video?
acl videocache_allow_url url_regex -i .googlevideo.com/videoplayback .googlevideo.com/videoplay .googlevideo.com/get_video?
acl videocache_allow_url url_regex -i .google.com/videoplayback .google.com/videoplay .google.com/get_video?
acl videocache_allow_url url_regex -i .google.[a-z][a-z]/videoplayback .google.[a-z][a-z]/videoplay .google.[a-z][a-z]/get_video?
acl videocache_allow_url url_regex -i (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/videoplayback?
acl videocache_allow_url url_regex -i (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/videoplay?
acl videocache_allow_url url_regex -i (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/get_video?
acl videocache_allow_url url_regex -i proxy[a-z0-9-][a-z0-9][a-z0-9][a-z0-9]?.dailymotion.com/
acl videocache_allow_url url_regex -i vid.akm.dailymotion.com/
acl videocache_allow_url url_regex -i [a-z0-9][0-9a-z][0-9a-z]?[0-9a-z]?[0-9a-z]?.xtube.com/(.*)flv
acl videocache_allow_url url_regex -i bitcast.vimeo.com/vimeo/videos/
acl videocache_allow_url url_regex -i va.wrzuta.pl/wa[0-9][0-9][0-9][0-9]?
acl videocache_allow_url url_regex -i .files.youporn.com/(.*)/flv/
acl videocache_allow_url url_regex -i .msn.com.edgesuite.net/(.*).flv
acl videocache_allow_url url_regex -i media[a-z0-9]?[a-z0-9]?[a-z0-9]?.tube8.com/ mobile[a-z0-9]?[a-z0-9]?[a-z0-9]?.tube8.com/
acl videocache_allow_url url_regex -i .mais.uol.com.br/(.*).flv
acl videocache_allow_url url_regex -i .video[a-z0-9]?[a-z0-9]?.blip.tv/(.*).(flv|avi|mov|mp3|m4v|mp4|wmv|rm|ram)
acl videocache_allow_url url_regex -i video.break.com/(.*).(flv|mp4)
acl videocache_allow_dom dstdomain .mccont.com .metacafe.com .redtube.com .cdn.dailymotion.com
acl videocache_deny_url url_regex -i http://[a-z][a-z].youtube.com http://www.youtube.com
url_rewrite_access deny videocache_deny_url
url_rewrite_access allow videocache_allow_url
url_rewrite_access allow videocache_allow_dom
redirector_bypass on

# videocache (127.0.0.1/32) benätigt Zugriff auf Squid
acl our_networks src 127.0.0.1/32 192.168.XXX.0/24 192.168.YYY.0/24
/etc/init.d/squid3 restart

-> im Browser testen

tail -f /var/log/videocache/videocache.log
cd /var/spool/videocache
du -hs

Falls jemand bereits ein “url_rewrite_program” mit seinem Squid nutzt, z.B. zapper und squidclamav dann kann man diese auch gemeinsam mit videocache bereiben. ->

vim /usr/local/bin/wrapzap

#!/bin/sh
squidclamav=/usr/local/bin/squidclamav
zapper=/usr/local/bin/squid_redirect
# NOTICE THE CHANGE -- CHANGE No. 1
videocache=/usr/share/videocache/videocache.py

[...]

# Exec the real zapper (chained with SquidClamav)
#exec /usr/local/bin/zapchain "$zapper" "$squidclamav"
# NOTICE THE CHANGE -- CHANGE NO. 2
exec /usr/local/bin/zapchain "$zapper" "$squidclamav" "$videocache"

Mein Proxy-Server

Also erst einmal eine kleine Vorgeschichte:

Ich wohne in einem ländlichen Gebiet (Ork) und habe zirka eine 1000-er DSL-Leitung…
… leider nutzt mein Bruder nun die Leitung um sein “GuildWars” zu spielen, außerdem habe ich mein W-Lan mit einem zweiten SpeedTouch-Router erweitert, so dass ich im ganzen Haus W-Lan habe und auch meine Schwester, Mutter und Vater online gehen können, welche natürlich zusätzlich die Leitung ausbremsen. Zudem habe ich da noch einen kleinen Xen-Server in meinem Schrank eingebaut aber dazu gleich… :)

Also hab ich mir gedacht, dass ich einen Proxy aufstelle, sodass zumindest Bilder, Updates, … welche jemand bereits heruntergeladen hat, nicht noch einmal aus dem Internet geladen werden müssen.

Eines der Kriterien, die der Proxy-Server erfüllen sollte war, dass ich keine Werbung mehr auf den Webseite haben wollte, dann am besten noch Anonym surfen kann, des weiteren wollte ich es irgendwie hin-bekommen, dass ich meinen kleinen V-Server, auf welchem auch diese Webseite läuft in das ganze geschehen mit einbeziehen kann, um dessen Download-Speed zu nutzen und dass alles ohne sich ständig von intern am Proxy Authentifizieren zu müssen.

Kommen wir nun zur Umsetzung des ganzen:


mein_proxy
mein Proxy


Mein Home-Netz:

SpeedTouch 585i (192.168.1.254) -> DMZ -> Endian Firewall (192.168.1.220 und 192.168.0.254) (Xen-Server)

Xen-Server: (Lenny – sid)
– Meister-Mail (*extern)
– Meister-Nagios (*intern)
– Meister-Proxy (*intern)
– Meister-Backup (*intern)

[intern = 192.168.0.0/24 und extern = 192.168.1.0/24]

Endian Firewall:
– Firewall / Portweiterleitung (NAT)
– transparenter Proxy-Server (squid)
– Inhaltsfilter (Dansguardian) – deaktiviert
– HTTP Antivirus (havp) – deaktiviert
– transparenter SMTP-Server (postfix)
– Anti-Virus (amavis+clamav)
– Anti-Spam (spamassassin)
– DHCP-Server (dhcpd) (192.168.0.1 – 192.168.0.100)
– DNS-Server (dnsmasq)
– Intrusion Detection System (SNORT) – deaktiviert
– Dynamischer DNS Updat – deaktiviert
– Trafficshaping – deaktiviert
– SIP-Proxy – deaktiviert
– VPN Server (OpenVPN & IPSec) – OpenVPN aktiviert

Die Firewall kann per Web-Oberfläche aus dem “grünen”-Netz (192.168.0.0/24) erreicht werden, zudem wurde die Konfiguration zusätzlich auf der Konsole verändert, so dass der Proxy z.B. nicht preisgibt, dass er etwas mit der Anfrage zu tun hat, somit wird der verwendete Browser/Betriebssystem/Auflösung/Herkunft verschleiert. Ausserdem wurde mithilfe der Weboberfläche eingestellt, dass es einen “Vorgelagerter Proxy” gibt, somit wird die Anfrage ggf. an Meister-Proxy weitergeleitet, wenn diese nicht bereits im Cache des Proxys zu finden ist.

Meister-Proxy:
– Proxy-Server (squid3) [127.0.0.1:8080]
– 2X Proxy-Server (ziproxy) [127.0.0.1:8081 und 192.168.0.232:3128]

Auf Meister-Proxy trifft die Verbindung als erstes auf den ersten Ziproxy-Server, welcher Bilder vom Format “JPEG 2000” zurück in “JPEG” konvertiert, warum dies nötig ist erschließt sich gleich… der nächste Proxy an den die Anfrage gerichtet wird ist ein Squid-Proxy, dieser ist so eingestellt, dass er nicht die aktuellen Updates, Download usw. wie der Proxy auf der Endian Firewall zwischenspeichert. Dieser Proxy speichert Dateien, welche häufig angefragt werden. Dieser leitet die Anfrage nun zum letzten Proxy in diesem Netzwerk weiter. Der zweite Ziproxy-Server empfängt von meinen V-Server HTML-Dateien, welche mit gzip komprimiert sind und Bilder welche im “JPEG 2000” konvertiert und somit verkleinert wurde, leider können dies nicht alle Browser darstellen bzw. verarbeiten, diese Ziproxy-Server macht ein de-gzip und somit erschließt sich auch der Sinn der zweiten Ziproxy-Servers, welcher die Bilder wider zurück konvertiert.

V-Server:
– Proxy-Server (privoxy) [127.0.0.1:8181]
– Proxy-Server (ziproxy) [:3128]

Der V-Server nimmt die Anfrage entgegen, und komprimiert die Daten mittels gzip und wandelt die Bilder in das Format “JPEG 2000” um, dann wird die Anfrage noch an den letzen Proxy geleitet, welcher die Werbung, Popups usw. entfernt und somit keine Werbung über meine langsame Leitung übertagen werden muss.

Zusammenfassung:
1.) Endian Firealll: Squid – Cachen von akuellen Dateien (z.B. Updates)
2.) Meister-Proxy: Ziproxy – dekomprimieren von Bildern für den Enduser
3.) Meister-Proxy: Squid – Cachen von häufigen Dateien (z.B. Google-Logo)
4.) Meister-Proxy: Ziproxy – dekomprimieren von gzip-Daten
5.) V-Server: Ziproxy – Komprimierung mittels “gzip” und “JPEG 2000”
6.) V-Server: Privoxy – Filtern von Werbung

Im grunde muss man diese Zusammenfassung nun rückwärts lesen, so sieht man den Weg, welchen die Webseite durchwandert, bis diese im Browser dargestellt wird.

Proxy-Server

Auf das Bild klicken, um es groß zu sehen!

Die Konfiguration:

Meister-Proxy: 2-mal Ziproxy

cd /usr/src/
wget http://kent.dl.sourceforge.net/sourceforge/ziproxy/ziproxy-2.7.1.tar.bz2
tar --bzip -xvf ziproxy-2.7.1.tar.bz2
cd ziproxy-2.7.1/
sudo aptitude install libgif-dev libgif4 libungif4-dev libungif-bin libungif4g libpng3 libpng3-dev libpng-dev libjpeg-dev libjpeg-gif libjpeg62 libjpeg62-dev libjasper-1.700-2 libjasper-1.701-dev
./configure --with-jasper=/usr/
make
make install
cp -pv /usr/local/bin/ziproxy /usr/bin/ziproxy
vim /etc/default/ziproxy


# Defaults for ziproxy initscript
# sourced by /etc/init.d/ziproxy
# installed at /etc/default/ziproxy by the maintainer scripts
#
# This is a POSIX shell fragment
#
# Additional options that are passed to the Daemon.
# DAEMON_OPTS="-c /etc/ziproxy/ziproxy.conf"
DAEMON_OPTS1="-c /etc/ziproxy/ziproxy-link.conf"
DAEMON_OPTS2="-c /etc/ziproxy/ziproxy-user.conf"

vim /etc/init.d/ziproxy
#!/bin/sh
### BEGIN INIT INFO
# Provides:          ziproxy
# Required-Start:    $network $local_fs
# Required-Stop:     $network $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Init script for ziproxy
# Description:       This is the init script for ziproxy.
### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/ziproxy
NAME=ziproxy
DESC=ziproxy
test -x $DAEMON || exit 0
PIDFILE=/var/run/$NAME.pid
DODTIME=1                   # Time to wait for the server to die, in seconds
# If this value is set too low you might not
# let some servers to die gracefully and
# 'restart' will not work
# Include ziproxy defaults if available
if [ -f /etc/default/ziproxy ] ; then
. /etc/default/ziproxy
fi
DAEMON_OPTS1="$DAEMON_OPTS1 -d"
DAEMON_OPTS2="$DAEMON_OPTS2 -d"
set -e
running_pid()
{
# Check if a given process pid's cmdline matches a given name
pid=$1
name=$2
[ -z "$pid" ] && return 1
[ ! -d /proc/$pid ] &&  return 1
cmd=`cat /proc/$pid/cmdline | tr "00" "n"|head -n 1 |cut -d : -f 1`
# Is this the expected child?
##[ "$cmd" != "$name" ] &&  return 1
[ "$cmd" != "$name" ] &&  return 1
return 0
}
running()
{
# Check if the process is running looking at /proc
# (works for all users)
# No pidfile, probably no daemon present
[ ! -f "$PIDFILE" ] && return 1
# Obtain the pid and check it against the binary name
pid=`cat $PIDFILE`
running_pid $pid $DAEMON || return 1
return 0
}
force_stop() {
# Forcefully kill the process
[ ! -f "$PIDFILE" ] && return
if running ; then
kill -15 $pid
# Is it really dead?
[ -n "$DODTIME" ] && sleep "$DODTIME"s
if running ; then
kill -9 $pid
[ -n "$DODTIME" ] && sleep "$DODTIME"s
if running ; then
echo "Cannot kill $NAME (pid=$pid)!"
exit 1
fi
fi
fi
rm -f $PIDFILE
return 0
pkill -9 ziproxy
}
is_not_running() {
if ! running; then
echo "$NAME is not running."
exit 1
fi
}
case "$1" in
start)
echo -n "Starting $DESC: "
if running; then
echo "$NAME is already running."
exit 1
fi
start-stop-daemon --start --quiet --pidfile $PIDFILE
--exec $DAEMON -- $DAEMON_OPTS1 > $PIDFILE
start-stop-daemon --start --quiet --pidfile $PIDFILE
--exec $DAEMON -- $DAEMON_OPTS2 > $PIDFILE
if running; then
echo "$NAME."
else
echo " ERROR."
fi
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --pidfile $PIDFILE
--exec $DAEMON
echo "$NAME."
;;
force-stop)
echo -n "Forcefully stopping $DESC: "
is_not_running
force_stop
if ! running; then
echo "$NAME."
else
echo " ERROR."
fi
pkill -9 ziproxy
;;
#reload)
#
#       If the daemon can reload its config files on the fly
#       for example by sending it SIGHUP, do it here.
#
#       If the daemon responds to changes in its config file
#       directly anyway, make this a do-nothing entry.
#
# echo "Reloading $DESC configuration files."
# start-stop-daemon --stop --signal 1 --quiet --pidfile
#       /var/run/$NAME.pid --exec $DAEMON
#;;
force-reload)
#
#       If the "reload" option is implemented, move the "force-reload"
#       option to the "reload" entry above. If not, "force-reload" is
#       just the same as "restart" except that it does nothing if the
#   daemon isn't already running.
# check wether $DAEMON is running. If so, restart
start-stop-daemon --stop --test --quiet --pidfile
/var/run/$NAME.pid --exec $DAEMON
&& $0 restart
|| exit 0
;;
restart)
echo -n "Restarting $DESC: "
is_not_running
start-stop-daemon --stop --quiet --pidfile
/var/run/$NAME.pid --exec $DAEMON
[ -n "$DODTIME" ] && sleep $DODTIME
start-stop-daemon --start --quiet --pidfile
/var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS1 > $PIDFILE
start-stop-daemon --start --quiet --pidfile
/var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS2 > $PIDFILE
echo "$NAME."
;;
status)
echo -n "$NAME is "
if running ;  then
echo "running."
else
echo "not running."
exit 1
fi
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload|status|force-stop}" >&2
exit 1
;;
esac
exit 0

Ziproxy-Link:

vim /etc/ziproxy/ziproxy-link.conf


Port = 8081
Address = "127.0.0.1"
NetdTimeout = 0
NextProxy="85.214.153.167"
NextPort=3128
ZiproxyTimeout = 0
TransparentProxy = false
ConventionalProxy = true
AllowMethodCONNECT = false
UseContentLength = false
MaxUncompressedGzipRatio = 4000
MinUncompressedGzipStreamEval = 250000
MaxSize = 2097152
Gzip = true
PreemptNameRes = true
PreemptNameResMax = 10
PreemptNameResBC = true
WA_MSIE_FriendlyErrMsgs = false
Compressible = {
"shockwave", "msword", "msexcel", "mspowerpoint", "rtf", "postscript",
"java", "javascript", "staroffice", "vnd.", "futuresplash",
"asp", "class", "font", "truetype-font", "php", "cgi", "executable",
"shellscript", "perl", "python", "awk", "dvi", "css",
"xhtml+xml", "rss+xml", "xml", "pdf", "tar"
}
ProcessJPG = false
ProcessPNG = false
ProcessGIF = false
ImageQuality = {80,80,80,80}
JP2ImageQuality = {80,80,80,80}
ProcessJP2 = false
ProcessToJP2 = true
ForceOutputNoJP2 = false
AnnounceJP2Capability = true
DecompressIncomingGzipData = true

Ziproxy-User:

vim /etc/ziproxy/ziproxy-user.conf


Port = 3128
Address = "192.168.0.232"
NetdTimeout = 0
NextProxy="127.0.0.1"
NextPort=8080
TransparentProxy = false
ConventionalProxy = true
AllowMethodCONNECT = false
ZiproxyTimeout = 0
UseContentLength = false
MaxUncompressedGzipRatio = 4000
MinUncompressedGzipStreamEval = 250000
MaxSize = 2097152
Gzip = true
PreemptNameRes = true
PreemptNameResMax = 10
PreemptNameResBC = true
WA_MSIE_FriendlyErrMsgs = false
Compressible = {
"shockwave", "msword", "msexcel", "mspowerpoint", "rtf", "postscript",
"java", "javascript", "staroffice", "vnd.", "futuresplash",
"asp", "class", "font", "truetype-font", "php", "cgi", "executable",
"shellscript", "perl", "python", "awk", "dvi", "css",
"xhtml+xml", "rss+xml", "xml", "pdf", "tar"
}
ProcessJPG = true
ProcessPNG = true
ProcessGIF = true
ProcessHTML = true
ProcessCSS = true
ProcessJS = false
ProcessHTML_JS = false
ImageQuality = {80,80,80,80}
JP2ImageQuality = {80,80,80,80}
ProcessJP2 = true
ProcessToJP2 = false
ForceOutputNoJP2 = true

Meister-Proxy: Squid
(Squid + VideoCache )

sudo aptitude install squid3
vim /etc/squid3/squid.conf

[...]
http_port 8080
[...]

Anbei mein Squid3-Konfig ->

awk '!/^ *#/&&(length > 0)' /etc/squid3/squid.conf | less


acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443
acl SSL_ports port 81
acl Safe_ports port 80 # http
acl Safe_ports port 81 # http_isp-config
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny to_localhost
http_access allow localhost
http_access deny all
icp_access allow localhost
icp_access deny all
htcp_access allow localhost
htcp_access deny all
http_port 8080
cache_peer localhost parent 8081 0 no-query no-digest
hierarchy_stoplist cgi-bin ?
cache_mem 250 MB
maximum_object_size_in_memory 512 KB
cache_replacement_policy heap LFUDA
cache_dir ufs /var/spool/squid3 3500 16 256
minimum_object_size 0 KB
maximum_object_size 2048 KB
cache_swap_low 95
cache_swap_high 98
access_log none
cache_store_log none
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern (cgi-bin|?) 0 0% 0
refresh_pattern . 0 20% 4320
via off
cache_mgr voku@voku-online.de
ipcache_size 5000
fqdncache_size 5000
forwarded_for off
client_db off
maximum_single_addr_tries 5
retry_on_error on
coredump_dir /var/spool/squid3
url_rewrite_program /usr/bin/python /usr/share/videocache/videocache.py
url_rewrite_children 7
acl videocache_allow_url url_regex -i .youtube.com/get_video?
acl videocache_allow_url url_regex -i .googlevideo.com/videoplayback .googlevideo.com/videoplay .googlevideo.com/get_video?
acl videocache_allow_url url_regex -i .google.com/videoplayback .google.com/videoplay .google.com/get_video?
acl videocache_allow_url url_regex -i .google.[a-z][a-z]/videoplayback .google.[a-z][a-z]/videoplay .google.[a-z][a-z]/get_video?
acl videocache_allow_url url_regex -i (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/videoplayback?
acl videocache_allow_url url_regex -i (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/videoplay?
acl videocache_allow_url url_regex -i (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/get_video?
acl videocache_allow_url url_regex -i proxy[a-z0-9-][a-z0-9][a-z0-9][a-z0-9]?.dailymotion.com/
acl videocache_allow_url url_regex -i vid.akm.dailymotion.com/
acl videocache_allow_url url_regex -i [a-z0-9][0-9a-z][0-9a-z]?[0-9a-z]?[0-9a-z]?.xtube.com/(.*)flv
acl videocache_allow_url url_regex -i bitcast.vimeo.com/vimeo/videos/
acl videocache_allow_url url_regex -i va.wrzuta.pl/wa[0-9][0-9][0-9][0-9]?
acl videocache_allow_url url_regex -i .files.youporn.com/(.*)/flv/
acl videocache_allow_url url_regex -i .msn.com.edgesuite.net/(.*).flv
acl videocache_allow_url url_regex -i media[a-z0-9]?[a-z0-9]?[a-z0-9]?.tube8.com/ mobile[a-z0-9]?[a-z0-9]?[a-z0-9]?.tube8.com/
acl videocache_allow_url url_regex -i .mais.uol.com.br/(.*).flv
acl videocache_allow_url url_regex -i .video[a-z0-9]?[a-z0-9]?.blip.tv/(.*).(flv|avi|mov|mp3|m4v|mp4|wmv|rm|ram)
acl videocache_allow_url url_regex -i video.break.com/(.*).(flv|mp4)
acl videocache_allow_dom dstdomain .mccont.com dl.redtube.com .cdn.dailymotion.com
acl videocache_deny_url url_regex -i http://[a-z][a-z].youtube.com http://www.youtube.com
acl videocache_deny_url url_regex -i http://[a-z][a-z].maxdome.de http://www..maxdome.de
url_rewrite_access deny videocache_deny_url
url_rewrite_access allow videocache_allow_url
url_rewrite_access allow videocache_allow_dom
redirector_bypass on

Endian-Firewall: Squid
Squid wird über die Weboberfläche konfiguriert.

https://IP:10443/cgi-bin/advproxy.cgi

Nun verlassen wir unser Home-Netz und begeben uns zu dem V-Server…

V-Server: Ziproxy

wie zuvor wird auch hier als erstes der Ziproxy-Server installiert… gehen wir daher direkt zur Konfiguration über.
Deutsche (german) Ziproxy-Doku:

http://voku-online.de/ziproxy.txt

V-Server: Privoxy

wget http://ovh.dl.sourceforge.net/sourceforge/ijbswa/privoxy_3.0.13-1_i386.deb
dpkg -i privoxy_3.0.13-1_i386.deb
awk '!/^ *#/&&(length > 0)' /etc/privoxy/config

user-manual /usr/share/doc/privoxy/user-manual

confdir /etc/privoxy

logdir /var/log/privoxy

actionsfile match-all.action # Actions that are applied to all sites and maybe overruled later on.

actionsfile default.action # Main actions file

actionsfile user.action # User customizations

filterfile default.filter

logfile logfile

listen-address 127.0.0.1:8118

toggle 1

enable-remote-toggle 1

enable-remote-http-toggle 1

enable-edit-actions 0

enforce-blocks 1

buffer-limit 500000

# forward / 127.0.0.1:8080

# forwarded-connect-retries 3

accept-intercepted-requests 1

allow-cgi-request-crunching 0

split-large-forms 1

keep-alive-timeout 600

connection-sharing 1

socket-timeout 600

log-messages 0

************ Anonym-Modus (TOR) ************

echp 'deb http://mirror.noreply.org/pub/tor lenny main' >> /etc/apt/sources.list
apt-key adv --recv-keys --keyserver subkeys.pgp.net 0x94C09C7F
apt-get update && aptitude install tor
echo 'forward-socks4a / localhost:9050 .' >> /etc/privoxy/config

*******************************************

Auf folgender Webseite, testen wir nun, ob die Bilder in allen Formaten angezeigt werden… ->www.aadmm.de/de/gf.htm

Und auf der nächsten Webseite testen wir welche HTTP-Header Daten mit übertragen werden.

ip.cc

mein Ergebnis:

###################### Proxy checking Report: ######################

IP DETECT: 85.214.114.181

COUNTRY: Germany – DE

RESULT: high-anonymous elite proxy

###################### Main anonymous proxy test variables: ######################

HTTP_FORWARDED: N/A

HTTP_X_FORWARDED_FOR: N/A

HTTP_CLIENT_IP: N/A

###################### Additional proxy variables: ######################

HTTP_VIA: N/A

HTTP_XROXY_CONNECTION: N/A

HTTP_PROXY_CONNECTION: N/A

###################### Other interesting info about you: ######################

HTTP_USERAGENT_VIA: N/A

HTTP_USER_AGENT: Opera/9.80 (Windows NT 6.1; U; de) Presto/2.2.15 Version/10.00

HTTP_ACCEPT_LANGUAGE: de-DE,de;q=0.9,en;q=0.8

REMOTE_HOST: N/A

HTTP_CONNECTION: close

SERVER_PROTOCOL: HTTP/1.0

HTTP_REFERER: N/A

HTTP_ACCEPT: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1

HTTP_CACHE_CONTROL: max-age=259200

HTTP_CACHE_INFO: N/A