Tag Archives: ubuntu

INSTALACIÓN DE PROXY TRANSPARENTE CON SQUID

Sistema proxy (dos tarjetas de red):
Notas:

eth0 : Interfaz para la entrada de internet(WAN)
eth1 : Interfaz para nuestra red local(LAN)

red internet:   eth0
ip  de salida internet:  192.168.1.2
puerta de enlace: 192.168.1.1

red  local:   eth1
ip para la entrada lan: 192.168.0.1
puerta de enlace: <vacío>

ip pc cliente:  192.168.0.x

Se prueba con la distribución ubuntu 9.04, pero esto puede aplicarse a toda distribución basada en debian, y con algunas modificaciones, también a distribuciones basadas en redhat.
Hagamos la configuración de internet, para nuestro ubuntu:

-Desactivamos las interfaces de red.

sudo ifdown eth0
sudo ifdown eth1
 

-Editamos el archivo “/etc/network/interfaces”
copiar:
Para la interfaz de salida

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
network 192.168.1.0
broadcast  192.168.1.255
gateway 192.168.1.1

Para la interfaz de entrada, y seguido de lo anterior:

auto eth1
iface eth1 inet static
address  192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255

Guardamos y salimos.
Editar el archivo “/etc/resolv.conf”, y agregar las dns de nuestro proveedor de internet o el que deseemos
Copiar: (caso telefónica Perú)

nameserver 200.48.225.130
nameserver  200.48.225.146

Luego reiniciamos el servicio:

sudo  /etc/init.d/networking restart

*Ahora que tenemos nuestras interfaces configuradas, procedemos a instalar squid, en este caso lo probamos con squid V2.7.STABLE3

sudo apt-get install squid

configuramos squid transparente

sudo gedit /etc/squid/squid.conf

modificamos:

http_port 3128 transparent
cache_mem 30 mb
cache_dir ufs /var/spool/squid 2000 16 256

Agregamos lo siguiente antes de donde dice:
“http_access deny !Safe_ports”

acl red_local src 192.168.0.0/24
acl localhost src  127.0.0.1/32
http_access allow localhost
http_access allow red_local

reemplazamos en “maximum_object_size_in_memory 8 KB” por “maximum_object_size_in_memory 100 KB”
Esto indica que haremos cache de a lo más 100KB, esto debe depender de cada uno.
reemplazamos en “cache_replacement_policy lru” por “cache_replacement_policy heap gdsf”
Con esto indicamos el tipo de algoritmo que se ha de seguir para poder administrar los archivos que se encuentran en cache.
para más información visitar aqui.
Luego la parte esencial de todo esto, la configuración de los patrones de refresco.

# Debian
refresh_pattern -i \.deb$   129600 100% 129600
refresh_pattern -i \.gz$   129600 100% 129600
refresh_pattern -i \.bz2$   129600 100% 129600

# Imagenes
refresh_pattern -i \.gif$ 14400 80% 43200
refresh_pattern -i \.tiff?$ 14400 80% 43200
refresh_pattern -i \.bmp$ 14400 80% 43200
refresh_pattern -i \.jpe?g$ 14400 80% 43200
refresh_pattern -i \.xbm$ 14400 80% 43200
refresh_pattern -i \.png$ 14400 80% 43200
refresh_pattern -i \.wrl$ 14400 80% 43200
refresh_pattern -i \.ico$ 14400 80% 43200
refresh_pattern -i \.pnm$ 14400 80% 43200
refresh_pattern -i \.pbm$ 14400 80% 43200
refresh_pattern -i \.pgm$ 14400 80% 43200
refresh_pattern -i \.ppm$ 14400 80% 43200
refresh_pattern -i \.rgb$ 14400 80% 43200
refresh_pattern -i \.ppm$ 14400 80% 43200
refresh_pattern -i \.rgb$ 14400 80% 43200
refresh_pattern -i \.xpm$ 14400 80% 43200
refresh_pattern -i \.xwd$ 14400 80% 43200
refresh_pattern -i \.pict?$ 14400 80% 43200

