Hits : 4203

Squid Proxy Server :: A very simple tutorial


Contents


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/

Το παρακάτω αρχείο περιέχει ελάχιστες αλλαγές σε σχέση με το παραπάνω.
Για κάθε αλλαγή έχω προσθέσει σχόλια ώστε να γίνεται ευνόητη η ρύθμιση που κάνω.

Τι έχουμε δηλώσει :

/usr/local/squid/etc/squid.conf

Formatter "highlight/html" not found

top

Debug / Starting Squid Proxy Server


Πριν εκκινήσουμε το squid πρέπει να ακολουθήσουμε τα παρακάτω βήματα :

  1. Δημιουργήσουμε τον κατάλογο στον οποίο θα χρησιμοποιεί ως cache
  2. Αρχικοποίηση του καταλόγου ο οποίος θα χρησιμοποιηθεί ως cache
  3. Δημιουργήσουμε τον χρήστη με τον οποίο θα τρέχει το service
  4. Αλλάξουμε την δικαιωδοσία στον κατάλογο που έχουμε εγκαταστήσει το squid
  5. Να ελέγξουμε εάν χρειάζεται κάτι άλλο / λειτουργία του 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



Links
[link1] http://en.wikipedia.org/wiki/Process_identifier

[link2] http://iptables-tutorial.frozentux.net/iptables-tutorial.html#OWNERMATCH