Búsqueda de sitios web

Cómo controlar el tráfico web utilizando Squid Cache y Cisco Router en Linux


Una tarea importante en una red es controlar y administrar el tráfico de navegación web del personal, existen muchas soluciones que pueden manejar este problema, una de las mejores soluciones es usar squid cache en una máquina Linux. Squid puede inspeccionar, limitar y almacenar en caché el flujo de tráfico web de una red a otra, por ejemplo, de una LAN a Internet.

Hay algunas formas de redirigir las solicitudes web del cliente a la máquina Squid. En este artículo le mostraremos cómo redirigir el tráfico web desde un enrutador CISCO a una máquina Squid Cache utilizando el protocolo WCCP.

La siguiente imagen es un ejemplo de un escenario básico.

Como puede ver en la imagen de arriba, todo el tráfico web del cliente primero va al enrutador Cisco (que es su puerta de enlace predeterminada), luego el enrutador redirige silenciosamente los paquetes a la máquina Squid, ahora Squid puede desempeñar sus funciones, la función principal es almacenar en caché contenidos web, limitar el acceso en función de dominios, intervalos de tiempo, direcciones IP, tamaño de archivos, etc.

Revisamos la configuración de este escenario en dos pasos principales: primero debemos instalar y configurar squid y Linux, luego configurar el enrutador para redirigir los paquetes de tráfico web a squid usando el protocolo WCCP.

Entorno de prueba

En este escenario utilizo CENTOS 6.5 como mi servidor LINUX y Cisco 2691 como mi sistema de enrutador.

Operating System: CENTOS 6.5
Application: Squid
Router: Cisco 2691

Paso 1: instalar Squid Cache

Squid está disponible en el repositorio predeterminado de CENTOS, primero lo instalamos usando el encantador comando yum y luego iniciamos sus servicios y finalmente configuramos el inicio automático del servicio squid.

yum -y install squid
service squid start
chkconfig squid on

Paso 2: preparar el caché de calamar

Ahora debemos cambiar algunos comportamientos predeterminados del sistema operativo centos, necesitamos habilitar el reenvío de paquetes y deshabilitar el filtro de ruta inversa (RPF), habilitamos el reenvío de paquetes para permitir que centos actúe como un reenviador transparente (como un enrutador).

Permítanme explicarles con más detalle, cuando el tráfico llega a centos, tiene sus direcciones de origen y destino, por ejemplo, cuando un cliente ingresa www.example.com en su navegador, se genera un paquete de solicitud http y tener la dirección IP de origen de la máquina cliente (como 192.168.1.20) y la dirección IP de destino del servidor example.com (como 2.2.2.2).

Entonces, cuando el paquete es recibido por centos, lo detecta como un paquete incorrecto porque la dirección IP de centos no es la dirección de destino del paquete; por razones de seguridad, centos descarta el paquete, pero queremos que squid actúe en modo transparente. Le contamos esta situación a centos habilitando la poción de reenvío de paquetes.

A continuación, debemos desactivar el filtrado de ruta inversa para permitir que los centos acepten paquetes a los que no puede acceder Squid Machine o paquetes que no tienen dirección IP en la misma subred de Squid Machine.

nano /etc/sysctl.conf
net.ipv4.ip_forward = 1 #set to 1 for enable the packet forwarding feature
net.ipv4.conf.default.rp_filter = 0 # set to 0 for disable the reverse path filter behavior

Lo siguiente que necesitamos es crear una interfaz GRE en la máquina CENTOS, ¿para qué? Déjame explicarte más, el protocolo WCCP funciona a través de un túnel GRE, lo que significa que el idioma entre el enrutador y Squid es GRE, por lo que centos necesita tener una interfaz GRE para De- encapsular paquetes GRE.

Deberíamos crear el archivo de configuración para la interfaz GRE en la ruta “/etc/sysconfig/network-script/ifcfg-gre0”.

Ingrese los siguientes códigos en el archivo de configuración ifcfg-gre0.

DEVICE=gre0
BOOTPROTO=static
IPADDR=10.0.0.2         #unused ip address in your network
NETMASK=255.255.255.252
ONBOOT=yes
IPV6INIT=no

Después de crear una interfaz GRE, debemos reiniciar el servicio de red.

service network restart

Paso 3: Configurar Squid Cache

Necesitamos decirle a Squid que acepte paquetes WCCP del enrutador. Ingrese los siguientes códigos en el archivo /etc/squid/squid.conf.

http_port 3128 intercept                 # Define SQUID listening port
wccp2_router 192.168.1.254          #ip address of the router
wccp2_forwarding_method gre
wccp2_return_method gre
wccp2_service standard 0

Guarde el archivo de configuración y reinicie el servicio Squid.

service squid restart

Squid escucha paquetes en el puerto 3128, pero el número de puerto de destino de nuestro paquete es 80, por lo que cambia el puerto de destino 80 a 3128<, necesitamos crear una regla NAT en el firewall integrado CENTOS (que se llama iptable).

iptables -t nat -A PREROUTING -i gre0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A POSTROUTING -j MASQUERADE

Paso 4: Configuraciones del enrutador Cisco

Primero debemos habilitar WCCP en el enrutador Cisco.

R1(config)# ip wccp version 2
Then we must use an ACL for introducing SQUID cache machine to router
R1(config)# ip access-list standard SQUID-MACHINE
R1(config-std-nacl)# permit host 192.168.1.10

A continuación, definimos otra lista de acceso para dos propósitos diferentes: primero, debemos excluir el tráfico SQUID de la redirección mediante el protocolo WCCP (¡si no, caemos en un bucle infinito!). Segundo, definimos qué tráficos LAN queremos que pasen por WCCP y SQUID.

R1(config)#ip access-list LAN-TRAFFICS
R1(config-ext-nacl)#deny ip host 192.168.1.10 any                            #Prevent SQUID to get in loop
R1(config-ext-nacl)#permit tcp 192.168.1.0 0.0.0.255 any equal www           #define LAN Traffics

Después de crear nuestra lista de acceso debemos configurar el protocolo WCCP en el enrutador.

R1(config)# ip wccp web-cache redirect-list LAN-TRAFFIC group-list SQUID-MACHINE

Todo está listo para el paso final, debemos decirle al enrutador en qué interfaz/interfaces debe redirigir el tráfico usando su configuración WCCP.

R1(config)#interface fastEthernet 0/0
R1((config-if)# ip wccp web-cache redirect in

Resumen

Es hora de resumir todos los comandos y textos en unas pocas líneas para una mejor comprensión, según el escenario en el que redirigimos los paquetes de navegación web del personal (es decir, en el puerto TCP 80) desde el ROUTER (que es la puerta de enlace predeterminada de los clientes) hacia la máquina de caché Squid utilizando el protocolo WCCP.

Todos estos procesos se realizaron de forma silenciosa y no hay ninguna configuración adicional en el lado del cliente. Así podremos controlar y establecer políticas sobre el tráfico web en la LAN. Por ejemplo, podemos obtener acceso a navegación web solo en un tiempo limitado, limitar el tamaño máximo de descarga, definir nuestra lista blanca y negra personalizada, generar informes completos del uso de la actividad de Internet, etc.

Uno de los hechos interesantes en este escenario es que cuando Squid Machine falla, el enrutador detecta este problema y deja de redirigir paquetes hacia él, para que pueda disfrutar de un tiempo de inactividad cero en su red.

Si tiene alguna pregunta sobre este artículo, deje una respuesta en el cuadro de comentarios a continuación.