Πώς να ελέγξετε την κυκλοφορία Ιστού χρησιμοποιώντας την προσωρινή μνήμη Squid και τον δρομολογητή Cisco στο Linux


Μια σημαντική εργασία σε ένα δίκτυο είναι ο έλεγχος και η διαχείριση των επιβατών που κάνουν σερφ στον ιστό, υπάρχουν πολλές λύσεις που μπορούν να χειριστούν αυτό το ζήτημα, μια από τις καλύτερες λύσεις είναι η χρήση της προσωρινής μνήμης καλαμαριών σε μια μηχανή Linux. Το Squid μπορεί να επιθεωρήσει, να περιορίσει και να αποθηκεύσει προσωρινά τις ροές ιστού από ένα δίκτυο σε άλλο δίκτυο, για παράδειγμα από ένα LAN στο Διαδίκτυο.

Υπάρχουν μερικοί τρόποι για την ανακατεύθυνση των αιτημάτων ιστού του πελάτη στο squid machine, σε αυτό το άρθρο θα σας δείξουμε πώς να ανακατευθύνετε την κυκλοφορία ιστού από έναν δρομολογητή CISCO σε ένα μηχάνημα κρυφής μνήμης Squid χρησιμοποιώντας το πρωτόκολλο WCCP.

Η παρακάτω εικόνα είναι ένα παράδειγμα βασικού σεναρίου.

Όπως βλέπετε στην παραπάνω εικόνα, όλες οι διακινήσεις ιστού του πελάτη πηγαίνουν πρώτα στο Cisco Router (αυτή είναι η προεπιλεγμένη πύλη τους), μετά ο δρομολογητής ανακατευθύνει σιωπηλά τα πακέτα στο squid machine, τώρα το squid μπορεί να παίξει τους ρόλους του, οι κύριοι ρόλοι είναι προσωρινή αποθήκευση περιεχομένων Ιστού, περιορισμός της πρόσβασης με βάση τομείς, χρονικά διαστήματα, διευθύνσεις IP, μέγεθος αρχείων κ.λπ.

Εξετάζουμε τη διαμόρφωση αυτού του σεναρίου σε δύο βασικά βήματα, πρώτα θα πρέπει να εγκαταστήσουμε και να διαμορφώσουμε το squid και το Linux και, στη συνέχεια, να διαμορφώσουμε τον δρομολογητή για να ανακατευθύνει τα πακέτα κυκλοφορίας ιστού στο squid χρησιμοποιώντας το πρωτόκολλο WCCP.

Περιβάλλον Δοκιμών

Σε αυτό το σενάριο χρησιμοποιώ το CENTOS 6.5 ως διακομιστή LINUX και το Cisco 2691 ως το σύστημα δρομολογητή μου.

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

Βήμα 1: Εγκατάσταση της προσωρινής μνήμης Squid

Το Squid είναι διαθέσιμο στο προεπιλεγμένο αποθετήριο του CENTOS, το εγκαθιστούμε πρώτα χρησιμοποιώντας την εντολή lovely yum και στη συνέχεια ξεκινάμε τις υπηρεσίες τους και, τέλος, ρυθμίζουμε την αυτόματη εκκίνηση της υπηρεσίας καλαμαριών.

yum -y install squid
service squid start
chkconfig squid on

Βήμα 2: Προετοιμασία της προσωρινής μνήμης Squid

Τώρα πρέπει να αλλάξουμε ορισμένες προεπιλεγμένες συμπεριφορές του λειτουργικού συστήματος centos, πρέπει να ενεργοποιήσουμε την προώθηση πακέτων και να απενεργοποιήσουμε το φίλτρο αντίστροφης διαδρομής (RPF), να ενεργοποιήσουμε την προώθηση πακέτων για να επιτρέψουμε στα centos να λειτουργούν ως διαφανής προωθητής (όπως δρομολογητής).

Επιτρέψτε μου να εξηγήσω με περισσότερες λεπτομέρειες, όταν οι επισκεψιμότητα γίνονται σε σεντ, έχουν τις διευθύνσεις προέλευσης και προορισμού, για παράδειγμα όταν ένας πελάτης εισάγει www.example.com στο πρόγραμμα περιήγησής του/της ένα πακέτο αιτήματος http δημιουργεί και να έχετε διεύθυνση IP προέλευσης του υπολογιστή-πελάτη (όπως 192.168.1.20) και διεύθυνση IP προορισμού του διακομιστή example.com (όπως 2.2.2.2).

Έτσι, όταν το πακέτο λαμβάνεται από centos, εντοπίζεται ως λάθος πακέτο, επειδή η διεύθυνση ip του centos δεν είναι η διεύθυνση προορισμού του πακέτου, για λόγους ασφαλείας τα centos αφήνουν το πακέτο, αλλά θέλουμε από το squid να ενεργεί σε διαφανή λειτουργία. Λέμε αυτή την κατάσταση στα centos ενεργοποιώντας το φίλτρο προώθησης πακέτων.

