Transparenter Squid Proxy

Transparenter Squid Proxy auf Ubuntu 8.04.1 Server

Im Internet kursieren verschiedene Anleitungen, wie man einen transparenten Squid Proxy aufsetzt. Leider sind einige veraltet, beziehen sich auf den alten Squid oder sonst etwas älteres. Ich habe mir vorgenommen eine aktuelle Anleitung zu schreiben, die auf dem Ubuntu Server 8.04.1 (Hardy Heron) basiert.

Der Server braucht mindestens 2 Netzwerkkarten, bevorzugt Inten PRO-1000. Ich nehme an, das lokale Netz ist 192.168.0.0/24, der Router hat die IP 192.168.0.1 und unser Proxy bekommt die IP 192.168.0.2 und die Nameserver haben die IPs 193.101.111.20 sowie 193.101.111.10.

Zuerst ist eine Ubuntu-Installation vorzunehmen. Diese wird normal gemacht, aber am Ende wird nur noch der SSH-Server installiert.

Nach der Installation installieren wir einige Pakete:

# apt-cache search squid | grep -e "^squid " -e "^sqcwa " -e "^squid-prefetch " -e "^bridge-utils "
squid - Internet object cache (WWW proxy cache)
sqcwa - Workaround for Squid not caching some pages
squid-prefetch - Simple page-prefetch for Squid web proxy
bridge-utils - Utilities for configuring the Linux ethernet bridge
# apt-get install squid sqcwa squid-prefetch bridge-utils

In /etc/squid/squid.conf suchen wir die folgende Zeilen:

http_port 3128
#acl our_networks src 192.168.1.0/24 192.168.2.0/24
#http_access allow our_networks

und ändern es in:

http_port 3128 transparent
acl our_networks src 192.168.0.0/24
http_access allow our_networks

Danach ersetzen wir den Inhalt von /etc/network/interfaces durch:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto br0
iface br0 inet static
pre-up brctl addbr br0
pre-up brctl addif br0 eth0
pre-up brctl addif br0 eth1
pre-up ifconfig eth0 0.0.0.0
pre-up ifconfig eth1 0.0.0.0
post-down brctl delbr br0
address 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.1
bridge_fd 0
bridge_hello 0
bridge_stp off

Dann noch DNS in /etc/resolv.conf:

nameserver 193.101.111.20
nameserver 193.101.111.10

Vor dem Ende kommt noch die magische iptables-Regel in die /etc/rc.local:

/sbin/iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Sollten wir irgendwann einen Paketfilter auf iptables-Basis haben so fügen wir diese Regel dort ein.

Am Ende shutdown. Jetzt stellen wir den Proxy neben dem Router, schliessen eine Netzwerkkarte an den Router direkt und die andere an das Netzwerk. Welche wohin ist vollkommen egal.

Das Ganze ist natürlich beliebig ausbaufähig…

Einschalten, fertig ;)

Leave a Reply

Your email address will not be published. Required fields are marked *