Bandwith Limiting using Squid Proxy Server with Delay Pools and CBQ: Εγκατάσταση Squid Proxy with Delay Pools Enabled
Description: This is issue 35 of Magaz, the Hellenic LinuxMagazine
Keywords: magaz hellenic greek hellas greece hellug linux magazine

Magaz, The Greek Linux Magazine
Τεύχος #35
Περιληπτικά Περιεχόμενα Αναλυτικά Περιεχόμενα Mirrors Links Πληροφορίες Συντάκτες Αναζήτηση Επικοινωνία
Επόμενο Προηγούμενο Περιεχόμενα ### 3. Εγκατάσταση Squid Proxy with Delay Pools Enabled Σε κονσόλα πάντα προσθέτουμε τον χρήστη squid (αν δεν υπάρχει, αν υπάρχει τον αφαιρούμε με userdel) αφού έχουμε φτιάξει ένα directory με όνομα cache:
    # useradd -d /cache/ -r -s /dev/null squid >/dev/null 2>&1
Κανένας δεν μπορεί να κάνει login σαν χρήστης squid εννοείται και ο root. Αυτό είναι ένα βήμα βέλτιστης ασφάλειας που μπορεί βεβαίως να παραλειφθεί αν δεν υπάρχει άμεσος κίνδυνος. (πάντα υπάρχει !) Αφού έχουμε κατεβάσει το squid source το αποσυμπιέζουμε πχ. στο /tmp:
    # cd/tmp
    # tar xzfv squid-2.5.STABLE4-src.tar.gz
    # cd squid-2.5.STABLE4
Είμαστε έτοιμοι για το compile.
    #./configure --prefix=/opt/squid --exec-prefix=/opt/squid --enable-delay-pools --enable-cache-digests \
            --enable-poll --disable-ident-lookups --enable-truncate --enable-removal-policies
    # make all
    # make install
Αφού ολοκληρώσουμε επιτυχώς o squid έχει εγκατασταθεί στο /opt/squid. Και για να είμαστε σίγουροι ότι τα πάντα κάτω από το /opt/squid και /cache ανήκει στον χρήστη squid γράφουμε:
    # chown -R squid:squid /opt/squid
    # chown -R squid:squid /cache

    ή

    # chown -R squid.squid /opt/squid
    # chown -R squid.squid /cache.
Υποθέτουμε ότι το δίκτυο μας είναι το 192.168.0.0/24. Μετά πάμε στο /opt/squid/etc/squid.conf που είναι το σημαντικότερο βήμα. Ένα τυπικό squid.conf είναι το παρακάτω:
    # SQUID CONFIGURATION FILE
    # by Αντώνιος Χάψας © 2003.
    visible_hostname Dias #Your name pc
    http_port 8080
    icp_port 3130
    acl QUERY urlpath_regex cgi-bin ?
    no_cache deny QUERY
    cache_mem 64 MB

    cache_dir ufs /cache 250 16 256
    redirect_rewrites_host_header off
    cache_replacement_policy GDSF
    emulate_httpd_log on

    acl localnet src 192.168.0.0/255.255.255.0
    acl localhost src 127.0.0.1/255.255.255.255
    acl Safe_ports port 80 443 210 119 70 21 1025-65535
    acl CONNECT method CONNECT
    acl all src 0.0.0.0/0.0.0.0
    http_access allow localnet
    http_access allow localhost
    http_access deny !Safe_ports
    http_access deny CONNECT
    http_access deny all

    maximum_object_size 3000 KB
    store_avg_object_size 50 KB

    #Αυτό το κομμάτι το γουστάρω πολύ,
    #για τους έξω χρήστες χρησιμοποιείται τον παρακάτω browser !
    anonymize_headers deny User-Agent
    fake_user_agent Shit/1.0 (FuckWindows; U; WindowsShit 1.0 i8088)

    cache_mgr root
    cache_effective_user squid
    cache_effective_group squid
    log_icp_queries off
    buffered_logs on

    # Εδώ είναι το κρίσιμο κομμάτι που μας ενδιαφέρει
    #DELAY POOLS
    #Δεν θέλουμε να περιορίσουμε το κατέβασμα στο τοπικό μας δίκτυο
    acl magic_words1 url_regex -i 192.168
    #Θέλουμε να περιορίσουμε το κατέβασμα των παρακάτω αρχείων
    #Όλα σε μια σειρά
    acl magic_words2 url_regex -i ftp .zip .exe .mp3 .rpm .zip .avi .mpeg
    # Δεν βάζουμε .htm .html .jpg .gif γιατί συνήθως δεν καταναλώνουν μεγάλο bandwith.
    #Εχουμε 2 διαφορετικά delay_pools
    delay_pools 2
    #1st Delay pool
    delay_class 1 2
    #-1/-1 σημαίνει ότι δεν έχουμε όρια
    delay parameters 1 -1/-1 -1/-1
    delay_access 1 allow magic_words1

    #2nd Delay pool
    delay_class 2 2
    #Τα παρακάτω νούμερα είναι σε bytes
    # 6000/15000 είναι τα νούμερα για όλο το δίκτυο
    # 5000/15000 είναι για μια απλή ΙΡ
    #για κατέβασμα αρχείων μεγαλύτερο από 150000 bytes
    #οι χρήστες συνεχίζουν το κατέβασμα με 5000 bytes/s
    delay_parameteres 2 6000/150000 5000/150000
    delay_access 2 alllow magic_words2
    #Τέλος Αρχείου.
Αφού είμαστε σίγουροι ότι το παραπάνω αρχείο είναι σωστό γράφουμε για να δημιουργηθούν τα cache του directories:
    # /opt/squid/sbin/squid -z
Λογικά πρέπει να είμαστε εντάξει, κάνουμε ένα έλεγχο με τους browser μας βάζοντας την ip του server στο 8080. Γράφουμε ένα ps -A | grep squid για να δούμε αν τρέχει. Για να τρέχει κάθε φορά που ξεκινάει ο server μας βάζουμε την παρακάτω γραμμή στο τέλος του /etc/rc.d/rc.local
    /opt/squid/sbin/squid -D
Aλλες χρήσιμες εντολές θα μπορούσε να είναι η
    # /opt/squid/sbin/squid -κ reconfigure (κάνει reconfigure αν κάναμε αλλαγές στο squid.conf)
όπως και η
    # /opt/squid/sbin/squid -help.
### 3.1 Παράδειγμα 1 Περιορισμός μιας γραμμής ολικού bandwith ας πούμε στα 512 Kbs.
    acl all src 0.0.0.0/0.0.0.0 #μπορεί να έχει επαναληφθεί πιο πάνω.
    delay pools 1
    delay_class 1 1
    delay_access 1 allow alll
    delay_parameteres 1 64000/64000 #512 kbits = 64 kbytes pes sec
### 3.2 Παράδειγμα 2 Περιορισμός μια γραμμής στα 128 Kbps.
    acl 128Kusers src 192.168.0.1/255.255.255.0
    acl all src 0.0.0.0/0.0.0.0
    delay_pools 1
    delay_class 1 3
    delay_access 1 allow 128kusers
    delay_access 1 deny all
    delay_parameters 1 64000/64000 -1/-1 16000/64000
Το παραπάνω παράδειγμα δίνει μια λύση σε ένα δίκτυο από ένα σύνολο 512Kbits, και κάθε ΙΡ παίρνει μόνο 128Kbits από αυτό το pool. Περισσότερα παραδείγματα στο http://www.squid-cache.org/Doc/FAQ/FAQ-19.html. Επόμενο Προηγούμενο Περιεχόμενα