Встановлення та налаштування локального кешуючого проксі сервера SQUID

В даній статті я опишу процес встановлення та налаштування локального кешуючого проксі-сервера. Налаштування доступу по MAC-адресах, та обмеження швидкості внутрішніми засобами проксі-сервера. Дана стаття буде наочним посібником, який можна буде використати на практиці, а також і допоможе мені згадати, як я це все робив років з 5 назад.

 

Всі дії будуть виконуватись на базовій системі Slackware 13.37. Я чомусь подружився з цією системою, напевно, за її класичність, а також за простоту. Тому встановлення всіх необхідних компонентів і програм я буду проводити з початкових кодів, які можна отримати з офіційних сайтів, в нашому випадку з  www.squid-cache.org. Для тих хто працює з дистрибутивами rpm або deb сумісними встановлення усіх програм потрібно проводити з офіційного репозиторію, бо такі дистрибутиви, наскільки мені відомо, дуже болісно переносять встановлення програм з початкових кодів.
Отже, завантажуємо систему на якій будемо проводити усі налаштування, логінимся в обліковий запис не превілейованого користувача. Так як це в нас має бути сервер, то графічної оболонки на ньому не повинно бути. Далі нам потрібно отримати початкові коди squid'а.
Я користуюся зараз версією squid-3.0.STABLE26 тому, що в актуальній версії є проблеми із опцією cache_mem. В версіі 3.1, яка зараз актуальна, дана опція не працює, це я вияснив на офіційному сайті. Ця опція обмежує розмір оперативної пам'яті, яку може займати процес squid'а. Я пробував squid версії 3.1, встановив розмір пам'яті на позначці 700 Мб, але через декілька днів процес squid'а почав займати 1200 Мб RAM. Тому я користуюсь версією 3.0, яка коректно працює з цією опцією.
Для отримання початкових кодів самої програми виконуємо таку команду:

wget http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE26.tar.gz

Даний архів буде збережено в тому каталозі з якого запущено дану команду. Після цього розпаковуємо архів:

tar -xzf  squid-3.0.STABLE26.tar.gz

Заходимо в каталог squid-3.0.STABLE26

cd squid-3.0.STABLE26

Для того, щоб відкомпілювати потрібно спочатку сконфігурувати програму за допомогою команди  configure, яку запускаємо в каталозі з початковими кодами . Щоб squid підтримував додаткові можливості, наприклад організацію доступів по МАС адресах, нам потрібно вказати додаткові параметри компіляції. Усі параметри компіляції можна побачити, виконавши команду configure -- help. Я компілюю сквід для своїх потреб з такими опціями:

configure --prefix=/usr/local/squid --enable-delay-pools --enable-icap-client --disable-wccp --disable-wccpv2 --enable-arp-acl --enable-ssl  --enable-default-err-language=ukrainian

 --prefix=/usr/local/squid - опція, яка задає шлях до каталогу в якому буде розміщено всі файли програми;
--enable-delay-pools - опція, яка вмикає функцію обмеження швидкості скачування для користувачів проксі сервера;
--enable-icap-client - дана опція вмикає механізм підтримки антивірусної перевірки трафіку (хоча для цього потрібно провести додаткові налаштування);
 --disable-wccp --disable-wccpv2 - точно не скажу просто пам'ятаю, що десь читав, що потрібно збирати squid без підтримки даних протоколів;
--enable-arp-acl  - дана опція вмикає механізм підтримки МАС адрес в правилах доступу до сервера; 
--enable-ssl - підтримка захищеного з'єднання, яке не кешується, а лише перенаправляється на цільові сервери; 
--enable-default-err-language=ukrainian - мова сторінок помилок, які будуть відображатися по замовчуванню.

Після того, як відпрацює команда configure можна виконати компіляцію і інсталяцію програми в каталог, який заданий опцією конфігурування --prefix. Для цього виконуємо :

make 

Щоб проінсталювати програму потрібно виконати команду make, але перд цим потрібно отримати права превілейованого користувача root. В Slackware  я користуюсь утилітою su, також можна скористатися sudo. Після отримання прав суперкористувача виконуємо інсталяцію:

make install

