Κόψιμο σελίδων με Squid σε Ubuntu 10.04

Ξεκίνησε από Δημήτρης Δαλαγιώργος, 18 Νοε 2010, 01:13:44 ΜΜ

« προηγούμενο - επόμενο »

Δημήτρης Δαλαγιώργος

Ακολούθησα τις οδηγίες που υπάρχουν στο

"Οδηγίες εγκατάστασης και ρύθμισης διακομιστή μεσολάβησης Squid" Έκδοση: 1.1

για να κόψω π.χ. το facebook αλλά όταν πήγα να τρέξω την εντολή

sudo invoke-rc.d squid3 force-reload

μου αντιγύρισε

invoke-rc.d: unknown initscript, /etc/init.d/squid3 not found.
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

odysseas

Πρόεδρε, δεν ξέρω αν έχει σχέση με το πρόβλημα (μάλλον κάποιο λάθος έχεις κάνει νωρίτερα) αλλά υπάρχει και νεώτερη έκδοση του οδηγού:
http://ts.sch.gr/ts/downloadsDetails.do?action=downloadsDetails&itemId=351990
Επίσης, υπάρχουν και οδηγίες στο wiki των sch-scripts:
http://wiki.ubuntu-gr.org/sch-scripts/squid
Τέλος, υπάρχει και το scriptάκι του apanagio:
https://alkisg.mysch.gr/steki/index.php?topic=3383.0

apanagio

Με πρόλαβε ο odysseas.

Αν θες έλα και από το irc να το δούμε επιτόπου (μενού βοήθεια των sch-scripts) ή:
http://webchat.freenode.net/?channels=linux.sch.gr

Δημήτρης Δαλαγιώργος

Απ' ότι φαίνεται δεν είχα εγκατεστημένο το squid3.

Το εργαστήριο αποτελείται από standalone υπολογιστές. Έτρεξα το script και μετά προσπαθώ μέσω cssh να τρέξω τις ρυθμίσεις του squid για τους clinets και μου βγάζει λάθος:

sudo gconftool-2 --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type string --set '/system/proxy/mode' 'manual'
Αποτυχία πρόσβασης στην πηγή ή τις πηγές ρυθμίσεων: Αποτυχία επικοινωνίας με τον εξυπηρετητή ρυθμίσεων. Μπορεί να είναι απενεργοποιημένη η δικτύωση TCP/IP για το ORBit, ή να παραμένουν παλαιά κλειδώματα NFS λόγω κατάρρευσης του συστήματος. Για πληροφορίες δείτε το  http://project.gnome.org/gconf/. (Λεπτομέρειες -  1: Δεν εκτελείται εντός ενεργής συνεδρίας)
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

apanagio

Για αρχή για να σιγουρευτείς ότι ο squid μπήκε σωστά, πήγαινε σε έναν client και ρύθμισε χειροκίνητα τον proxy. Σύστημα--> προτιμήσεις--> διαμεσολαβητής δικτύου

Επίσης στους clients θα χρειαστείς και το πακέτο ident2 για να λειτουργήσει η ανά χρήστη ρύθμιση των δικαιωμάτων.

Για να ρυθμίσεις από την κονσόλα νομίζω θα χρειαστείς και --direct δηλαδή θα πρέπει να δώσεις:
gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type string --set '/system/proxy/mode' 'manual'
gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type bool --set '/system/http_proxy/use_http_proxy' true
gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type string --set '/system/http_proxy/host' 'server'
gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type int --set '/system/http_proxy/port' 3128


και αντί για "server" να βάλεις την πραγματική ip του server σου
Με το --direct δεν απαιτείται η ύπαρξη κάποιου δαίμονα ρυθμίσεων (gconfd) αλλά οι ρυθμίσεις γράφονται κατευθείαν στη βάση

Δημήτρης Δαλαγιώργος

Προφανώς κάτι δεν κάνω καλά. Πριν πάμε στους clients, ας δούμε γιατί δεν δουλεύει ούτε στον server.

Η ρύθμιση του διαμεσολαβητή δικτύου είναι:

Χειροκίνητη ρύθμιση διαμεσολαβητή, 127.0.0.1 port 3128

