Παρότι οι προσφερόμενες ταχύτητες σύνδεσης στο Internet συνεχώς αυξάνονται, ταυτόχρονα αυξάνονται και οι διαδικτυακές απαιτήσεις των χρηστών, με αποτέλεσμα η ταχύτητα πρόσβασης να μην είναι ποτέ αρκετή. Στα σχολικά εργαστήρια, όπου την ίδια σύνδεση Internet μοιράζονται πλήθος υπολογιστών και μαθητών, ακόμη και μια σύνδεση 24Mbps μπορεί να αποδειχθεί ανεπαρκής. Επιπλέον, πολλές φορές προκύπτει η ανάγκη αποτροπής πρόσβασης των μαθητών σε συγκεκριμένες ιστοσελίδες. Τα προβλήματα αυτά έρχεται να λύσει ένας διακομιστής διαμεσολάβησης (proxy server) και συγκεκριμένα ο Squid.

Ένα διακομιστής διαμεσολάβησης (θα το βρείτε συνηθέστερα ως μεσολάβησης) είναι ένας υπολογιστής που βρίσκεται ανάμεσα σε δύο υπολογιστές που επικοινωνούν. Ο διακομιστής διαμεσολάβησης αναλαμβάνει να μεταφέρει τα αιτήματα του ενός υπολογιστή στον άλλο καθώς και τις απαντήσεις του δεύτερου στον πρώτο. Υπάρχουν πολλών ειδών διακομιστές διαμεσολάβησης. Εδώ, μας ενδιαφέρει η περίπτωση των forward web proxy servers όπως ο Squid. Όταν χρησιμοποιείτε έναν web proxy server, τότε καθώς πλοηγείστε στο διαδίκτυο τα αιτήματα για λήψη ιστοσελίδων αποστέλλονται στον proxy server, που αναλαμβάνει να τα μεταφέρει στο τελικό διακομιστή, να λάβει την απάντηση και να την προωθήσει στον υπολογιστή σας. Και μόνο η κεντρική διαχείριση των αιτημάτων από τον proxy server επιτρέπει την καλύτερη διαχείριση της ροής των TCP αιτημάτων και την βελτίωση της ταχύτητας του Internet. Επιπλέον, οι web proxy servers, υλοποιούν και διαχειρίζονται κρυφή μνήμη (cache), που σημαίνει ότι αιτήματα προς τον ίδιο τελικό υπολογιστή και για το ίδιο περιεχόμενο μπορούν να εξυπηρετούνται μια φορά από τον τελικό υπολογιστή και τις υπόλοιπες απευθείας από τον proxy server. Φανταστείτε την περίπτωση ενός σχολικού εργαστηρίου όπου όλοι οι μαθητές θέλουν να δουν την ίδια ιστοσελίδα. Τα αιτήματα όλων των μαθητών καταφθάνουν στον proxy server που αποστέλλει ένα αίτημα προς τον υπολογιστή που παρέχει την ιστοσελίδα και εξυπηρετεί τα υπόλοιπα αιτήματα από την κρυφή μνήμη. Ακόμη, αφού όλα τα αιτήματα περνούν από τον proxy server, μπορείτε να τον ρυθμίσετε να "κόβει" συγκεκριμένες διευθύνσεις, δηλαδή να μην εξυπηρετεί καθόλου αιτήματα προς αυτές αποτρέποντας την πρόσβαση των μαθητών σε μη επιθυμητό περιεχόμενο (Το ΠΣΔ εφαρμόζει πολιτική απαγόρευσης ιστοσελίδων κεντρικά, αλλά μπορεί να θέλετε να αποτρέψετε την πρόσβαση σε επιπλέον ιστοσελίδες)

