Primero instalen el linux que en mi caso es un Debian Squeeze 6.0.1a, hagan la instalación mas común para novatos utizando todo el disco (/). En este caso no usaremos IPTABLES (hay varios tutoriales en la red) porque usamos el Filter de Mikrotik y asignen la ip 192.168.5.2/24 y gateway/dns 192.168.5.1 (nuestro mk).
En el Mikrotik tendremos 3 eth (como mínimo, porque esto funciona bien si tienen un balance de carga), Lan, Wan y Proxy. Doy por sabido que tienen el mikrotik funcionando y necesitan un proxy para ahorrar ancho de banda.
Para la comunicación entre el MK y el Debian asignamos a la eth Proxy del MK la ip 192.168.5.1:
ip address add address=192.168.5.1 netmask=255.255.255.0 interface=Proxy
Vamos al debian, primero instalamos squid, todo como root ... ingresan su usuario y clave y con el comando "su" accedemos como root (#)
apt-get install squid
Una vez instalado eliminamos el fichero squid.conf porque lo vamos a crear desde cero con nuestras preferencias:
rm /etc/squid/squid.conf
Creamos y editamos el nuevo squid.conf:
nano /etc/squid/squid.conf
Esta es la configuración que de una sale andando, mirando un poco los tutos de squid pueden dejar su conf a su gusto y de acuerdo con la pc que tengan, mas o menos voy a explicar despues de la regla lo que hace separados por ##.
http_port 5128 transparent ##Este es el puerto habilitado en donde escucha el proxy en modo tranparente
visible_hostname MI_PROXY ## Nombre que quieran dar al proxy
cache_mgr [email protected] ## a quien reclamar si no anda jaja
error_directory /usr/share/squid/errors/es ## los mensajes de error del proxy
######puertos y permisos
acl manager proto cache_object
acl all src 0.0.0.0/0.0.0.0
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443 563
acl Safe_ports port 70 #prot gopher
acl Safe_ports port 210 #whais
acl Safe_ports port 1024-65535 #todos los demas puertos
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 #multi http
acl Safe_ports port 901 #acesso Swat
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_PORTS
###damos permiso al MK para las consultas al proxy####
acl redlocal src "/etc/squid/permitidos" ## Explico luego este permiso
http_access allow localhost
http_access allow redlocal
http_access deny all
cache_access_log /var/log/squid/access.log ## Aqui se loguea los accesos
cache_log /var/log/squid/cache.log ## aqui el cache
cache_mem 20 MB ## Algunos ponen este valor en 8, 16, depende la pc, en 20 me funciona bien
maximum_object_size_in_memory 64 KB
maximum_object_size 50 MB ## cacheamos archivos de hasta 50 megas
minimum_object_size 0 KB
cache_store_log none
log_fqdn off
log_icp_queries off
buffered_logs off
emulate_httpd_log off
redirect_rewrites_host_header off
cache_swap_low 80 ## este y el de abajo limitan el uso del swap, no cambien estos valores
cache_swap_high 85
cache_dir ufs /var/spool/squid 50048 16 256 ## damos el tamaño max de disco disponible para la cache que en mi ##caso son 50048 (50 gigas) que se guardaran en 16 carpetas y 256 subcarpetas en /var/spool/squid
refresh_pattern ^ftp: 15 20% 4560
refresh_pattern ^gopher: 15 0% 4560
refresh_pattern . 15 20% 4560
memory_replacement_policy heap GDSF
memory_pools off
memory_pools_limit 0
ignore_unknown_nameservers on
quick_abort_min 0
quick_abort_max 0
quick_abort_pct 75
buffered_logs off
forwarded_for off
##Zero Penalty HIT### esto "marca" los HIT para poder ser administrados por el mangle del mk para hacer full ##cache, el valor del DSCP (TOS) es de 12
zph_mode tos
zph_local 0x30
zph_parent 0
zph_option 136
Gardamos el fichero con Ctrl + o y luego enter ... salimos del editor con Ctrl + x
La opción
Es un fichero en donde agregué las ip habilitadas a navegar por usando el proxy y lo creamos con:acl redlocal src "/etc/squid/permitidos"
y agregamos las ip una debajo de la otra y sin espacios:nano /etc/squid/permitidos
192.168.2.2
192.168.56.4
10.10.9.4
192.168.0.0/24
Si tienen una sola red basta con:
en donde permitimos a todo ese rangoacl redlocal src 192.168.1.0/24
Reiniciamos el servicio para que tome los cambios y ver si no tira algun error:
service squid restart
Tres cosas tenemos que agregar en el mikrotik
1.- La regla de mangle para que marque los HIT del squid y poder implementar el full cache
2.- La regla en NAT para hacer la redirección del puerto 80 hacia el 5128
3.- La cola simple (queues) para que no limite la consulta a nuestro proxy y entregue lo cacheado a todo pedo
En el mangle:
ip firewall mangle add chain=prerouting action=mark-packet new-packet-mark=tcp-hit passthrough=no dscp=12
Marcamos el paquete como tcp-hit, con esto ya podemos ir al queues:
queue simple name="cached" interface=all parent=none packet-marks=tcp-hit direction=both priority=5 queue=ethernet-default/ethernet-default limit-at=0/0 max-limit=0/0 burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s total-queue=ethernet-default
Y la última regla para direccionar las consultas al tcp 80 (paginas web) de nuestra Lan utilizamos NAT con esto:
ip firewall nat chain=dstnat action=netmap to-addresses=192.168.5.2 to-ports=5128 protocol=tcp in-interface=Lan dst-port=80
Con esto tendría que estar andando, desde la consola del Debian pueden chequear el access.log con el siguiente comando:
tail -f /var/log/squid/access.log
Nueva info
Me dicen que en versiones de mikrotik 2.9.x no marca los hit y estuve leyendo en la web que el TOS es 48, si alguien me puede corroborar todos agradecidos!
Miren la imagen de la eth del proxy en el mikrotik:
Todas las críticas son bienvenidas porque no soy un genio en esto pero lo posteo porque me funciona de maravillas, saludos a todos