===== Squid - proxy server ===== ==== Εγκατάσταση ==== Για να εγκατασταθεί το squid απλά εκτελούμε aptitude install squid squid-prefetch Στην αρχική του εγκατάσταση το squid ρυθμίζεται σαν απλός τοπικός proxy για http και ftp και μπορεί άμεσα να χρησιμοποιηθεί εάν στις ρυθμίσεις σύνδεσης του browser μας τοποθετήσουμε την διεύθυνση localhost και την θύρα 3128 ==== Ρυθμίσεις ==== === Cache Size === Βασικές ρυθμίσεις που πρέπει να γίνουν στο squid είναι ο ορισμός του μέγιστου αποθηκευτικού χώρου στο δίσκο. (π.χ. 10GB) cache_dir ufs /var/spool/squid3 10240 16 256 και το μέγιστο μέγεθος αρχείου που θα κρατιέται στην cache (π.χ. 32ΜΒ). maximum_object_size 32768 KB === Transparent Proxy === Το squid ως transparent proxy για την θύρα 80, μπορεί να χρησιμοποιείται σε ένα δίκτυο χωρίς να υπάρχει ιδιαίτερη ρύθμιση στους υπολογιστές πελάτες. Θεωρούμε ότι ήδη ο υπολογιστής που θα στηθεί το squid κάνει και προώθηση πακέτων, είναι δηλαδή και router. (βλ [[http://wiki.linuxfanclub.gr/el:linux:debian:server:iptables#pl_elgs|Απλή Δρομολόγηση]]) Θα ρυθμίσουμε αρχικά το squid ως transparent proxy. Τροποποιούμε το αρχείο /etc/squid3/squid.conf http_port 3128 transparent acl localnet src 192.168.0.0/16 http_access allow localnet http_access allow localhost Στην συνέχεια προσθέτουμε στο script που κάνει routing τις παρακάτω εντολές, ώστε όλα τα πακέτα που αιτούνται ιστοσελίδες να εξυπηρετούνται από το squid. (Όπου **eth0** to interface που συνδέεται με το τοπικό δίκτυο lan) Για για οδηγούνται οι αιτήσεις ιστοσελίδων διάφανα μέσω squid από τον ίδιο τον υπολογιστή που έχει ρυθμιστεί το squid iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner --uid-owner proxy -j ACCEPT iptables -t nat -A OUTPUT -p tcp --dport 3128 -m owner --uid-owner proxy -j ACCEPT iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 3128 Για τους clients του τοπικού δικτύου που ήδη δρομολογούνται στο internet μέσω του υπολογιστή που έχει ρυθμιστεί το squid (όπου **eth0** η διεπαφή που είναι συνδεδεμένοι οι clients) iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 == Παράκαμψη proxy για τοπικό webserver == Πολλές φορές η ρύθμιση ενός transparent proxy δημιουργεί προβλήματα στην πρόσβαση σε έναν webserver στο τοπικό δίκτυο. Ούτως ή άλλως έχουμε απώλεια και όχι κέρδος στην ταχύτητα όταν γίνεται η πρόσβαση ενός τοπικού webserver μέσω proxy. Π.χ. εάν το τοπικό δίκτυο μας είναι το 192.168.1.0/24 Μπορούμε να τροποποιήσουμε τις παραπάνω iptable εντολές ως εξής: Αντί για την εντολή iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 3128 την εντολή iptables -t nat -A OUTPUT -p tcp --dport 80 ! -d 192.168.1.0/24 -j REDIRECT --to-ports 3128 και για τους clients του τοπικού δικτύου, αντί για iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 την εντολή iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 ! -d 192.168.1.0/24 -j REDIRECT --to-port 3128 ==== url blocking ==== Εάν θέλουμε να εμποδίσουμε την πρόσβαση σε κάποια sites κάνουμε την παρακάτω ρύθμιση στο /etc/squid3/squid.conf acl block_url dstdomain "/etc/squid3/block_url.conf" http_access deny block_url Στην συνέχεια δημιουργούμε το αρχείο /etc/squid3/block_url.conf και προσθέτουμε εγγραφές όπως οι παρακάτω .games.com .facebook.com .youtube.com .hi5.com ==== Logs ==== === Γενικά === Για να δούμε τις ενέργειες που κάνει το squid εκτελούμε tail -f /var/log/squid3/access.log === Καθαρισμός cache === Για να διαγράψουμε την cache /etc/init.d/squid3 stop rm -rf /var/squid3/cache/* /etc/init.d/squid3 start === squidview === Εναλλακτικά υπάρχει το squidview aptitude install squidview Εάν χρησιμοποιούμε το squi3 θα πρέπει να τροποποιήσουμε τον σύνδεσμο ~/.squidview/log1 ώστε να δείχνει στο /var/log/squid3/access.log Εκτελούμε squidview Θα δημιουργήσει τον φάκελο ~/.squidview και θα μας βγάλει μήνυμα μεταξύ άλλων The squid log file doesn't exist or is of zero size Στην συνέχεια εκτελούμε rm ~/.squidview/log1 ln -s /var/log/squid3/access.log ~/.squidview/log1 Πλέον μπορούμε να δούμε τα στατιστικά με την εντολή squidview === calamaris === Για εξαγωγή στατιστικών και αποστολή σε καθημερινό e-mail στον root μπορούμε να εγκαταστήσουμε το calamaris aptitude install calamaris Για να πάρουμε μια ιδέα από τα στατιστικά που εμφανίζει cat /var/log/squid3/access.log | calamaris Για μια πιο αναλυτική κατάσταση σε html μορφή cat /var/log/squid3/access.log | calamaris -F 'html' -D 2 -d -1 -R -1 -s -t -1 > results.html firefox results.html ==== Πηγές ==== * Ρυθμίσεις * http://www.linuxdevcenter.com/pub/a/linux/2001/07/26/squid.html * Πιστοποίηση * http://wiki.squid-cache.org/ConfigExamples/Authenticate/Bypass * Transparent proxy : * squid3 * http://kuscsik.blogspot.com/2008/01/transparent-proxy-with-squid-3-on.html * http://forums.gentoo.org/viewtopic-p-6142685.html#6142685 * squid * http://www.zeitfenster.de/TransparentProxy/ * http://www.cyberciti.biz/tips/linux-setup-transparent-proxy-squid-howto.html * http://freshmeat.net/articles/configuring-a-transparent-proxywebcache-in-a-bridge-using-squid-and-ebtables * restrict bandwidth * https://www.howtoforge.com/squid-delay-pools-bandwidth-management * http://www.faqs.org/docs/Linux-HOWTO/Bandwidth-Limiting-HOWTO.html * https proxy * http://6pmsolutions.com/2013/11/18/squid-transparent-ssl-interception/ * apt * http://itkia.com/using-squid-to-cache-apt-updates-for-debian-and-ubuntu/ * gprs * performance analysis : http://www.cl.cam.ac.uk/~rc277/mwcn_cr.pdf * BUGS * apt transparent squid and gpg files * ubuntu bug-report : https://bugs.launchpad.net/ubuntu/+source/update-manager/+bug/24061 * squid development answer : http://squid-web-proxy-cache.1019090.n4.nabble.com/TCP-MISS-and-NONE-td1044569.html * blacklists : * http://www.squidguard.org/blacklists.html * block anonymous proxies * http://www.geekride.com/how-to-block-anonymous-proxy-sites-squid/ * http://forums.untangle.com/web-filter-lite/14321-proxy-sites-blocking-browse-expression-very-effective.html