Η ρύθμιση του firefox είναι να χρησιμοποιεί τις ρυθμίσεις του διαμεσολαβητή του συστήματος.

Στο squid.conf έχει φτιαχτεί απ' το script ο παρακάτω κανόνας:

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS

#SCH-SCRIPTS begin
        error_directory /usr/share/squid3/errors/el   
        acl schoolnet src 10.142.66.10/24
        acl banned_domains url_regex -i "/etc/squid3/banned_domains.acl"
        acl banned_users ident "/etc/squid3/banned_users.acl"
        acl whitelist_users ident "/etc/squid3/whitelist_users.acl"
        deny_info ERR_SCH-SCRIPTS_BANNED_DOMAINS banned_domains
        deny_info ERR_SCH-SCRIPTS_BANNED_USERS banned_users
        http_access allow whitelist_users        
        http_access deny banned_users
        http_access deny banned_domains
        http_access allow localhost
        http_access allow schoolnet
        http_access deny all
#SCH-SCRIPTS end


Και παρόλα αυτά, εγώ εξακολουθώ να συνδέομαι στο facebook. Γιατί;
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

odysseas

Για να διαγνώσεις ότι πράγματι χρησιμοποιείται το squid για την πρόσβαση στο web (είτε από τους clients, είτε από τον ίδιο τον server), μπορείς να φορτώσεις οποιαδήποτε ιστοσελίδα από τον browser της αρεσκείας σου και μετά να κοιτάξεις το /var/log/squid/access.log  Αν δε χρησιμοποιείται το squid, τότε προφανώς και δε θα κόβεται καμία σελίδα.

Επίσης, δοκίμασε να δώσεις manually την ip και τη θύρα του squid server στον firefox αντί να χρησιμοποιείς τον "διαμεσολαβητή του συστήματος", τουλάχιστον για τα διαγνωστικά σου.

Δημήτρης Δαλαγιώργος

Το access log καταγράφει για τον server 127.0.0.1 πολλές γραμμές TCP_MISS. Δεν ξέρω πώς να το ερμηνεύσω αυτό.
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

odysseas

Παράθεση από: Δημήτρης Δαλαγιώργος στις 22 Νοε 2010, 04:49:58 ΜΜ
Το access log καταγράφει για τον server 127.0.0.1 πολλές γραμμές TCP_MISS. Δεν ξέρω πώς να το ερμηνεύσω αυτό.

Όταν έχεις μια οποιαδήποτε cache (διορθώστε με αν κάνω λάθος) τα hits είναι όταν αυτό που ζητάς βρίσκεται στην cache και τα misses όταν δε βρίσκεται και χρειάζεται να το φορτώσει. Αν ξαναζητήσεις την ίδια σελίδα θα πρέπει να αναφέρει ότι τη βρήκε στην cache.

Δημήτρης Δαλαγιώργος

Άρα ο squid όντως παρεμβάλλεται. Γιατί τότε δεν κόβει το facebook παρ' ότι βρίσκεται στο banned_domains.acl;
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

apanagio

Αν δεις την ιεράρχηση των κανόνων (ο πιο πάνω έχει μεγαλύτερη προτεραιότητα) ο πρώτος κανόνας που ισχύει έιναι:
        http_access allow whitelist_users       

επομένως υπάρχει περίπτωση ο χρήστης που χρησιμοποιείς να είναι στους whitelist_users (αρχείο: /etc/squid3/whitelist_users.acl )  οπότε να μην κόβεται κανένα site για το συγκεκριμένο χρήστη.

Είναι αυτή η περίπτωσή σου;

Δημήτρης Δαλαγιώργος