Το Squid είναι ελεύθερο λογισμικό και λογισμικό ανοικτού κώδικα που διανέμεται δωρεάν. Έχει πολύ μικρές υπολογιστικές απαιτήσεις και μπορεί να τρέξει σε συστήματα Linux αλλά και Windows. Εδώ, θα παρουσιάσουμε έναν σύντομο οδηγό εγκατάστασης και ρύθμισης του Squid αλλά και των υπολογιστών ενός δικτύου ώστε να τον χρησιμοποιούν. Οι ρυθμίσεις που ακολουθούν αναφέρονται σε δίκτυο με υπολογιστές Windows χωρίς την ύπαρξη κάποιου Server. Η υλοποίηση που ακολουθεί επιτρέπει τη σύνδεση στο διαδίκτυο μέσω του proxy όταν αυτός είναι διαθέσιμος αλλά και απευθείας όταν δεν είναι (άρα ακόμα και αν χαλάσει ο υπολογιστής που τρέχει ο Squid, οι υπολογιστές του τοπικού δικτύου θα έχουν πρόσβαση στο Internet). Ορθότερη πρακτική θα ήταν να υπάρχει κάποιος Windows Server ώστε να μπορεί να υλοποιηθεί το πρωτόκολλο αυτόματης ανακάλυψης του proxy, WPAD (Web Proxy Auto-Discovery) με χρήση του DHCP ή του DNS πρωτοκόλλου καθώς και η υποχρεωτική ρύθμιση όλων των υπολογιστών ώστε να χρησιμοποιούν τον proxy server (μέσω του group policy). Αν διαθέτετε εργαστήριο με Windows Server ή Ubuntu LTSP η τεχνική στήριξη του ΠΣΔ έχει δημοσιεύσει έναν κατατοπιστικότατο οδηγό για το Squid. Αν διαθέτετε δίκτυο με υπολογιστές Windows χωρίς Server συνεχίστε την ανάγνωση.

Προετοιμασία

Ρυθμίστε τον υπολογιστή όπου θα εγκαταστήσετε τον Squid ώστε να έχει στατική IP. Στην συνέχεια, υποθέτουμε ότι το δίκτυο σας έχει μάσκα υποδικτύου το 255.255.255.0 (μάλλον έτσι είναι) και ότι έχετε δώσει στον υπολογιστή που θα εγκατασταθεί ο Squid την IP x.y.z.w (π.χ. 192.168.0.10)