Коли відпрацюють дані команди можна приступати до налаштування нашого проксі серверу. Даний спосіб інсталяції програми за своєю суттю не є правильним, навіть для такого дистрибутиву як Slackware. Завжди потрібно користуватися пакетними менеджерами і ставити програми з репозиторіїв пакетів. Для Slackware також існують готові пакети squid'а, але вони можуть містити відмінні версії програми, тому я ставлю кальмара (Чому кальмар? Тому що в перекладі з англійської мови squid це кальмар. Тому далі по тексту я буду використовувати і такий вислів) таким чином з початкових кодів. Як створити пакет для Slackware я спробую колись описати. Усі файли програми у нас знаходяться в каталозі /usr/local/squid. Перше, що нам потрібно це відредагувати файл конфігурації squid'а squid.conf.default. Для цього виконуємо:

cp squid.conf.default squid.conf

Відповідним чином правим файл конфігурації. Ось мій робочий конфіг


#################################################################################
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl localnet src 192.168.0.0/16

include /usr/local/squid/etc/mac1.txt

acl SSL_ports port 443 22                                               
acl safe_ports port 22                                                       
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT
acl FTP proto FTP
acl HTTPS proto HTTPS
acl icq_addr dst 64.12.0.0/16 205.188.0.0/16
acl icq_port port  5190 443
acl icq_domain dstdomain icq.com login.icq.com

http_access allow localnet CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access allow localnet icq_addr icq_port HTTPS CONNECT
http_access deny all
icp_access deny all
htcp_access deny all

http_port 3128          #опція яка задає порт з якого кальмар буде приймати запити. Я позамовчуванню використовую порт 3128;

hierarchy_stoplist cgi-bin ?

cache_mem 512 MB
cache_dir ufs /var/run/squid/cache 1024 16 256       #шлях до локального кешу, а також тут потрібно вказати розмір кешу в Мб (перша цифра), а також розмір першого і другого рівнів кешу (друга і третя цифри в прикладі);
access_log /var/run/squid/var/log/access.log squid                     #шлях до файлу логу кальмара де буде зберігатися статистика веб-запитів;
cache_log /var/run/squid/var/log/cache.log     #шлях до файлу логу роботи самого кальмара;
cache_store_log none   #не використовавати лог-файл кешованих об'єктів. При великих навантаженнях на сервер обробка цього файлу вимагає великих ресурсів під час старту сервера;
pid_filename /var/run/squid/var/log/squid.pid   #шлях до PID файлу;
url_rewrite_program /usr/local/squidGuard/bin/squidGuard -c /usr/local/squidGuard/squidGuard.conf
url_rewrite_children 50
url_rewrite_bypass on
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern (cgi-bin|\?)    0       0%      0
refresh_pattern .               0       20%     4320
cache_effective_user nobody
cache_effective_group nobody
visible_hostname rm-proxy
acl media   urlpath_regex -i \.mp3$ \.asf$ \.wma$ \.rar$ .\zip$ .\avi$ .\flv$
acl class src  127.0.0.1 192.168.0.21-192.168.0.50 192.168.0.75-192.168.0.98 192.168.0.101-192.168.0.112 192.168.0.114-192.168.0.129 192.168.0.161-192.168.0.200 192.168.0.204-192.168.0.255
acl admin_class src 192.168.0.100 192.168.0.99 192.168.0.113 192.168.0.160
acl admin53 src 192.168.0.113
delay_pools 2
delay_class 1 2
delay_parameters 1 2000000/2000000 400000/400000
delay_access 1 allow class
delay_access 1 deny localnet
delay_access 1 deny all
delay_class 2 1
delay_parameters 2 700000/700000
delay_access 2 allow admin_class
delay_access 2 allow localnet
delay_access 2 deny all
snmp_port 0
icp_port 0
htcp_port 0
nonhierarchical_direct on
always_direct allow FTP
always_direct allow HTTPS
always_direct allow nocach
always_direct allow icq_domain icq_port CONNECT
always_direct allow icq_addr   icq_port CONNECT
dns_nameservers 127.0.0.1
coredump_dir /var/run/squid/cache

##################################################################################

Далі необхідно створити відповідні каталоги де будуть розміщуватись кеш, логи і т.д.

Comments

Popular posts from this blog

Відновлення роботи роботи роутера Linksys WRT54G3G-ST після невдалого обновлення прошивки.

Docker certbor autoreNEW cert cron job

Debian 12 (Proxmox Mail Gateway) and starting mailCow mail service