Recherche de site Web

Comment contrôler le trafic Web à l'aide du cache Squid et du routeur Cisco sous Linux


Une tâche importante dans un réseau est de contrôler et de gérer le trafic de navigation sur le Web du personnel. Il existe de nombreuses solutions permettant de résoudre ce problème. L'une des meilleures solutions consiste à utiliser le cache Squid sur une machine Linux. Squid peut inspecter, limiter et mettre en cache les flux de trafic Web d'un réseau à un autre, par exemple d'un réseau local vers Internet.

Il existe plusieurs façons de rediriger les requêtes Web du client vers une machine Squid. Dans cet article, nous allons vous montrer comment rediriger le trafic Web d'un routeur CISCO vers une machine Squid Cache à l'aide du protocole WCCP.

L'image ci-dessous est un exemple d'un scénario de base.

Comme vous le voyez dans l'image ci-dessus, tous les trafics Web des clients vont d'abord au Routeur Cisco (c'est leur passerelle par défaut), puis le routeur redirige silencieusement les paquets vers la machine Squid, maintenant Squid peut jouer ses rôles, le rôle principal est mettre en cache le contenu Web, limiter l'accès en fonction des domaines, des intervalles de temps, des adresses IP, de la taille des fichiers, etc.

Nous examinons la configuration de ce scénario en deux étapes principales. Nous devons d'abord installer et configurer Squid et Linux, puis configurer le routeur pour rediriger les paquets de trafic Web vers Squid à l'aide du protocole WCCP.

Environnement de test

Dans ce scénario, j'utilise CENTOS 6.5 comme serveur LINUX et Cisco 2691 comme système de routeur.

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

Étape 1 : Installation de Squid Cache

Squid est disponible sur le référentiel par défaut de CENTOS, nous l'installons d'abord à l'aide de la commande Lovely yum, puis démarrons leurs services et enfin définissons le démarrage automatique du service Squid.

yum -y install squid
service squid start
chkconfig squid on

Étape 2 : Préparation du cache Squid

Nous devons maintenant modifier certains comportements par défaut du système d'exploitation Centos, nous devons activer le transfert de paquets et désactiver le filtre de chemin inverse (RPF), nous activons le transfert de paquets pour permettre au Centos d'agir comme un transitaire transparent (comme un routeur).

Permettez-moi de vous expliquer plus en détail, lorsque le trafic atteint des centos, il a ses adresses source et de destination, par exemple lorsqu'un client saisit www.example.com sur son navigateur, un paquet de requête http est généré et il avoir l'adresse IP source de la machine client (comme 192.168.1.20) et l'adresse IP de destination du serveur example.com (comme 2.2.2.2).

Ainsi, lorsque le paquet est reçu par Centos, il est détecté comme un mauvais paquet car l'adresse IP de Centos n'est pas l'adresse de destination du paquet. Pour des raisons de sécurité, Centos abandonne le paquet, mais nous voulons que Squid agisse en mode transparent. Nous informons cette situation aux centos en activant la potion de transfert de paquets.

Ensuite, nous devrions désactiver le filtrage de chemin inverse pour permettre aux centos d'accepter les paquets non accessibles par la machine Squid ou les paquets qui n'ont pas d'adresse IP dans le même sous-réseau de la machine 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

Ensuite, nous devons créer une interface GRE sur la machine CENTOS, pour quoi faire ? Laissez-moi vous expliquer davantage, le protocole WCCP fonctionne via un tunnel GRE, cela signifie que le langage entre le routeur et Squid est GRE, donc les centos doivent avoir une interface GRE pour De- encapsuler les paquets GRE.

Nous devons créer le fichier de configuration pour l'interface GRE dans le chemin « /etc/sysconfig/network-script/ifcfg-gre0 ».

Entrez les codes ci-dessous dans le fichier de configuration 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

Après avoir créé une interface GRE, nous devons redémarrer le service réseau.

service network restart

Étape 3 : configuration du cache Squid

Nous devons indiquer à Squid qu'il accepte les paquets WCCP du routeur. Entrez les codes ci-dessous dans le fichier /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

Enregistrez le fichier de configuration et redémarrez le service Squid.

service squid restart

Squid écoute les paquets dans le port 3128, mais le numéro de port de destination de notre paquet est 80, donc pour changer le port de destination 80 en 3128<, nous devons créer une règle NAT sur le pare-feu intégré CENTOS (qui s'appelle iptable).

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

Étape 4 : Configurations du routeur Cisco

Nous devons d’abord activer WCCP sur le routeur 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

Ensuite, nous définissons une autre liste d'accès pour deux objectifs différents : d'abord, nous devrions empêcher les trafics SQUID de la redirection par le protocole WCCP (sinon, nous tombons dans une boucle infinie !!) Deuxièmement, nous définissons quels trafics LAN nous voulons faire passer par WCCP et 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

Après avoir créé notre liste d'accès, nous devons configurer le protocole WCCP sur le routeur.

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

Tout est prêt pour l'étape finale, nous devons indiquer au routeur dans quelle(s) interface(s) il doit rediriger les trafics en utilisant leur configuration WCCP.

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

Résumé

Il est temps de résumer toutes les commandes et textes en quelques lignes pour une meilleure compréhension, selon le scénario nous redirigeons les paquets de navigation web du personnel (c'est à dire sur le port TCP 80) depuis le ROUTER (c'est la passerelle par défaut de les clients) vers la machine de cache Squid en utilisant le protocole WCCP.

Tous ces processus se sont déroulés en silence et il n’y a aucune configuration supplémentaire côté client. Nous pouvons ainsi contrôler et définir des politiques sur le trafic Web sur le réseau local. Par exemple, nous pouvons accéder à la navigation sur le Web dans un temps limité, limiter la taille maximale de téléchargement, définir notre liste noire et notre liste blanche personnalisées, générer des rapports complets sur l'utilisation de l'activité Internet, etc.

L'un des faits intéressants de ce scénario est que lorsque la machine Squid tombe en panne, le routeur détecte ce problème et arrête de rediriger les paquets vers celui-ci, afin que vous puissiez profiter d'un temps d'arrêt nul sur votre réseau.

Si vous avez des questions concernant cet article, veuillez laisser une réponse via la zone de commentaire ci-dessous.