miércoles, 23 de junio de 2010

How-To: Proxy Cache Transparente en Ubuntu Server LTS 10.04 con Squid3






Ver también: Squid Proxy Cache más simple aún


Squid es un proxy caché que soporta los protocolos HTTP, HTTPS, FTP y muchos otros. Un proxy reduce el uso de ancho de banda y mejora los tiempos de respuesta haciendo un caché y re-uso de páginas web solicitadas frecuentemente. Squid tiene un amplio control de acceso y acelera el servidor. Puede correr en casi todos los sistemas operativos, incluyendo Windows y su licenciamiento es GNU GPL.

1. Instalar Ubuntu Server LTS 10.04, incluyendo LAMP si lo deseas.

2. Configurar las interfaces de red manualmente y ponerlas estáticas.

      admin@server:~$ sudo nano /etc/network/interfaces

auto eth0
iface eth0 inet static
address 192.168.1.250
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.88

post-up iptables-restore < /etc/iptables.up.rules

auto eth1
iface eth1 inet static
address 192.168.2.1
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255

*En donde eth0 será para conectar el acceso a Internet (Cable, DSL, etc.) y eth1 para nuestra red local.

3. Instalar Web Admin (webmin) (opcional).

admin@server:~$ wget http://prdownloads.sourceforge.net/webadmin/webmin_1.510-2_all.deb
admin@server:~$ dpkg -install webmin_1.510-2_all.deb
admin@server:~$ sudo apt-get -f install

https://localhost-IP ADDRES:10000

*Hay que asegurarse de darle permisos en IPTABLES para acceder de forma remota al Webmin.

4. Instalar ClamAV y ClamAV-freshclam.

      admin@server:~$ sudo apt-get install clamav clamav-freshclam

5. Instalar squid.

      admin@server:~$ sudo apt-get install squid3

Editar el archivo de configuracion de squid3 con nuestro editor favorito.

      admin@server:~$ sudo nano /etc/squid3/squid.conf

Y configurar la transparencia y la red local que usará el proxy:

http_port 3128 transparent
acl nuestra_red src 192.168.2.0/24
acl redlocal src 127.0.0.1/255.255.255.255
http_access allow nuestra_red
http_access allow redlocal

Donde 192.168.2.0/24 es el rango de IP de la red local.

Probablemente tambien necesitaremos ajustar el tamaño de la cahé:

cache_dir ufs /var/spool/squid3 7000 16 256

Aquí el primer numero denota el tamaño de la caché en megabytes. Guardamos los cambios y reinicamos el demonio squid3:

      admin@server:~$ sudo /etc/init.d/squid3 restart

6. Editar el archivo /etc/sysctl.conf

      admin@server:~$ sudo nano /etc/sysctl.conf

Descomentar las líneas que habilitan el redireccionamiento de paquetes para IPv4 e Ipv6:

net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1

7. Editar la configuración de IPTABLES para NAT y FILTER.

      admin@server:~$ sudo nano /etc/iptables.up.rules

NAT:

-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.2.1:3128
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-port 3128
-A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE

FILTER:

-A INPUT -i lo -j ACCEPT
-A INPUT -m state -i eth0 -state REALATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth1 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT # permitir ssh usando putty
-A INPUT -p tcp -m tcp --dport 10000 -j ACCEPT # permitir acceso a webmin
-A INPUT -p tcp -m tcp --dport 110 -j ACCEPT # permitir pop3
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT # permitir smtp
-A INPUT -j LOG
-A INPUT -j DROP
-A FORWARD -i eth1 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o eth1 -j ACCEPT
-A FOWARD -o eth1 -j ACCEPT
-A FORWARD -s 192.168.2.0/24 -o eth0 -j ACCEPT
-A FORWARD -d 192.168.2.0/24 -m state --state ESTABLISHED, REALTED -I eth0 -j ACCEPT

8. Editar el archivo /etc/rc.local

      admin@server:~$ sudo nano /etc/rc.local

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE

9. Reiniciar el servidor.

      admin@server:~$ sudo shutdown -r now

10. Finalmente, configurar los clientes (computadoras de la red local) con dirección IP estática y como puerta de enlace o gateway la IP del servidor. Debemos asegurarnos de que la dirección IP en los clientes esté en el mismo rango que se configuró en el paso 2. 

Fuente: Ubuntu Geek

5 comentarios:

  1. Gracias por la guia esta bastante bueno lo voy a aplicar, mi pregunta es si en este servidor puedo implementar la segmentacion del ancho de banda dinamico

    ResponderEliminar
    Respuestas
    1. Hola Mateito, gracias por visitar el blog.

      Para hacer esto que quieres conjuntamente con un Squid lo recomendable es implementar un portal cautivo sea con pfSense u otra distro de este tipo como Zentyal.

      Un saludo...

      Eliminar
  2. hola, que tal. tengo una duda, lo que pasas es que soy nuevo, pero nuy nuevo, y puse todos estos comandos tal y como estan, pero al momento de querer abrir internet con firefox, no me lo permite me dice algo asi
    Server not found







    Firefox can't find the server at www.google.com.





    Check the address for typing errors such as
    ww.example.com instead of
    www.example.com
    If you are unable to load any pages, check your computer's network
    connection.
    If your computer or network is protected by a firewall or proxy, make sure
    that Firefox is permitted to access the Web.

    nose si se tenga que hacer algo adicional de manera grafica o de modo ya fisico, disculpen mi ignorancia

    espero que me puedan hechar la mano.

    ResponderEliminar
    Respuestas
    1. Hola anonimo. Que version de Ubuntu y de Squid estas usando. Las cosas cambian con el tiempo y este post ya tendra casi 3 años. Es posible que ya no funcione igual. Por favor dime especialmente que version de Squidusas. Un saludo.

      Eliminar
  3. en el paso 3, en la parte de instalar WebAdmin, en mi caso me funcionó asi:
    dpkg -i webmin_1.510-2_all.deb

    ResponderEliminar