Установка Squid

Материал из Энциклопедия хостинга
Перейти к: навигация, поиск


Содержание

Настройка прокси сервера Squid

Очень часто нам нужен прокси. Например у вас серый IP или вы счастливый пользователь спутникового интернета. Скачать что-то с сайтов подобных Rapidshare нереально. Здесь нас и выручит squid.

Для установки proxy необходим сервер на виртуализации KVM. На других виртуализациях размещение proxy-серверов запрещено.

Более расширенный вариант моей статьи можно найти на сайте Курского LUG, где я так же рассмотрел возможность использования squid домашними пользователями, а также интеграцию системы сжатия траффика Globax или Toonel каскадом в squid.

Установка squid

cd /usr/ports/www/squid && make BATCH=yes install

Настройка squid

Немного об acl и правилах

Сердцем конфигурирования squid являются acl (access control list) и правила.
Для начала надо усвоить принципы работы acl. ACL имеют сделующий формат:

acl <имя> <тип> <содержание>

Например этот acl описывает две пользовательские машины с айпишниками (тип src) 192.168.0.1 и 192.168.0.2

acl comps src 192.168.0.1/32 192.168.0.2/32

Теперь рассмотрим правила.
Правила имеют следующий формат:

<тип_правила> <действие> <acl>

На этом этапе надо усвоить то, что правила одного типа проверяются до первого выполняющегося правила. Действие этого правила будет выполнено, и проверка дальнейших правил этого типа будет остановлена. Пример:

acl all src 0/0
acl vasya src 192.168.1.12/32
http_access allow vasya
http_access deny all

Правила типа http_access это правила разрешающие или запрещающие доступ по http. Рассмотри действие вышеописанного отрывка. acl all указывает нам на все айпишники. А acl vasya указывает на один ip 192.168.1.12
Проверка будет проходить так:
1) http_access allow vasya Если через прокси сидит пользователь с этого айпишника то разрешим ему доступ. Проверка будет остановлена, четвертая строка даже не будет проверена.
2) если прокси использует пользователь не с этого айпи, то правило на строке 3 не выполнится и мы перейдем к правилу на строке 4. Поскольку под acl all подходит любой айпи, то данное правило выполнится и мы заблокируем доступ. дальнейшие правила проверяться не будут. Таким образом мы запретили пользоваться прокси всем кроме Васи.

Рассмотрим частую ошибку на основе прошлого примера:

acl all src 0/0
acl vasya src 192.168.1.12/32
http_access deny all
http_access allow vasya

В данном случае даже Вася не сможет пользоваться прокси. Так как правилом на строке 3 мы заблокировали доступ всем, оно выполнилось, и правило на строке 4 даже не будет проверяться. Внимательно следите за порядком правил одного типа.

Создаем конфиг squid

Приступим к написанию конфига. Разберу на примере своего конфига.

Для начала в папке /etc/squid создадим папку acls. В ней я создал 3 файла: banners, nobanners, 1banners
В файле banners хранятся регулярные выражение реклам и баннеров которые будут вырезаны. В nobanners хранятся исключения, то есть те страницы и картинки которые будут грузиться даже если в banners есть правило под которое они попадают. В файле 1banners хранятся регулярные выражения описывающие те баннеры которые будут вырезаться в первую очередь. Содержимое своих файлов фильтрации рекламы приведу в конце статьи.

С root правами создадим файл /etc/squid/squid.conf и начинаем добавлять в него строки:

Укажем порт на котором будет работать прокси: (ВНИМАНИЕ!! Никогда не ставьте стандартные порты вроде 8080 80 или 3128 если не хотите чтобы ваш прокси легко можно было обнаружить)

http_port 1234


Укажем имя нода на котором стоит squid. Узнать свое имя можно выполнив uname -n

visible_hostname dimon4eg


Отключим icp

icp_port 0


Через acl с регулярными выражениями укажем страницы которые не будут кешироваться

acl donocache urlpath_regex cgi-bin user submit
no_cache deny donocache


Создадим папку /var/spool/squid и сделаем chmod 777 /var/spool/squid
Опишем обьем "быстрого" кеша и кеша на жестком диске. Объем быстрого кеша рекомендуется ставить не более 32 метров для экономии оперативной памяти.

cache_mem 32 MB
cache_dir ufs /var/spool/squid 1000 16 256


Аналогично создадим папки /var/log/squid и укажем где хранить логи

cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log


Таблица mime и pid процесса

mime_table /etc/squid/mime.conf
pid_filename /var/run/squid.pid


Настройки фтп через прокси

ftp_user anonymous@
ftp_list_width 32
ftp_passive on
ftp_sanitycheck on


