Wyszukiwanie w witrynie

Jak kontrolować ruch sieciowy za pomocą pamięci podręcznej Squid i routera Cisco w systemie Linux


Jednym z ważnych zadań w sieci jest kontrola i zarządzanie ruchem personelu podczas surfowania po Internecie. Istnieje wiele rozwiązań, które radzą sobie z tym problemem, a jednym z najlepszych jest użycie pamięci podręcznej Squid na komputerze z systemem Linux. Squid może sprawdzać, ograniczać i buforować przepływ ruchu sieciowego z jednej sieci do drugiej, na przykład z sieci LAN do Internetu.

Istnieje kilka sposobów przekierowywania żądań sieciowych klienta do maszyny squid. W tym artykule pokażemy, jak przekierować ruch sieciowy z routera CISCO do maszyny Squid Cache przy użyciu protokołu WCCP.

Poniższy obrazek jest przykładem podstawowego scenariusza.

Jak widać na powyższym obrazku, cały ruch sieciowy klienta najpierw trafia do routera Cisco (jest to jego brama domyślna), następnie router po cichu przekierowuje pakiety do maszyny squid, teraz squid może odgrywać swoje role, główną rolą jest buforowanie treści internetowych, ograniczanie dostępu na podstawie domen, przedziałów czasowych, adresów IP, rozmiaru plików itp.

Przeglądamy konfigurację tego scenariusza w dwóch głównych krokach. Najpierw powinniśmy zainstalować i skonfigurować squid i Linux, a następnie skonfigurować router tak, aby przekierowywał pakiety ruchu sieciowego do squid przy użyciu protokołu WCCP.

Środowisko testowe

W tym scenariuszu używam CENTOS 6.5 jako mojego serwera LINUX i Cisco 2691 jako mojego systemu routera.

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

Krok 1: Instalacja pamięci podręcznej Squid

Squid jest dostępny w domyślnym repozytorium CENTOS, najpierw instalujemy go za pomocą uroczego polecenia yum, następnie uruchamiamy jego usługi i na koniec ustawiamy automatyczne uruchamianie usługi squid.

yum -y install squid
service squid start
chkconfig squid on

Krok 2: Przygotowanie pamięci podręcznej Squid

Teraz musimy zmienić niektóre domyślne zachowania systemu operacyjnego centos, musimy włączyć przekazywanie pakietów i wyłączyć filtr odwrotnej ścieżki (RPF), włączamy przekazywanie pakietów, aby centos działał jako przezroczysty forwarder (jak router).

Pozwólcie, że wyjaśnię bardziej szczegółowo, kiedy ruch trafia do centos, ma swój adres źródłowy i docelowy, na przykład gdy klient wchodzi na www.example.com w swojej przeglądarce, generowany jest pakiet żądania http i to mieć źródłowy adres IP komputera klienckiego (np. 192.168.1.20) i docelowy adres IP serwera example.com (np. 2.2.2.2).

Tak więc, gdy pakiet odebrany przez centos, zostanie wykryty jako nieprawidłowy pakiet, ponieważ adres ip centos nie jest adresem docelowym pakietu, ze względów bezpieczeństwa centos odrzuca pakiet, ale chcemy, aby squid działał w trybie przezroczystym. Informujemy o tej sytuacji centos, włączając miksturę przekazywania pakietów.

Następnie powinniśmy wyłączyć filtrowanie ścieżki zwrotnej, aby centos akceptował pakiety niedostępne dla maszyny squid lub pakiety, które nie mają adresu IP w tej samej podsieci maszyny 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

Następnie musimy stworzyć interfejs GRE na maszynie CENTOS, po co? Pozwól, że wyjaśnię więcej, protokół WCCP działa poprzez tunel GRE, co oznacza, że język pomiędzy routerem a Squidem to GRE, więc centos muszą mieć interfejs GRE do De- enkapsulować pakiety GRE.

Powinniśmy stworzyć plik konfiguracyjny interfejsu GRE w ścieżce „/etc/sysconfig/network-script/ifcfg-gre0”.

Wpisz poniższe kody w pliku konfiguracyjnym 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

Po utworzeniu interfejsu GRE musimy zrestartować usługę sieciową.

service network restart

Krok 3: Konfiguracja pamięci podręcznej Squid

Musimy poinformować squida o akceptowaniu pakietów WCCP z routera. Wpisz poniższe kody w pliku /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

Zapisz plik konfiguracyjny i zrestartuj usługę squid.

service squid restart

Squid nasłuchuje pakietów w porcie 3128, ale numer portu docelowego naszego pakietu to 80, więc aby zmienić port docelowy 80 na 3128<, musimy utworzyć regułę NAT na zintegrowanej zaporze sieciowej CENTOS (o nazwie iptable).

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

Krok 4: Konfiguracje routerów Cisco

Najpierw powinniśmy włączyć WCCP na routerze 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

Następnie definiujemy kolejną listę dostępu dla dwóch różnych celów. Najpierw powinniśmy wyłączyć ruch SQUID z przekierowania przez protokół WCCP (jeśli nie, wpadniemy w nieskończoną pętlę!!), a następnie definiujemy. jaki ruch LAN chcemy przepuszczać przez WCCP i 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

Po utworzeniu naszej listy dostępowej musimy skonfigurować protokół WCCP na routerze.

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

Wszystko jest gotowe do ostatniego kroku. Musimy powiedzieć routerowi, w którym interfejsie/interfejsach ma przekierowywać ruch, korzystając z konfiguracji WCCP.

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

Streszczenie

Czas podsumować wszystkie polecenia i teksty w kilku linijkach dla lepszego zrozumienia, zgodnie ze scenariuszem przekierowujemy pakiety surfowania po Internecie personelu (czyli na porcie TCP 80) z ROUTER (czyli domyślna brama klientów) w kierunku maszyny pamięci podręcznej Squid przy użyciu protokołu WCCP.

Wszystkie te procesy odbyły się w trybie cichym i nie ma dodatkowej konfiguracji po stronie klienta. Dzięki temu możemy kontrolować i ustalać zasady dotyczące ruchu sieciowego w sieci LAN. Na przykład możemy uzyskać dostęp do surfowania po Internecie w ograniczonym czasie, ograniczyć maksymalny rozmiar pobierania, zdefiniować naszą niestandardową czarną i białą listę, wygenerować pełne raporty dotyczące wykorzystania aktywności w Internecie itp.

Jednym z interesujących faktów w tym scenariuszu jest to, że gdy maszyna squid ulegnie awarii, router wykrywa ten problem i przestaje przekierowywać pakiety w jego stronę, dzięki czemu możesz cieszyć się zerowymi przestojami w swojej sieci.

Jeśli masz jakieś pytania dotyczące tego artykułu, zostaw odpowiedź w polu komentarza poniżej.