Δυστυχώς όχι. Η whitelist έχει μόνο ένα χρήστη, τον teacher που δεν υπάρχει καν στο σύστημά μου! :(
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

apanagio

Παράθεση από: odysseas στις 22 Νοε 2010, 02:40:55 ΜΜ
Για να διαγνώσεις ότι πράγματι χρησιμοποιείται το squid για την πρόσβαση στο web (είτε από τους clients, είτε από τον ίδιο τον server), μπορείς να φορτώσεις οποιαδήποτε ιστοσελίδα από τον browser της αρεσκείας σου και μετά να κοιτάξεις το /var/log/squid/access.log  Αν δε χρησιμοποιείται το squid, τότε προφανώς και δε θα κόβεται καμία σελίδα.

Προσοχή μην μπερδεύετε το squid με το squid3. Αυτό που μας απασχολεί εμάς είναι το squid3.
Οπότε πρέπει να κοιτάξεις το /var/log/squid3/access.log
Το σκέτο squid μπορείς να το απομακρύνεις άφοβα.
sudo apt-get remove squid

Μάλιστα είναι μάλλον καλό να το κάνεις για να μην δημιουργείται μπέρδεμα.

Ένας άλλος τρόπος για να δεις αν χρησιμοποιείς το squid είναι να το σταματήσεις
sudo service squid3 stop
και να δεις αν ακόμα έχεις πρόσβαση στο internet

odysseas

Παράθεση από: apanagio στις 23 Νοε 2010, 12:33:05 ΜΜ
Προσοχή μην μπερδεύετε το squid με το squid3. Αυτό που μας απασχολεί εμάς είναι το squid3.
Οπότε πρέπει να κοιτάξεις το /var/log/squid3/access.log

Σωστό! Κεκτημένη ταχύτητα.

Δημήτρης Δαλαγιώργος

Απεγκατέστησα το squid και όλα άρχισαν να αντιδρούν κατά τα αναμενόμενα! Ευχαριστώ για τη βοήθεια!
Ενάντια στην ηλιθιότητα, ακόμα και οι θεοί, μάταια αγωνίζονται.
Friedrich Schiller

aspd

Στις οδηγίες για το squid στο http://wiki.ubuntu-gr.org/sch-scripts/squid
υπάρχει το:
gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type string --set '/system/http_proxy/host' 'server'

Θέλω να επιβεβαιώσω ότι για εργαστήριο με thin clients θα αντiκαταστήσω το 'server' με
'την ΙΡ του' και θα κάνω και τα ανάλογα στην κονσόλα για τον εικονικό δίσκο για τους fat clients. Οι 2 server που έχω στα 2 LTSP εργαστήρια του σχολείου μου δε λέγονται server.




apanagio

Το "επιβεβαιώνω" είναι βαριά κουβέντα, αλλά πιστεύω ότι θα δουλέψει αν το κάνεις όπως το λές.
Η ip πρέπει να μπει σε ' ' πχ: '10.128.23.11'
Πρέπει να είσαι root για να εκτελέσεις αυτήν την εντολή οπότε στον server θέλει sudo μπροστά και επίσης το --direct δεν είναι και απαραίτητο.
Στους fat-clients είναι ακριβώς όπως το έγραψες.

Πάντως οι fat-clients ξέρουν τον server ώς 'server' ανεξάρτητα από το όνομα που του έχεις δώσει.
Επίσης οι thin-clients βρίσκουν τον server ως 'localhost'
Χρησιμοποιώντας αυτά τα ονόματα δεν χρειάζεται να ανησυχείς για μελλοντικές αλλαγές της ip του server.

aspd

Δούλεψε το squid και σε thin και σε fat clients, βάζοντας την IP σε ' ' .
Το έστησα και στα δύο εργαστήρια.
Επιβεβαίωσα ότι κόβει facebook και σε thin και fat client.
Εκτέλεσα τις εντολές με τη σειρά που λέει στο http://wiki.ubuntu-gr.org/sch-scripts/squid.
Νομίζω ότι είμαι εντάξει.
Ευχαριστώ

apanagio

Αν σε ενδιαφέρει, μπορείς να δεις και το πιο "advanced" σενάριο:
http://wiki.ubuntu-gr.org/sch-scripts/squid-advanced
με αυτό μπορείς να ρυθμίζεις ανά χρήστη δικαώματα και να υλοποιείς σενάρια όπως:
Όποιος/α τελειώνει την άσκηση αποκτά πρόσβαση στο internet κ.α

aspd

Κοίταξα το squid advanced.
Πώς θα ρύθμιζα να έχουν πρόσβαση στο δίκτυο όποιοι τελειώνουν την άσκηση;
Στην αρχή θα τους βάζω όλους στο banned_users.acl
Θα τρέχω το sudo invoke-rc.d squid3 force-reload
και όποιος τελειώνει την άσκηση θα τον βγάζω από εκεί και θα τρέχω ξανά το
sudo invoke-rc.d squid3 force-reload  ;
Χρονοβόρο δεν είναι αυτό;

Σημείωση: Δεν μπαίνει στο
http://ts.sch.gr/ts/downloadsDetails.do?action=downloadsDetails&itemId=351990


alkisg

Παράθεση από: aspd στις 24 Νοε 2010, 03:52:25 ΜΜ
Στην αρχή θα τους βάζω όλους στο banned_users.acl
Θα τρέχω το sudo invoke-rc.d squid3 force-reload
και όποιος τελειώνει την άσκηση θα τον βγάζω από εκεί και θα τρέχω ξανά το
sudo invoke-rc.d squid3 force-reload  ;
Χρονοβόρο δεν είναι αυτό;

Εφόσον η μέθοδος δοκιμαστεί και υπάρξει ανατροφοδότηση ότι δουλεύει καλά, μπορούμε στη συνέχεια να τη βάλουμε στα sch-scripts:
Δεξί κλικ στον σταθμό εργασίας που θέλουμε → Ενεργοποίηση / Απενεργοποίηση Internet. Δηλαδή θα είναι εντελώς απλό, αλλά χρειάζεται ανατροφοδότηση πριν μπει ως νέα λειτουργία.

aspd

Παράθεση από: aspd στις 24 Νοε 2010, 03:52:25 ΜΜ
Στην αρχή θα τους βάζω όλους στο banned_users.acl
Θα τρέχω το sudo invoke-rc.d squid3 force-reload
και όποιος τελειώνει την άσκηση θα τον βγάζω από εκεί και θα τρέχω ξανά το
sudo invoke-rc.d squid3 force-reload  ;

Θέλετε το παραπάνω να το δοκιμάζω σε τάξη;

alkisg

Για το white/blacklisting δε νομίζω ότι χρειάζεται και πολύ ανατροφοδότηση, απλά μια δοκιμή (π.χ. στο διάλειμμα) ότι η μέθοδος όντως δουλεύει.
Αλλά για το ίδιο το squid είμαι πιο επιφυλακτικός, θα ήθελα να το δουλέψουν μερικοί συνάδελφοι στην τάξη για κάποιους μήνες και να αναφέρουν τις παρατηρήσεις τους πριν το ενεργοποιήσουμε για όλους από τα sch-scripts. Π.χ. πρόπερσι που το είχα δοκιμάσει είχε προβλήματα με κάποιες σελίδες του ΠΣΔ (μάλλον ανάποδα, το ΠΣΔ είχε προβλήματα αλλά το τελικό αποτέλεσμα μας ενδιαφέρει).

Οπότε δηλαδή περιμένουμε τις παρατηρήσεις σας. :)

