Hits :
4203
Squid Proxy Server :: A very simple tutorial
Squid Proxy Server
Home Page :
http://www.squid-cache.org/
Squid: Optimising Web Delivery
Squid is a caching proxy for the Web supporting HTTP, HTTPS, FTP, and more.
top
Installation
Version 3
wget -c http://www.eu.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE14.tar.bz2
tar jxvf squid-3.0.STABLE14.tar.bz2
cd squid-3.0.STABLE14
./configure \
--enable-linux-netfilter
make
make install
top
Default squid.conf
Το παρακάτω αρχείο ρυθμίσεων περιέχει τις προκαθορισμένες τιμές ρύθμισης του squid.
/usr/local/squid/etc/squid.conf
Formatter "highlight/html" not found
top
Squid.conf
Για περισσότερες πληροφορίες σχετικά την παραμετροποίηση του αρχείου ρυθμίσεων πατήστε εδώ :
http://www.eu.squid-cache.org/Versions/v3/3.0/cfgman/
Το παρακάτω αρχείο περιέχει ελάχιστες αλλαγές σε σχέση με το παραπάνω.
Για κάθε αλλαγή έχω προσθέσει σχόλια ώστε να γίνεται ευνόητη η ρύθμιση που κάνω.
Τι έχουμε δηλώσει :
- Έχουμε δηλώσει το δικό μας δίκτυο – class c 192.168.0/24
- Έχουμε επιτρέψει την http κίνηση για το δίκτυό μας
- Έχουμε προσθέσει αρχεία logs για διαχειριστικούς λόγους κυρίως
- Έχουμε τροποποιήσει την θέση που γράφεται το PID[link1]
- Έχουμε ορίσει εμείς ποιος χρήστης θα είναι owner της υπηρεσίας (default : nobody)
/usr/local/squid/etc/squid.conf
Formatter "highlight/html" not found
top
Debug / Starting Squid Proxy Server
Πριν εκκινήσουμε το squid πρέπει να ακολουθήσουμε τα παρακάτω βήματα :
- Δημιουργήσουμε τον κατάλογο στον οποίο θα χρησιμοποιεί ως cache
- Αρχικοποίηση του καταλόγου ο οποίος θα χρησιμοποιηθεί ως cache
- Δημιουργήσουμε τον χρήστη με τον οποίο θα τρέχει το service
- Αλλάξουμε την δικαιωδοσία στον κατάλογο που έχουμε εγκαταστήσει το squid
- Να ελέγξουμε εάν χρειάζεται κάτι άλλο / λειτουργία του squid
Όλα τα παραπάνω βήματα γίνονται εύκολα με τις παρακάτω εντολές :
mkdir -pv /usr/local/squid/var/cache
useradd -c 'Squid Proxy User' -s /usr/sbin/nologin -d /usr/local/squid squid
chown -R squid /usr/local/squid/
/usr/local/squid/sbin/squid -z
Debug
Για να ελέγξουμε την λειτουργία του squid πληκτρολογούμε την εξής εντολή:
/usr/local/squid/sbin/squid -N -d 1 -D
Start
Αφού έχουμε βεβαιωθεί για την πλήρη και σωστή λειτουργία του Squid Proxy Server
είμαστε έτοιμοι για να ξεκινήσουμε το squid ως δαίμονα με την παρακάτω εντολή:
/usr/local/squid/sbin/squid -sY -f /usr/local/squid/etc/squid.conf
top
cache
Εάν για οποιοδήποτε λόγο διαγράψουμε την cache ή καλύτερα τα αρχεία που χρησιμοποιεί το squid
για cache memory δεν πρέπει να ξεχάσουμε να ξανατρέξουμε την παρακάτω εντολή :
/usr/local/squid/sbin/squid -z
για να δημιουργηθεί εκ νέου η δομή των αρχείων / καταλόγων ώστε να χρησιμοποιηθούν ως cache.
top
Print Version & Configuration Options
squid -v
top
Transparent Proxy
Περισσότερα εδώ :
http://tldp.org/HOWTO/TransparentProxy.html
Παρακάτω αναφέρομαι μόνο όταν θέλω transparent proxy στο ίδιο μηχάνημα, αλλιώς αναζητήστε στο google πως γίνεται :)
Πως δημιουργούμε έναν transparent proxy (ακόμα και στον ίδιο υπολογιστή !!!).
Το παρών μου έφαγε λίγο χρόνο (2 απογευματάκια – και δεν ξέρω από iptables)
για το μάθω / φτιάξω / ελέγξω, οπότε ίσως να υπάρχει κάτι που μου έχει ξεφύγει.
Τι ακριβώς θέλουμε :
Όλες οι σελίδες να περνάνε από τον proxy μας χωρίς να χρειάζεται να
ρυθμίζουμε κάθε φορά σε κάθε (web) εφαρμογή ότι υπάρχει proxy.
Άρα πρέπει το destination port 80 να γίνεται με κάποιο τρόπο redirect στον proxy όπου ακούει στην πόρτα 3128.
Το πρόβλημα :
ο proxy θα κάνει rewrite το πακέτο ώστε το source να είναι αυτός αλλά θα προσπαθήσει να το στείλει και αυτός στην πόρτα 80.
Οπότε το destination port θα είναι πάλι το 80 και θα ξαναγίνει redirect στον proxy κ.ο.κ.
Η λύση :
Η λύση δίνεται κάνοντας χρήση του κανόνα OWNER match του iptables
http://iptables-tutorial.froze[..]rial.html#OWNERMATCH[link2]
Υλοποίηση :
Στο αρχείο ρυθμίσεων του squid
/usr/local/squid/etc/squid.conf πραγματοποιούμε την εξής αλλαγή :
Formatter "highlight/html" not found
Για να είναι transparent και local τότε :
Ως διαχειριστές γράφουμε την εξής εντολή :
iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner ! --uid-owner squid -j REDIRECT --to-ports 3128
Για να δούμε ότι υπάρχει ως κανόνας :
iptables -L -t nat
Υποσημείωση : Εάν τρέξουμε μόνο το παραπάνω iptable rule χωρίς να έχουμε σηκώσει το squid θα δούμε ότι πολύ απλά ΔΕΝ παίζει τπτ
Οπότε με αυτό τον τρόπο το ελέγχουμε ότι παίζει ως rule και όταν σηκώσουμε το squid (δες την ενότητα start παραπάνω)
θα δούμε ότι παίζει μόνο μέσα από τον
Squid Proxy Server
top
[link2] http://iptables-tutorial.frozentux.net/iptables-tutorial.html#OWNERMATCH