Cómo controlar el tráfico web usando 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, hay muchas soluciones que pueden manejar este problema, una de las mejores soluciones es usar la caché de calamar 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 va primero 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é el contenido web, limitar el acceso sobre 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.

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: preparación de la caché de Squid

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 que los centos actúen como un reenviador transparente (como un enrutador).

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

Entonces, cuando un paquete 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, los centos descartan 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, deberíamos deshabilitar el filtrado de ruta inversa para permitir que los centos acepten paquetes que no son accesibles por la máquina squid o paquetes que no tienen una dirección IP en la misma subred de la máquina squid.

# 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

A continuación, necesitamos crear una interfaz GRE en la máquina CENTOS, ¿para qué? Permítanme explicar más, el protocolo WCCP funciona a través de un túnel GRE, significa que el idioma entre el enrutador y Squid es GRE, por lo que los centos deben tener una interfaz GRE para desencapsular paquetes GRE.

Debemos 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 acepta 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 para cambiar 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 router 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 evitar que los tráficos SQUID se redirijan mediante el protocolo WCCP (¡si no, caemos en un bucle infinito!) En segundo lugar, 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 que 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, de acuerdo con el escenario, redirigimos los paquetes de navegación web del personal (que está en el puerto TCP 80) desde el ROUTER (que es la puerta de enlace predeterminada de los clientes) hacia la caché de squid. máquina que utiliza el protocolo WCCP.

Todo este proceso sucedió en silencio y no hay configuración adicional en el lado del cliente. Entonces podemos controlar y establecer políticas sobre el tráfico web en la LAN. Por ejemplo, podemos obtener acceso a la 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 la máquina de calamar se apaga, el enrutador detecta este problema y deja de redirigir los paquetes hacia él, para que pueda disfrutar del tiempo de inactividad cero en su red.

Si tiene alguna pregunta con respecto a este artículo, deje una respuesta a través del cuadro de comentarios a continuación.