Εγκατάσταση και ρύθμιση του Squid
  • Κατεβάστε Squid από τη διεύθυνση http://squid.acmeconsulting.it/. Η τρέχουσα σταθερή έκδοση του Squid είναι η 2.7 stable 8 (επιλέξτε Squid Downloads)
  • Κάντε εξαγωγή τα περιεχόμενα του συμπιεσμένου αρχείου στο c:\squid (μην αλλάξετε το φάκελο γιατί θα πρέπει να αλλάξετε και άλλες ρυθμίσεις του Squid)
  • Πηγαίνετε στον φάκελο C:\squid\etc και μετονομάστε όλα τα αρχεία από .conf.default σε .conf
  • Κάντε τις απαραίτητες αλλαγές στο αρχείο squid.conf
    • Ρυθμίστε ποιοι υπολογιστές μπορούν να χρησιμοποιούν τον proxy server. Θα επιτρέψουμε μόνο τους υπολογιστές του τοπικού δικτύου. Κάντε εύρεση του acl localnet src και φροντίστε να υπάρχουν οι εξής δηλώσεις μόνο (όπου x.y.z από τη διεύθυνση IP του υπολογιστή που εγκαθίσταται ο Squid)
      • acl localnet src x.y.z.0/24
      • acl localnet src 127.0.0.1
    • Ρυθμίστε την κρυφή μνήμη του Squid. Εδώ, θα επιλέξουμε κρυφή μνήμη των 15GB (αλλάξτε το 15000 αν θέλετε). Κάντε εύρεση του cache_dir ufs και αλλάξτε το σε cache_dir ufs c:\squid\var\cache 15000 16 256 (αν έχετε δεύτερο σκληρό δίσκο προτιμήστε να τοποθετήσετε εκεί την κρυφή μνήμη). Δημιουργήστε τον φάκελο αν δεν υπάρχει ήδη.
    • Προαιρετικά, εισάγετε τους DNS servers που χρησιμοποιείτε. Κάντε εύρεση του dns_nameservers και προσθέστε τη γραμμή dns_nameservers 194.63.238.4 194.63.239.164 (ισχύουν για το ΠΣΔ στο νομό Σάμου)
    • Προαιρετικά, ρυθμίστε το Squid ώστε να απαγορεύει την πρόσβαση σε συγκεκριμένες ιστοσελίδες. Κάντε εύρεση του http_access allow localnet και πριν από αυτό εισάγετε τις δύο γραμμές που ακολουθούν:
      • acl bad url_regex -i "c:\squid\etc\squid-block.acl"
      • http_access deny bad
    • Δημιουργήστε το αρχείο c:\squid\etc\squid-block.acl με οποιονδήποτε text editor (π.χ. Σημειωματάριο) και εισάγετε σε αυτό τις διευθύνσεις που θέλετε να αποκλείσετε (μια σε κάθε γραμμή, αρχίζοντας με τελεία) π.χ.
      • .facebook.com
      • .youtube.com
    • Προαιρετικά, μπορούμε να ρυθμίσουμε και τα Winows Updates να γίνονται μέσω του proxy server. Προσθέστε στο αρχείο squid.conf τις παρακάτω γραμμές πριν τον ορισμό του acl localnet src:
      • refresh_pattern windowsupdate.com/.*\.(cab|exe) 4320 100% 43200 reload-into-ims
      • refresh_pattern download.microsoft.com/.*\.(cab|exe) 4320 100% 43200 reload-into-ims
      • refresh_pattern au.download.windowsupdate.com/.*\.(cab|exe) 4320 100% 43200 reload-into-ims
      • refresh_pattern msi$ 1440 100% 1440
      • maximum_object_size 1 GB
  • Το Squid χρησιμοποιεί εξ ορισμού την πόρτα 3128. Πρέπει να ρυθμίσετε το firewall των Windows ώστε να επιτρέπει συνδέσεις σε αυτή τη θύρα. Ανοίξτε τον Πίνακα Ελέγχου --> Τείχος Προστασίας των Windows --> Εξαιρέσεις --> Προσθήκη πόρτας και δίνεται ένα όνομα και θύρα 3128 (αφήστε το TCP επιλεγμένο) και ΟΚ
  • Δημιουργήστε τα swap directories. Από τη γραμμή εντολών πηγαίνετε στον φάκελο c:\squid\sbin και δίνετε την εντολή squid -z
  • Δημιουργούμε την υπηρεσία του Squid. Από το ίδιο σημείο δίνουμε την εντολή squid -i
  • Ξεκινούμε την υπηρεσία του Squid δίνοντας την εντολή net start squid (ή εναλλακτικά από τον Πίνακα Ελέγχου --> Υπηρεσίες)
Ρύθμιση των σταθμών εργασίας

Ρυθμίσεις για τον Squid σε σταθμό εργασίαςΥπάρχουν δύο τρόποι να ρυθμίσουμε τους σταθμούς εργασίας ώστε να χρησιμοποιούν τον Squid. Ο εύκολος περιλαμβάνει να πάμε στις ρυθμίσεις τοπικού δικτύου - Πίνακας Ελέγχου --> Επιλογές Internet --> Συνδέσεις --> Ρυθμίσεις τοπικού δικτύου (LAN) - όπου τσεκάρουμε τα "Χρησιμοποιήστε ένα διακομιστή μεσολάβησης..." και "Παράκαμψη διακομιστή μεσολάβησης για τοπικές διευθύνσεις" (και μόνο αυτά) και εισάγουμε τη διεύθυνση του υπολογιστή με το Squid (x.y.z.w) και τη θύρα 3128.

