You are on page 1of 9

Squid en modo transparente

mar 11
Publicado por Samuel
Hola a todos, fui un peln mentiroso cuando dije que la prctica de Dansguardian iba a ser
la ltima del curso. Esta s que va a ser la ltima. Hoy vamos a ver cmo configurar Squid
en modo transparente.
Modo transparente?
Normalmente, los proxys navegan a travs del puerto 3128, y hay que configurar los
clientes para que puedan acceder a internet a travs del proxy. En cambio, en un proxy
transparente, no es necesario configurar ningn cliente, todo se configura una nica vez en
la mquina en la que est instalado el proxy y los clientes no saben que navegan a travs de
este. Se redirige el trfico del puerto 80 al 3128.
Empezando
Supongamos que tenemos una red local con tres equipos que deseamos conectar a internet,
pero antes queremos que pasen por un proxy, ya sea para filtrar contenidos o para
almacenar informacin en la cach. Para ello necesitamos una mquina con dos interfaces
de red, una para nuestra red local y otra que nos conectar a Internet. Sabiendo esto, vamos
a comenzar.
Configurando las interfaces de red
En primer lugar vamos a mostrar informacin referente a nuestras interfaces de red. En una
consola tecleamos:
ifconfig

Como vemos en la imagen, poseemos dos interfaces de red, etc0 y eht1. eth0 ser la
interfaz que nos conectar con nuestra red local y eth1 nos conectar con el ruter que a su
vez no conectar a Internet. Necesitamos configurar eth0 de forma esttica, para ello
abrimos un terminal y tecleamos:
sudo gedit /etc/network/interfaces

Y dejamos el archivo de la siguiente forma:
auto lo
iface lo inet loopback

auto eth1
iface eth1 inet dhcp

auto eth0
iface eth0 inet static
address 10.0.0.1
netmask 255.0.0.0
gateway 10.0.0.1

Bien, ya tenemos configurada eth1 como dinmica y eth0 como esttica. Ahora reiniciamos
el servicio de red, desde la terminal:
sudo /etc/init.d/networking restart

Instalando el servidor DHCP
Vamos ahora a instalar el servidor DHCP en nuestra mquina, desde un terminal
escribimos:
sudo aptitude install dhcp3-server

Ya tenemos instalado nuestro servidor DHCP, ahora vamos a configurarlo, as que tenemos
tecleamos lo siguiente en una consola:
sudo gedit /etc/dhcp3/dhcpd.conf

Una vez con el archivo abirto, borramos el contenido y lo dejamos aproximadamente as:
option domain-name "midominio.com";
option domain-name-servers 10.0.0.1;
option subnet-mask 255.0.0.0;
option netbios-name-servers 10.0.0.1;
option routers 10.0.0.1;
default-lease-time 600;
max-lease-time 7200;
subnet 10.0.0.0 netmask 255.0.0.0 {
range 10.0.0.2 10.0.0.100;
option domain-name-servers 10.0.0.1;
option subnet-mask 255.0.0.0;
option netbios-name-servers 10.0.0.1;
option routers 10.0.0.1;
host PC1 {
option host-name "PC1";
hardware ethernet 00:1E:24:6F:2B:5C;
fixed-address 10.0.0.11;
}
host PC2 {
option host-name "PC2";
hardware ethernet 00:1E:24:1C:53:DF;
fixed-address 10.0.0.12;
}
host PC3 {
option host-name "PC3";
hardware ethernet 00:1E:24:CC:1A:E2;
fixed-address 10.0.0.13;
}
}

Explicacin del contenido: En el fichero anterior, debemos incluir un nombre de dominio
si pertenecemos a uno, la direccin de la mquina donde est el servidor con su mscara y
diversas opciones ms como NetBios y los tiempos de asignacin de direcciones.
En subnet, vamos a configurar cmo se asignarn las direcciones para esa red (que est
controlada por eth0), aparte de indicarle la misma informacin que antes, le debemos de
especificar el rango con el que queremos que trabaje. En mi caso he especificado del 1 al
100.
En host, definimos la direccin que se asignar a cada mquina de nuestra red, se especifica
el nombre real, su direccin MAC y la direccin IP que se asociar a dicha MAC. As
hasta que completemos todos los equipos de los que dispondr la red.
Ahora reiniciamos el servicio de DHCP con el siguiente comando:
sudo /etc/init.d/dhcp3-server restart

Creando las iptables
Vamos ahora a crear las llamadas iptables. Las iptables son un complemento del framework
Netfilter, usadas para el filtro de trfico en una red. Nosotros vamos a usarlas para redirigir
el trfico del puerto 80 al 3128, entre otras cosas.
Para crear nuestras iptables, debemos crear un archivo con ellas, para crear el archivo
tecleamos el siguiente comando en un terminal:
sudo gedit /etc/init.d/proxy-rules.sh

Al nuestro archivo le aadimos lo siguiente:
echo "Aplicando las reglas para el direccionamiento, espere..."
iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z
iptables -F
iptables -X
iptables -Z

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A PREROUTING -s 10.0.0.0/8 -p tcp --dport 80 -j REDIRECT
--to-port 3128
iptables -t nat -A POSTROUTING -o eth1 -s 10.0.0.0/8 -j MASQUERADE