Служебные acl

acl all src 0/0
acl SMTP port 25


Список айпи с которых разрешен прокси. Обязательно указать 127.0.0.1 и адрес самого сервера в локалке. Далее укажем всех пользователей кто имеет доступ. (ВНИМАНИЕ, обязательно отключите доступ всем кому попало.)

acl doallow src 192.128.0.2/32 127.0.0.1/32


Зададим порты которые разрешены

acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443 563 5190 5552
acl Safe_ports port 777


Расположение файлов с правилами вырезания рекламы. Ключ -i означает сделать правила не чувствительными к регистру

acl banners  url_regex -i "/etc/squid/acls/banners"
acl 1banners  url_regex -i "/etc/squid/acls/1banners"
acl nobanners  url_regex -i "/etc/squid/acls/nobanners"


Теперь опишем правила

http_access deny 1banners
http_access deny banners !nobanners
http_access deny !Safe_ports
http_access deny SMTP
http_access allow doallow
http_access deny all


Запретим доступ icp

icp_access deny all

Приложения

Полный текст моего squid.conf

http_port 1234
visible_hostname dimon4eg
icp_port 0
acl donocache urlpath_regex cgi-bin user submit
no_cache deny donocache
cache_mem 32 MB cache_dir ufs /var/spool/squid 1000 16 256
cache_access_log /var/log/squid/access.log cache_log /var/log/squid/cache.log cache_store_log /var/log/squid/store.log
mime_table /etc/squid/mime.conf pid_filename /var/run/squid.pid
ftp_user anonymous@ ftp_list_width 32 ftp_passive on ftp_sanitycheck on
acl server src 192.168.0.2/32
acl all src 0/0 acl manager proto cache_object acl localhost src 127.0.0.1/32 acl SSL_ports port 443 563 acl SMTP port 25
acl doallow src 192.128.0.2/32 127.0.0.1/32
acl Safe_ports port 80 acl Safe_ports port 21 acl Safe_ports port 443 563 acl Safe_ports port 777 acl CONNECT method CONNECT
acl banners url_regex -i "/etc/squid/acls/banners" acl 1banners url_regex -i "/etc/squid/acls/1banners" acl nobanners url_regex -i "/etc/squid/acls/nobanners"
http_access deny 1banners http_access deny banners !nobanners http_access deny !Safe_ports http_access deny SMTP http_access allow doallow http_access deny all
icp_access deny all
never_direct allow all

Мои правила для нарезки рекламы

/etc/squid/acls/banners

.?(count(\d|er|\.rbc)|hitbox|advertising|linkexchange|click\d|\dcount|adriver)
.*(/ad(s|v)|\.adnet\.ru|banview|banner|adriver|\dcount|bnr|bans\.|/sale|/pagead)
.*exaccess\.ru/asp/.
.*(spylog|warlog\.info|ipz.ru/cgi-bin/cm\.cgi\?|c\.mystat-in\.net|c\.bigmir\.net|online\.mirabilis|top\.winrate\.net|vipelita\.ru|cnews\.ru.*/informres).*
.*(brs\.trilan\.ru/images|google-analytics\.com|/informer|bantex\.ru|100-100\.ru).*
.?(hotlog|tours|sharereactor|&rand=|livejournal\.com/userpic).*
^(www\.)?ad\d?\..*
.?images\.rambler\.ru/upl.*
.*s1\.adward\.ru/\?r.*
.*(bhanvad)\.com.*
.*(dosugonline|blogonline|all-web|otvali|loveplanet|ziza|body\.imho|meganame)\.ru.*
.?(clx|gold-music)\.ru/.*
.*(nnm.ru|rambler|realcoding|kpnemo\.ru/advimg).*\.swf
.*/ad?.*
.?re(k|c)lama.*
.^(www\.)?(1001tur|jmp\.net|kmindex.ru/.*/\?|kreis\.trl\.ru|rot\.goup\.ru/\?|au-au\.ru).*
.?r\.mail\.ru/b.*\.swf
.?bs\.yandex\.ru/show.*
.?br\.gcl\.ru/cgi-bin/br.*
.?m1.nedstatbasic.net/basic.js
.*\.doubleclick\.net
.*an.yandex.ru/*
.*/adserver/*


/etc/squid/acls/nobanners

anthony\.liekens\.net
last\.fm
lastfm\.ru
/user/
rnq\.ru
dimon4eg\.info
andre
moneybookers


/etc/squid/acls/1banners

last.fm/adserver/*
last.fm/depth/footer/audioscrobbler_logo.gif
Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты

Заметили ошибку?

Выделите ее и нажмите CTRL+ENTER