Στη συνέχεια θα πρέπει να απενεργοποιήσουμε το Reverse path Filtering για να επιτρέψουμε στα centos να δέχονται πακέτα που δεν είναι προσβάσιμα από το squid machine ή τα πακέτα που δεν έχουν διεύθυνση ip στο ίδιο υποδίκτυο του squid machine.

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

Στη συνέχεια πρέπει να δημιουργήσουμε μια διεπαφή GRE στο μηχάνημα CENTOS, για ποιο λόγο;; Επιτρέψτε μου να εξηγήσω περισσότερα, το πρωτόκολλο WCCP λειτουργεί μέσω μιας σήραγγας GRE, σημαίνει ότι η γλώσσα μεταξύ του δρομολογητή και του Squid είναι GRE, επομένως τα centos πρέπει να έχουν μια διεπαφή GRE για De- ενσωματώστε πακέτα GRE.

Θα πρέπει να δημιουργήσουμε το αρχείο διαμόρφωσης για τη διεπαφή GRE στη διαδρομή "/etc/sysconfig/network-script/ifcfg-gre0".

Εισαγάγετε τους παρακάτω κωδικούς στο αρχείο διαμόρφωσης 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

Αφού δημιουργήσουμε μια διεπαφή GRE, πρέπει να επανεκκινήσουμε την υπηρεσία δικτύου.

service network restart

Βήμα 3: Διαμόρφωση της προσωρινής μνήμης Squid

Πρέπει να πούμε στο καλαμάρι ότι δέχεται πακέτα WCCP από το δρομολογητή. Εισαγάγετε παρακάτω κωδικούς στο αρχείο /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

Αποθηκεύστε το αρχείο ρυθμίσεων και επανεκκινήστε την υπηρεσία squid.

service squid restart

Το Squid ακούει πακέτα στη θύρα 3128, αλλά ο αριθμός θύρας προορισμού του πακέτου μας είναι 80, επομένως για αλλαγή θύρας προορισμού 80 σε 3128<, πρέπει να δημιουργήσουμε έναν κανόνα NAT στο ενσωματωμένο τείχος προστασίας CENTOS (που ονομάζεται iptable).

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

Βήμα 4: Διαμορφώσεις δρομολογητή Cisco

Πρώτα πρέπει να ενεργοποιήσουμε το WCCP σε δρομολογητή 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

Στη συνέχεια, ορίζουμε μια άλλη λίστα πρόσβασης για δύο διαφορετικούς σκοπούς πρώτα, εκτός από την ανακατεύθυνση των επισκεπτών SQUID από το πρωτόκολλο WCCP (αν όχι πέφτουμε σε έναν άπειρο βρόχο!!) δεύτερον ορίζουμε από το οποίο διακινεί LAN θέλουμε να περάσουμε από τα WCCP και 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

Αφού δημιουργήσουμε τη λίστα πρόσβασης, πρέπει να διαμορφώσουμε το πρωτόκολλο WCCP στο δρομολογητή.

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

Όλα τα πράγματα είναι έτοιμα για το τελικό βήμα, πρέπει να πούμε στον δρομολογητή ότι σε ποια διεπαφή/διασύνδεση πρέπει να ανακατευθύνει τις επισκεψιμότητα χρησιμοποιώντας τη διαμόρφωση του WCCP.

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

Περίληψη

Ήρθε η ώρα να συνοψίσουμε όλες τις εντολές και τα κείμενα σε λίγες γραμμές για καλύτερη κατανόηση, σύμφωνα με το σενάριο που ανακατευθύνουμε τα πακέτα περιήγησης στο διαδίκτυο του προσωπικού (δηλαδή στη θύρα TCP 80) από τον ROUTER (που είναι η προεπιλεγμένη πύλη του τους πελάτες) προς τη μηχανή κρυφής μνήμης καλαμαριών χρησιμοποιώντας το πρωτόκολλο WCCP.

Όλες αυτές οι διαδικασίες έγιναν αθόρυβα και δεν υπάρχει πρόσθετη ρύθμιση παραμέτρων από την πλευρά του πελάτη. Έτσι μπορούμε να ελέγχουμε και να ορίζουμε πολιτικές για τις διαδικτυακές επισκεψιμότητας στο LAN. Για παράδειγμα, μπορούμε να αποκτήσουμε πρόσβαση στο web σερφάρισμα σε περιορισμένο χρονικό διάστημα, να περιορίσουμε το μέγιστο μέγεθος λήψης, να ορίσουμε την προσαρμοσμένη μαύρη λίστα και τη λίστα επιτρεπόμενων, να δημιουργήσουμε πλήρεις αναφορές σχετικά με τη χρήση της δραστηριότητας στο Διαδίκτυο κ.λπ.

Ένα από τα ενδιαφέροντα γεγονότα σε αυτό το σενάριο είναι όταν το squid machine σβήνει, ο δρομολογητής εντοπίζει αυτό το ζήτημα και σταματά να ανακατευθύνει τα πακέτα προς αυτό, ώστε να μπορείτε να απολαύσετε από μηδενική διακοπή λειτουργίας στο δίκτυό σας.

Εάν έχετε οποιεσδήποτε ερωτήσεις σχετικά με αυτό το άρθρο, αφήστε μια απάντηση στο παρακάτω πλαίσιο σχολίων.