Nota: Yo he elegido el nombre de proxy-rules para el archivo, podis elegir el que queris,
pero obviamente que sea de carcter descriptivo.
Explicacin de las iptables: Las primeras reglas iptables eliminan cualquier iptable que se
encuentre en ejecucin en ese momento. La primera cadena de iptables, direcciona el
trfico de nuestra red desde el puerto 80 al puerto 3128. La segunda cadena de iptables, se
encarga de enmascarar nuestra red para que pueda salir a Internet mediante la interfaz eth1.
Descargando, compilando y configurando Squid
Vamos ahora a descargar Squid desde su web oficial para despus compilarlo. Las
versiones disponibles las podemos ver en http://www.squid-cache.org/Versions/, sera ideal
trabajar con la ltima versin estable de Squid, en este caso, la ltima versin estable es la
3.0. Antes de descargar Squid, nos vamos al directorio /usr/local/src, para ello tecleamos en
la consola:
cd /usr/local/src
Una vez all, volvemos a teclear en el terminal lo siguiente:
sudo wget http://www.squid-cache.org/Versions/v3/3.0/squid-
3.0.STABLE24.tar.gz
Eso descargar la ltima versin de Squid al directorio en el que nos encontramos. Cuando
ya tenemos descargado el paquete de Squid, tenemos que descomprimirlo, por lo que
tecleamos en un terminal:
sudo tar xvzf squid-3.0.STABLE24.tar.gz

Muy bien, ya tenemos los archivos de Squid listos para compilar, para esto necesitaremos
tener instalado un compilador de C/C++ en nuestra mquina, por lo que en un terminal
tecleamos:
sudo aptitude install build-essential

Una vez instalado el compilador, y estando dentro de /usr/local/src, tecleamos en un
terminal:
cd squid-3.0.STABLE24
Bien, ya estamos dentro de dicho directorio, ahora de nuevo en un terminal tecleamos lo
siqguiente:
sudo ./configure --prefix=/usr/local/squid --enable-linux-netfilter --
enable-follow-x-forwarded-for --enable-x-accelerator-vary
Cuando el proceso acabe (es posible que est unos minutos) tecleamos esto ahora:
sudo make
Este proceso tambin tardar unos minutos posiblemente. Al finalizar este proceso,
escibimos lo siguiente en la consola:
sudo make install
Ya tenemos Squid instalado en /usr/local/squid. Vamos ahora a crear el usuario y grupo
squid. En un terminal tecleamos:
sudo useradd squid
Y despus:
sudo groupadd squid
Nota: Es posible que al aadir el grupo nos diga que ya existe un grupo llamado squid, no
pasa nada, nos saltamos este paso y sin problemas.
Ahora vamos a hacer al usuario squid dueo de los directorios de Squid. Para ello nos
vamos a un terminal y tecleamos:
cd /usr/local/squid
Una vez estamos en este directorio, tecleamos lo siguiente:
sudo chown -R squid *
Y depus:
chgrp -R squid *
Con esto, el usuario squid ya es dueo de los directorios que maneja Squid. Vamos ahora a
configurar nuestro Squid para permitir la conexin a nuestra red, nos vamos a un terminal y
tecleamos:
sudo gedit /usr/local/squid/etc/squid.conf

Una vez tenemos el archivo, con Ctrl + F, buscamos la lnea http_port, la borramos y la
aadimos de esta forma:
http_port 10.0.0.1:3128 transparent

Ahora buscamos la lnea cache_dir, y la dejamos de la siguiente manera:
cache_dir ufs /usr/local/squid/var/cache 1024 16 256

Volvemos a realizar otra bsqueda, esta vez de cache_effective_user, aqu aadimos dos
lneas:
cache_effective_user squid
cache_effective_group squid

Ahora vamos a aadir una ACL, nos vamos a la zona de las ACL, que est por la lnea 600
ms o menos, y all aadimos:
acl nuestra_red src 10.0.0.0/24

Vamos ahora a aadir una regla http_access, nos vamos aproximadamente a la lnea 645, y
aadimos:
http_access allow nuestra_red

Ya queda poco por hacer, ahora vamos a crear los directorios para la cach de Squid, as
que desde un terminal tecleamos:
sudo /usr/local/squid/sbin/squid -z

Ahora toca configurar rc.local para que arranque Squid y proxy-rules.sh al iniciar Ubuntu,
esto es fcil, desde el terminal tecleamos:
sudo gedit /etc/rc.local

Una vez con el fichero abierto, aadimos lo siguiente:
sh /etc/init.d/proxy-rules.sh
cd /usr/local/squid/sbin/
./squid

Magnfico, ya slo queda reiniciar nuestra mquina y comprobar que hay dos procesos de
Squid ejecutndose en nuestro equipo. Una vez con la mquina reiniciada, volvemos a abrir
un terminal y tecleamos:
sudo ps ax | grep squid

Si nos apareden los dos procesos de Squid significa que todo est correcto, ya tenemos
nuestro proxy cach transparente instalado y configurado.