Linux'ta Squid Cache ve Cisco Router Kullanarak Web Trafiğini Kontrol Etme


Bir ağdaki önemli görevlerden biri, personelin web'de gezinme trafiklerini kontrol etmek ve yönetmektir; bu sorunu çözebilecek birçok çözüm vardır; en iyi çözümlerden biri, bir Linux makinesinde kalamar önbelleği kullanmaktır. Squid, bir ağdan başka bir ağa, örneğin LAN'dan İnternet'e olan web trafiği akışını denetleyebilir, sınırlandırabilir ve önbelleğe alabilir.

İstemcinin web isteklerini squid makinesine yönlendirmenin birkaç yolu vardır; bu makalede, WCCP protokolünü kullanarak web trafiğini bir CISCO yönlendiricisinden bir Squid Cache makinesine nasıl yönlendireceğinizi göstereceğiz.

Aşağıdaki resim temel bir senaryo örneğidir.

Yukarıdaki resimde gördüğünüz gibi tüm istemcilerin web trafikleri önce Cisco Router'a gider (Bu onların varsayılan ağ geçididir), ardından yönlendirici paketleri sessizce squid makinesine yönlendirir, artık squid kendi rollerini oynayabilir, ana roller web içeriklerini önbelleğe alma, etki alanlarına, zaman aralıklarına, ip adreslerine, dosya boyutuna vb. dayalı olarak erişimi sınırlandırma.

Bu senaryonun yapılandırmasını iki Ana adımda inceliyoruz; önce squid ve Linux'u kurup yapılandırmalı, ardından yönlendiriciyi WCCP protokolünü kullanarak web trafiği paketlerini squid'e yönlendirecek şekilde yapılandırmalıyız.

Test Ortamı

Bu senaryoda LINUX sunucum olarak CENTOS 6.5'i ve Yönlendirici sistemim olarak Cisco 2691'i kullanıyorum.

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

Adım 1: Squid Cache'i Yükleme

Squid, CENTOS'un varsayılan deposunda mevcuttur, önce güzel yum komutunu kullanarak kuruyoruz, ardından hizmetlerini başlatıyoruz ve son olarak squid hizmetinin otomatik başlatılmasını ayarlıyoruz.

yum -y install squid
service squid start
chkconfig squid on

Adım 2: Kalamar Önbelleğini Hazırlama

Şimdi centos işletim sisteminin bazı varsayılan davranışlarını değiştirmemiz gerekiyor, paket iletmeyi etkinleştirmemiz ve ters Yol filtresini (RPF) devre dışı bırakmamız gerekiyor, centos'un şeffaf bir iletici gibi davranmasını sağlamak için paket iletmeyi etkinleştirmeliyiz (bir yönlendirici).

Daha ayrıntılı olarak açıklamama izin verin, trafikler centos cinsine girdiğinde kaynak ve hedef adresleri vardır; örneğin bir müşteri tarayıcısına www.example.com girdiğinde bir http istek paketi oluşturulur ve bu istemci makinenin kaynak ip adresine (192.168.1.20 gibi) ve example.com sunucusunun hedef ip adresine (2.2.2.2 gibi) sahip olmalıdır.

Yani centos bir paket aldığında yanlış paket olarak algılıyor çünkü centos ip adresi paketin hedef adresi değil, centos güvenlik nedeniyle paketi bırakıyor ama biz squid'in şeffaf modda hareket etmesini istiyoruz. Paket yönlendirme iksirini etkinleştirerek bu durumu centolara anlatıyoruz.

Daha sonra centos'un kalamar makinesi tarafından erişilemeyen paketleri veya kalamar makinesinin aynı alt ağında IP adresi olmayan paketleri kabul etmesine izin vermek için Ters Yol Filtrelemeyi devre dışı bırakmalıyız.

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

Daha sonra CENTOS makinesinde bir GRE arayüzü oluşturmamız gerekiyor, ne için? Daha fazlasını açıklamama izin verin, WCCP protokolü bir GRE Tüneli üzerinden çalışır, bu, yönlendirici ile Squid arasındaki dilin GRE olduğu anlamına gelir, dolayısıyla cento'ların De- GRE paketlerini kapsüller.

GRE arayüzüne ait konfigürasyon dosyasını “/etc/sysconfig/network-script/ifcfg-gre0” yolunda oluşturmalıyız.

ifcfg-gre0 yapılandırma dosyasına aşağıdaki kodları girin.

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

GRE arayüzü oluşturduktan sonra ağ hizmetini yeniden başlatmamız gerekiyor.

service network restart

Adım 3: Squid Önbelleğini Yapılandırma

Squid'e yönlendiriciden WCCP paketlerini kabul ettiğini söylememiz gerekiyor. /etc/squid/squid.conf dosyasına aşağıdaki kodları girin.

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

Yapılandırma dosyasını kaydedin ve squid hizmetini yeniden başlatın.

service squid restart

Squid 3128 bağlantı noktasındaki paketleri dinler, ancak paketimizin hedef bağlantı noktası numarası 80'dir, dolayısıyla hedef bağlantı noktası 80'i 3128< olarak değiştirmek için, CENTOS entegre güvenlik duvarında (iptable adında) bir NAT kuralı oluşturmamız gerekiyor.

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

Adım 4: Cisco Yönlendirici Yapılandırmaları

Öncelikle cisco router'da WCCP'yi etkinleştirmeliyiz.

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

Daha sonra iki farklı amaç için başka bir erişim listesi tanımlıyoruz, ilk önce SQUID trafiklerinin WCCP protokolüyle yeniden yönlendirilmesini hariç tutmalıyız (aksi takdirde sonsuz bir döngüye düşeriz!!) ikinci olarak tanımlarız WCCP ve SQUID üzerinden hangi LAN trafiğini geçirmek istediğimizi.

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

Erişim listemizi oluşturduktan sonra router üzerinde WCCP protokolünü yapılandırmamız gerekmektedir.

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

Son adım için her şey hazır, yönlendiriciye WCCP yapılandırmasını kullanarak trafikleri hangi arayüzde/arayüzlerde yönlendirmesi gerektiğini söylemeliyiz.

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

Özet

Daha iyi anlaşılması için tüm komutları ve metinleri birkaç satırda özetlemenin zamanı geldi; senaryoya göre, personelin web sörf paketlerini (yani TCP bağlantı noktası 80'de) ROUTER'dan (yani varsayılan ağ geçidi) yönlendiriyoruz. istemciler) WCCP protokolünü kullanarak kalamar önbellek makinesine doğru.

Tüm bu işlemler sessizce gerçekleşti ve client tarafında herhangi bir ek konfigürasyon yapılmadı. Böylece LAN'daki web trafiklerini kontrol edebilir ve politikalar belirleyebiliriz. Örneğin, yalnızca sınırlı bir süre içinde web'de gezinme erişimi elde edebilir, maksimum indirme boyutunu sınırlayabilir, özel kara listemizi ve beyaz listemizi tanımlayabilir, internet etkinliği kullanımına ilişkin tam raporlar oluşturabilir vb.

Bu senaryodaki ilginç gerçeklerden biri, kalamar makinesinin arızalanması durumunda yönlendiricinin bu sorunu tespit etmesi ve paketleri bu soruna yönlendirmeyi bırakmasıdır, böylece ağınızda sıfır kesinti süresinin keyfini çıkarabilirsiniz.

Bu makaleyle ilgili herhangi bir sorunuz varsa, lütfen aşağıdaki yorum kutusunu kullanarak yanıtınızı bırakın.