# Movies
refresh_pattern -i \.mov$ 14400 80% 43200
refresh_pattern -i \.mpe?g?$ 14400 80% 43200
refresh_pattern -i \.avi$ 14400 80% 43200
refresh_pattern -i \.qtm?$ 14400 80% 43200
refresh_pattern -i \.viv$ 14400 80% 43200
refresh_pattern -i \.swf$ 14400 80% 43200

# Sounds
refresh_pattern -i \.wav$ 14400 80% 43200
refresh_pattern -i \.aiff?$ 14400 80% 43200
refresh_pattern -i \.au$ 14400 80% 43200
refresh_pattern -i \.ram?$ 14400 80% 43200
refresh_pattern -i \.snd$ 14400 80% 43200
refresh_pattern -i \.mid$ 14400 80% 43200
refresh_pattern -i \.mp2$ 14400 80% 43200
refresh_pattern -i \.mp3$ 14400 80% 43200

# Archives
refresh_pattern -i \.sit$ 14400 80% 43200
refresh_pattern -i \.zip$ 14400 80% 43200
refresh_pattern -i \.hqx$ 14400 80% 43200
refresh_pattern -i \.exe$ 14400 80% 43200
refresh_pattern -i \.arj$ 14400 80% 43200
refresh_pattern -i \.lzh$ 14400 80% 43200
refresh_pattern -i \.lha$ 14400 80% 43200
refresh_pattern -i \.cab$ 14400 80% 43200
refresh_pattern -i \.rar$ 14400 80% 43200
refresh_pattern -i \.tar$ 14400 80% 43200
refresh_pattern -i \.gz$ 14400 80% 43200
refresh_pattern -i \.z$ 14400 80% 43200
refresh_pattern -i \.a[0-9][0-9]$ 14400 80% 43200
refresh_pattern -i \.r[0-9][0-9]$ 14400 80% 43200

# Data files
refresh_pattern -i \.txt$ 14400 80% 43200
refresh_pattern -i \.pdf$ 14400 80% 43200
refresh_pattern -i \.doc$ 14400 80% 43200
refresh_pattern -i \.rtf$ 14400 80% 43200
refresh_pattern -i \.tex$ 14400 80% 43200
refresh_pattern -i \.latex$ 14400 80% 43200

# Java-type objects
refresh_pattern -i \.class$ 14400 80% 43200
refresh_pattern -i \.js$ 14400 80% 43200
refresh_pattern -i \.class$ 14400 80% 43200

# Web-type objects
refresh_pattern -i \.css$ 10 20% 4320
refresh_pattern -i \.html?$ 10 20% 4320
refresh_pattern \/$ 10 20% 4320


# Para evitar problemas con scripts .do
refresh_pattern -i \.do$ 0 0% 1440

# Default
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320

Finalmente:
Reiniciamos el servicio squid:

sudo /etc/init.d/squid restart

Aquí el cliente (192.168.0.x) podría egresar a internet por medio del proxy configurado desde el navegador.
Reglas de iptables

sudo iptables -t nat -A POSTROUTING -o eth0 -j SNAT  --to 192.168.1.2
sudo iptables  -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port  3128
#permitir conexión entre las interfaces de red
echo 1 > /proc/sys/net/ipv4/ip_forward

Las anteriores lineas, se guardan en un archivo “proxy_rules.sh” en “/etc/init.d/” luego le damos permisos de ejecución
Luego editamos el archivo “/etc/init.d/rc.local” y le agregamos al inicio

cd  /etc/init.d
./proxy_rules.sh

Con esto hacemos que desde el inicio squid funcione de manera transparente.
Reconfiguramos el servicio squid:

sudo squid -k reconfigure

Con esto el cliente (192.168.0.x) puede navegar por internet, sin necesidad de configurar el proxy en su navegador, es decir en modo transparente.

Anuncios