Que es un cache proxy?
Se trata de un proxy para una aplicación específica; el acceso a la web. Aparte de la utilidad general de un proxy, proporciona una caché para las páginas web y los contenidos descargados, que es compartida por todos los equipos de la red, con la consiguiente mejora en los tiempos de acceso para consultas coincidentes. Al mismo tiempo libera la carga de los enlaces hacia Internet.
Ventajas
* Ahorro de Tráfico: Las peticiones de páginas Web se hacen al servidor Proxy y no a Internet directamente. Por lo tanto, aligera el tráfico en la red y descarga los servidores destino, a los que llegan menos peticiones.
* Velocidad en Tiempo de respuesta: El servidor Proxy crea un caché que evita transferencias idénticas de la información entre servidores durante un tiempo (configurado por el administrador) así que el usuario recibe una respuesta más rápida.
* Demanda a Usuarios: Puede cubrir a un gran número de usuarios, para solicitar, a través de él, los contenidos Web.
* Filtrado de contenidos: El servidor proxy puede hacer un filtrado de páginas o contenidos basándose en criterios de restricción establecidos por el administrador dependiendo valores y características de lo que no se permite, creando una restricción cuando sea necesario.
* Modificación de contenidos: Basándose en la misma función del filtrado, y llamado Privoxy, tiene el objetivo de proteger la privacidad en Internet, puede ser configurado para bloquear direcciones y Cookies por expresiones regulares y modifica en la petición el contenido.
Desventajas
* Las páginas mostradas pueden no estar actualizadas si éstas han sido modificadas desde la última carga que realizó el proxy caché.
Un diseñador de páginas web puede indicar en el contenido de su web que los navegadores no hagan una caché de sus páginas, pero este método no funciona habitualmente para un proxy.
* El hecho de acceder a Internet a través de un Proxy, en vez de mediante conexión directa, impide realizar operaciones avanzadas a través de algunos puertos o protocolos.
* Almacenar las páginas y objetos que los usuarios solicitan puede suponer una violación de la intimidad para algunas personas.
Que es un proxy Transparente?
Un proxy transparente combina un servidor proxy con NAT de manera que las conexiones son enrutadas dentro del proxy sin configuración por parte del cliente, y habitualmente sin que el propio cliente conozca de su existencia.
Ejemplo de un Esquema de red con un proxy transparente.

Antes que nada necesitamos dos tarjetas de red. una para conectarla a internet ISP y otra que ira conectada a la red local.
Tambien necesitaremos tener configurado el PF Firewall de no tenerlo configurado hacer lo siguiente.
Agregamos nuevas opciones a nuestro kernel y necesitaremos recompilarlo.
# cd /usr/src/sys/i386/conf
# cp GENERIC R4pt0r
# ee R4pt0r
Agregamos estas lineas al nuevo kernel
options ALTQ
options ALTQ_CBQ
options ALTQ_RED
options ALTQ_RIO
options ALTQ_HFSC
options ALTQ_PRIQ
Checamos la configuracion y lo instalamos
# config R4pt0r
# cd ../compile/R4pt0r
# make cleandepend && make depend
# make
# make install
Completado el proceso Reiniciamos para que carge el sistema el nuevo kernel.
Editamos /etc/rc.conf para cargar nuestro firewall y activar la opcion para que nuestro FreeBSD actue como Gateway.
# pf_enable="YES" # Habilitar PF
# pf_rules="/etc/pf.conf" # las reglas definidas para PF
# pf_flags="" # additional flags for pfctl startup
# pflog_enable="YES" # start pflogd
# pflog_logfile="/var/log/pflog" # pflogd muestra donde ser guardaran los log
# pflog_flags="" # adiciona flags para pflogd startup
# gateway_enable="YES" #
Creamos las reglas para el firewall en /etc/pf.conf para que el trafico pase por el proxy
int_if="rl1" # Interfaz Interna
rdr on $int_if inet proto tcp from any to any port 80 -> 127.0.0.1 port 3128
Refrescamos el firewall con las nuevas reglas.
# pfctl -f /etc/pf.conf
Para verificar que las reglas fueron cargadas ejecutar
# pfctl -s nat
Ahora instalaremos y configuraremos Squid
# cd /usr/ports/www/squid
# make install clean
Editamos nuevamente /etc/rc.conf para que carge Squid al iniciar el sistema
squid_enable="YES"
Editar la configuracion de Squid en /usr/local/etc/squid/squid.conf las principales son estas si cada quien agregara o quitara a su gusto.
http_port 127.0.0.1:3128 transparent
cache_mem 50 MB
cache_dir ufs /usr/local/squid/cache 100 16 256
En la linea cache_dir ufs /usr/local/squid/cache 100 16 256 el numero 100 es el espacio de disco a usar de cache en este caso son 100 MB .
Listo tenemos instalado squid solo falta arrancarlo.
# /usr/local/etc/rc.d/squid start
Ahora hacemos los cambios necesarios en nuestros equipos cambiando las puerta de enlace por la ip de nuestro servidor, En este caso es 172.16.0.1.