Website-Suche

So steuern Sie den Webverkehr mithilfe von Squid Cache und Cisco Router unter Linux


Eine wichtige Aufgabe in einem Netzwerk ist die Kontrolle und Verwaltung des Web-Surf-Verkehrs der Mitarbeiter. Es gibt viele Lösungen, die dieses Problem lösen können. Eine der besten Lösungen ist die Verwendung des Squid-Cache auf einem Linux-Rechner. Squid kann den Web-Verkehrsfluss von einem Netzwerk zu einem anderen Netzwerk, beispielsweise von einem LAN zum Internet, überprüfen, begrenzen und zwischenspeichern.

Es gibt mehrere Möglichkeiten, die Webanfragen des Clients an die Squid-Maschine umzuleiten. In diesem Artikel zeigen wir Ihnen, wie Sie den Webverkehr von einem CISCO-Router mithilfe des WCCP-Protokolls an eine Squid-Cache-Maschine umleiten.

Das Bild unten ist ein Beispiel für ein Grundszenario.

Wie Sie im obigen Bild sehen können, wird der gesamte Webverkehr des Clients zuerst an den Cisco Router (das ist sein Standard-Gateway) weitergeleitet. Anschließend leitet der Router die Pakete stillschweigend an die Squid-Maschine weiter. Jetzt kann Squid seine Rollen spielen, nämlich die Hauptrolle Zwischenspeichern von Webinhalten, Beschränken des Zugriffs basierend auf Domänen, Zeitintervallen, IP-Adressen, Dateigröße usw.

Wir überprüfen die Konfiguration dieses Szenarios in zwei Hauptschritten: Zuerst sollten wir Squid und Linux installieren und konfigurieren und dann den Router so konfigurieren, dass er Web-Traffic-Pakete mithilfe des WCCP-Protokolls an Squid umleitet.

Testumgebung

In diesem Szenario verwende ich CENTOS 6.5 als meinen LINUX-Server und Cisco 2691 als mein Router-System.

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

Schritt 1: Squid Cache installieren

Squid ist im Standard-Repository von CENTOS verfügbar. Wir installieren es zunächst mit dem Befehl „Lovely Yum“, starten dann deren Dienste und stellen schließlich den automatischen Start des Squid-Dienstes ein.

yum -y install squid
service squid start
chkconfig squid on

Schritt 2: Squid Cache vorbereiten

Jetzt müssen wir einige Standardverhaltensweisen des Centos-Betriebssystems ändern. Wir müssen die Paketweiterleitung aktivieren und den Reverse Path Filter (RPF) deaktivieren. Wir aktivieren die Paketweiterleitung, damit der Centos als transparenter Weiterleiter fungieren kann (wie ein Router).

Lassen Sie mich das genauer erklären: Wenn Datenverkehr in Centos eingeht, hat er seine Quell- und Zieladressen, zum Beispiel wenn ein Client in seinem Browser www.example.com eingibt, ein HTTP-Anforderungspaket generiert und es generiert Sie haben die Quell-IP-Adresse des Client-Computers (wie 192.168.1.20) und die Ziel-IP-Adresse des example.com-Servers (wie 2.2.2.2).

Wenn also ein Paket von Centos empfangen wird, wird es als falsches Paket erkannt, da die Centos-IP-Adresse nicht die Zieladresse des Pakets ist. Aus Sicherheitsgründen verwirft Centos das Paket, aber wir möchten, dass Squid im transparenten Modus agiert. Wir teilen Centos diese Situation mit, indem wir den Paketweiterleitungstrank aktivieren.

Als nächstes sollten wir die Reverse-Path-Filterung deaktivieren, damit die Centos Pakete akzeptieren können, auf die die Squid-Maschine nicht zugreifen kann, oder Pakete, die keine IP-Adresse im selben Subnetz der Squid-Maschine haben.

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

Als nächstes müssen wir eine GRE-Schnittstelle auf dem CENTOS-Rechner erstellen, wofür?? Lassen Sie mich das näher erläutern. Das WCCP-Protokoll funktioniert über einen GRE-Tunnel. Das bedeutet, dass die Sprache zwischen Router und Squid GRE ist, sodass Centos eine GRE-Schnittstelle für De- GRE-Pakete kapseln.

Wir sollten die Konfigurationsdatei für die GRE-Schnittstelle im Pfad „/etc/sysconfig/network-script/ifcfg-gre0“ erstellen.

Geben Sie die folgenden Codes in die Konfigurationsdatei ifcfg-gre0 ein.

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

Nachdem wir eine GRE-Schnittstelle erstellt haben, müssen wir den Netzwerkdienst neu starten.

service network restart

Schritt 3: Squid Cache konfigurieren

Wir müssen Squid mitteilen, dass er WCCP-Pakete vom Router akzeptiert. Geben Sie die folgenden Codes in die Datei /etc/squid/squid.conf ein.

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

Speichern Sie die Konfigurationsdatei und starten Sie den Squid-Dienst neu.

service squid restart

Squid wartet auf Pakete im Port 3128, aber die Zielportnummer unseres Pakets ist 80, daher muss der Zielport 80 in 3128 geändert werden, wir müssen eine NAT-Regel für die integrierte CENTOS-Firewall erstellen (mit dem Namen iptable).

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

Schritt 4: Cisco-Router-Konfigurationen

Zuerst sollten wir WCCP auf dem Cisco-Router aktivieren.

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

Als nächstes definieren wir eine weitere Zugriffsliste für zwei verschiedene Zwecke. Erstens sollten wir SQUID-Verkehr von der Umleitung durch das WCCP-Protokoll ausschließen (andernfalls geraten wir in eine Endlosschleife!!). Zweitens definieren wir welchen LAN-Verkehr wir über WCCP und SQUID weiterleiten möchten.

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

Nachdem wir unsere Zugriffsliste erstellt haben, müssen wir das WCCP-Protokoll auf dem Router konfigurieren.

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

Alles ist bereit für den letzten Schritt. Wir müssen dem Router mitteilen, über welche Schnittstelle(n) er den Datenverkehr mithilfe seiner WCCP-Konfiguration umleiten muss.

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

Zusammenfassung

Es ist an der Zeit, alle Befehle und Texte zum besseren Verständnis in ein paar Zeilen zusammenzufassen, entsprechend dem Szenario, in dem wir die Web-Surf-Pakete der Mitarbeiter (das ist auf TCP-Port 80) vom ROUTER (das ist das Standard-Gateway von) umleiten die Clients) an die Squid-Cache-Maschine unter Verwendung des WCCP-Protokolls.

Alle diese Prozesse erfolgten im Hintergrund und es gibt keine zusätzliche Konfiguration auf der Clientseite. So können wir den Webverkehr im LAN kontrollieren und Richtlinien festlegen. Beispielsweise können wir innerhalb einer begrenzten Zeit Zugang zum Surfen im Internet erhalten, die maximale Downloadgröße begrenzen, unsere benutzerdefinierten Blacklists und Whitelists definieren, vollständige Berichte über die Nutzung der Internetaktivitäten erstellen usw.

Eine der interessanten Tatsachen in diesem Szenario ist, dass der Router dieses Problem erkennt und aufhört, Pakete dorthin umzuleiten, wenn die Squid-Maschine ausfällt, sodass Sie von null Ausfallzeiten in Ihrem Netzwerk profitieren können.

Wenn Sie Fragen zu diesem Artikel haben, hinterlassen Sie bitte eine Antwort im Kommentarfeld unten.