Έτσι, όμως, σε περίπτωση που ο υπολογιστής που τρέχει ο Squid δεν δουλεύει, δεν θα μπορούμε να συνδεθούμε στο Internet. Οπότε περνάμε στον δεύτερο τρόπο:

  • Δημιουργήστε με οποιονδήποτε text editor ένα αρχείο με όνομα proxy.pac (ή όποιο άλλο θέλετε) και περιεχόμενο το εξής (αντικαταστήστε τα x.y.z.w):
    • function FindProxyForURL(url, host) {
    •   return "PROXY x.y.z.w:3128; DIRECT";
    • }
  • Αποθηκεύστε το σε ένα κοινόχρηστο φάκελο στον υπολογιστή που εγκαταστήσατε τον Squid (π.χ. \\server\share όπου server το όνομα του υπολογιστή και share το όνομα του κοινόχρηστου φακέλου)
  • Ρυθμίσεις για τον Squid σε σταθμό εργασίαςΣε κάθε σταθμό εργασίας που θέλετε να χρησιμοποιεί τον Squid πηγαίνετε στις ρυθμίσεις τοπικού δικτύου - Πίνακας Ελέγχου --> Επιλογές Internet --> Συνδέσεις --> Ρυθμίσεις τοπικού δικτύου (LAN) - και τσεκάρετε το "Χρήση δέσμης ενεργειών για αυτόματη ρύθμιση των παραμέτρων". Στη διεύθυνση εισάγετε το file:////server/share/proxy.pac (ναι, έχει τέσσερις πλάγιες, κανονικές κάθετους) και πατάτε OK. Αν διαπιστώσετε ότι οι σταθμοί εργασίας δεν μπορούν να βρουν το κοινόχρηστο αρχείο και άρα δεν χρησιμοποιούν τον Squid παρότι αυτός τρέχει, αντιγράψτε το αρχείο τοπικά σε κάθε σταθμό εργασίας, σε έναν φάκελο που να έχουν πρόσβαση όλοι οι χρήστες του σταθμού, και δώστε στη διεύθυνση το URL του τοπικού αρχείου π.χ. file:////C:/proxy.pac (περισσότερα για το Proxy Automatic Configuration στο http://findproxyforurl.com/)

Δύο τελευταία βήματα:

  • Το πρόγραμμα περιήγησης Google Chrome παίρνει αυτόματα τις ρυθμίσεις από τα Windows. Αν χρησιμοποιείτε Mozilla Firefox πρέπει σε κάθε σταθμό εργασίας να σιγουρευτείτε ότι ο Firefox είναι ρυθμισμένος να λαμβάνει τις ρυθμίσεις συστήματος (είναι η προεπιλογή). Ανοίξτε το Firefox και επιλέξτε Εργαλεία --> Επιλογές --> Για προχωρημένους --> Δίκτυο --> Ρυθμίσεις και επιλέξτε το "Χρήση ρυθμίσεων διαμεσολαβητή συστήματος".
  • Για να λαμβάνουν οι σταθμοί εργασίας τα Windows Updates μέσω του Squid πρέπει σε κάθε σταθμό εργασίας να ανοίξουμε τη γραμμή εντολών και να δώσουμε την εντολή proxy-cfg –p x.y.z.w:3128 (αντικαταστήστε τα x.y.z.w)

Για να βεβαιωθείτε ότι οι σταθμοί εργασίας πράγματι χρησιμοποιούν τον Squid επισκεφθείτε κάποια ιστοσελίδα και στη συνέχεια ελέγξτε το αρχείο c:\squid\var\logs\access.log για να σιγουρευτείτε ότι έχει καταγραφεί αυτή η ιστοσελίδα.

Ο Squid για συνηθισμένη χρήση και μικρά δίκτυα (μέχρι 10-12 σταθμούς εργασίας) δεν έχει μεγάλες υπολογιστικές απαιτήσεις, οπότε ο υπολογιστής που τρέχει ο Squid μπορεί να χρησιμοποιείται κανονικά και για άλλες εργασίες. Τελικά, θα έχετε πετύχει καλύτερη αξιοποίηση της διαδικτυακής σύνδεσης και ταχύτερη απόκριση κατά την πλοήγηση καθώς είναι συνηθισμένο φαινόμενο σε ένα σχολικό εργαστήριο οι χρήστες-μαθητές να επισκέπτονται συγκεκριμένες ιστοσελίδες (π.χ. όταν τους καθοδηγείτε εσείς να επισκεφτούν μια συγκεκριμένη ιστοσελίδα) ενώ μπορείτε να απαγορεύσετε την πρόσβαση σε ιστοσελίδες της επιλογής σας (βέβαια αυτό παρακάμπτεται αλλά αν έχετε μαθητές που θα βρουν τον τρόπο... ε, τότε χαλάλι τους!)