Για ονόματα, χρησιμοποιήστε το "localhost" για τον server και τους thin clients,
και το "server" για τον εικονικό δίσκο των fat clients.

tallis

Εδώ και καιρώ χρησιμοποιώ στο σχολείο μου έναν squid-proxy + dansguardian για να έχω και ωραία filter lists και προστασία από ιούς.
Το συνιστώ ανεπιφύλακτα.

Πρόβλημα έχω μόνο με κάποιους web-proxy που τρέχουν σε http secure ( https ) τους οποίους δεν μπορεί να κόψει το squid και οι μαθητές μου τους έχουν ήδη ανακαλύψει.


Απόστολος Γιόκας
ΠΕ20 - ΕΠΑΛ Ορεστιάδας

kavvalos

Γεια σας,

Μπορεί κάποιος να με βοηθήσει να εγκαταστήσω τον squid στο Server του Εργαστηρίου μου.

Δεν τα έχω καταφέρει.

apanagio

Γίνε λίγο πιο σαφής στην ερώτησή σου.
Πολλοί/ες εδώ μέσα μπορούν να σε βοηθήσουν.
Γι α αρχή αν έχεις την τελευταία έκδοση sch-scripts υπάρχει menu εξυπηρετητής-> υπηρεσίες-> squid -> ρυθμιση squid