Стаття дуже корисна, проста для розуміння та досить докладна
Взято на збереження звідси http://www.opennet.ru/base/net/squid_inst.txt.html

Keywords: squid proxy acl
Від: Забудкін Лев Мирославович
Date: Fri, 14 Jan 2005 15:04:58 +0500 (YEKT)
Subject: Налаштування Squid для початківців

Налаштування Squid для чайників
(Версія статті 1.0 від 29.10.2004)

Забудкін Лев Мирославович,
Росія, Тюменська область,
Г. Нижньовартовськ,
ведучий програміст
МУ «Бібліотечна-інформаційна система»
[email protected]
http://zabudkin.com

ВСТУП
———-

Багато адміністраторів стикаються з проблемою розумного використання
часу та каналу для виходу в мережу Інтернет, замислюються про можливість
економії часу та грошей, про обмеження швидкості для окремих видів
файлів або особистостей, зрештою про економію всього, що пов'язано з
тими чи іншими аспектами виходу глобальну мережу.

Я, за допомогою цієї статті, спробую наочно і зрозуміло пояснити про
налаштуваннях найпоширенішого проксі сервера - проксі
сервера Squid.

ПОЧАТКОВІ НАЛАШТУВАННЯ SQUID ДЛЯ ДОСТУПУ КОРИСТУВАЧІВ
—————————————————

Ми не вдаватимемося в процес встановлення проксі сервера Squid, а
перейдемо відразу до його настроювання.

Найпростіше, що нам після установки слід зробити, то це
дозволити доступ користувачам нашої локальної мережі. Для цього служать
Параметри http_port, http_access. Крім цього, ми заведемо acl (список
контролю доступу) для нашої локальної мережі.

І так, http_port нам потрібний остільки, оскільки наш проксі-сервер Squid
повинен обслуговувати лише комп'ютери нашої локальної мережі та бути
невидимим для зовнішнього світу, щоб унеможливити «поганим»
людям» зовнішньої мережі скористатися нашим каналом або трафіком, а
у випадку, якщо будуть виявлені "дірки" в коді проксі сервера
Squid, користуватися ними.

Параметр http_access використовується для дозволу або заборони доступу
до певних ресурсів, певних адрес або з певних
адрес, до певних сайтів, за певними протоколами, портами та
всьому тому, що безпосередньо зазначено за допомогою Acl (списків контролю)
доступу).

Таблиця N 1. Деякі підмережі.

|Діапазон адрес |Повна форма |Коротка форма
192.168.0.1-192.168.0.254 192.168.0.0/255.255.255.0 192.168.0.0/24
192.168.20.1-192.168.20.254 192.168.20.0/255.255.255.0 192.168.20.0/24
192.168.0.1-192.168.254.254 192.168.20.0/255.255.0.0 192.168.20.0/16
10.0.0.1-10.254.254.254 10.0.0.0/255.0.0.0 10.0.0.0/8

Припустимо, що у Вас мережа з адресами від 192.168.0.1 до 192.168.0.254,
тоді додамо новий Acl (див. таблицю N1):

acl LocalNet src 192.168.0.0/24

Припустимо, що у вас проксі сервер Squid розташований за адресою
192.168.0.200 на порту 3128, тоді пишемо у файлі конфігурації:

http_port 192.168.0.200:3128

Наступною нашою дією буде заборона використання нашого проксі
сервера, крім користувачів нашої локальної мережі:

http_access allow LocalNet
http_access deny all

В даному випадку слово allow є роздільною здатністю, а слово deny
забороною, тобто ми дозволяємо доступ до проксі серверу Squid з
адрес нашої локальної мережі та забороняємо доступ всім іншим.

Будьте уважні, вказуючи http_access, тому що Squid використовує їх у
порядок вказівки Вами.

ВИВЧАЄМО ACL (СПИСКИ КОНТРОЛЮ ДОСТУПУ)
————————————-

Система управління доступом у проксі сервері Squid є дуже гнучкою
та обширною. Вона складається з елементів зі значеннями та списків доступу c
вказівкою allow (дозвіл) або deny (заборона).

Формат Acl наступний:

acl ім'я елемент список

Формат списку доступу:

http_access вказівка ​​имя_acl

Ми розглянемо деякі елементи, які дозволяють використовувати проксі
сервер Squid, звичайно з прикладами:

* acl ім'я src список

За допомогою цього елемента (src) ми вказуємо IP-адресу джерела, тобто
клієнта від якого прийшов запит до нашого сервера проксі.

У наступному прикладі ми дозволимо Васі Пупкіну (Pupkin) та відділу
програмування (Progs) доступ до нашого проксі-сервера, а всім
іншим заборонимо:

acl Progs src 192.168.0.1-192.168.0.9
acl Pupkin src 192.168.0.10
http_access allow Progs
http_access allow Pupkin
http_access deny all

* acl ім'я dst список

Цей елемент (dst) вказує IP-адресу призначення, тобто IP-адресу
того сервера, доступ якого хоче отримати клієнт проксі сервера.

У наступному прикладі ми заборонимо Вам доступ до підмережі 194.67.0.0/16 (до
наприклад, в ній знаходиться той самий aport.ru):

acl Net194 dst 194.67.0.0/16
http_access deny Pupkin Net194

* acl ім'я dstdomain список

За допомогою цього елемента (dstdomain) ми вказуємо домен, доступ до
якому хоче отримати клієнт проксі сервера.

У наступному прикладі ми заборонимо Васі доступ до веб-сайтів nnm.ru і
kpnemo.ru:

acl SitesWarez dstdomain .nnm.ru .kpnemo.ru
http_access deny Pupkin SitesWarez

У випадку, якщо необхідно вказати домен джерела, то використовуйте
srcdomain.

* acl ім'я [-i] srcdom_regex список
* acl ім'я [-i] dstdom_regex список

Дані елементи відрізняються від srcdomain та dstdomain лише тим, що в них
використовуються регулярні вирази, які в даній статті не
розглядаємо, але приклад все-таки наведемо:

Acl SitesRegexSex dstdom_regex sex
Acl SitesRegexComNet dstdom_regex \.com$ \.net$
http_access deny Pupkin SitesRegexSex
http_access deny Pupkin SitesRegexComNet

У цьому прикладі ми заборонили доступ Пупкіну Василю на всі домени,
що містять слово sex і всі домени в зонах.com и.net.

Ключ -i покликаний ігнорувати регістр символів у регулярних виразах.

* acl ім'я [-i] url_regex список

За допомогою цього елемента (url_regex) ми вказуємо шаблон регулярного
вирази для URL.

Приклад вказівки файлів з розширенням avi, що починаються слово sex:

acl NoAviFromSex url_regex -i sex.*\.avi$

Якщо Ви бажаєте вказати шаблон тільки для шляху URL, тобто
виключаючи протокол та ім'я хоста (домена), використовуйте urlpath_regex.

Приклад для вказівки музичних файлів:

acl media urlpath_regex -i \.mp3$ \.asf$ \.wma$

* acl имя_acl port список

Вказує номер порту призначення, тобто порт, до якого бажає
підключиться клієнт нашого сервера проксі.

Як приклад, заборонимо всім використання програми Mirc через наш проксі.
сервер:

Acl Mirc port 6667-6669 7770-7776
http_access deny all Mirc

* acl имя_acl proto список

Вказує протокол передачі.

Як приклад, заборонимо вищезгаданому Васі використання протоколу FTP
через наш проксі сервер:

acl ftpproto proto ftp
http_access deny Pupkin ftpproto

* acl имя_acl method список

Вказівка ​​методу http запиту клієнтом (GET, POST).

Візьмемо ситуацію, коли слід заборонити Васі Пупкіну переглядати його
пошту на сайті mail.ru, але при цьому дозволити ходити по сайту без
заборон, тобто заборонити Васі можливість увійти до своєї поштової скриньки
через форму входу на сайті:

acl SiteMailRu dstdomain .mail.ru
acl methodpost method POST
http_access deny Pupkin methodpost SiteMailRu

ОБМЕЖЕННЯ КОРИСТУВАЧІВ
————————-

Досить часто в нашій країні виникає ситуація, що канал доступу в
глобальну мережу Інтернет на всіх користувачів не вистачає та виникає
бажання дати кожному по максимуму, але при цьому не дати каналу
"загнутися" через любителів завантажувати файли.

Засоби проксі-сервера Squid дозволяють цього досягти кількома шляхами:

- Перший шлях це оптимізація кешування об'єктів;

— другий — це обмеження часу певних користувачів, що не
дуже коректно;

- Третій шлях полягає в обмеженні швидкості для певних типів
файлів, користувачів та всього того, що визначено нами через Acl.

ОБМЕЖЕННЯ ЗА ЧАСОМ
———————-

Обмежити користувачів за часом можна так:

acl ім'я часу чч:мм-ЧЧ:ММ

Де день: M - Понеділок, T - Вівторок, W - Середа, H - Четвер, F -
П'ятниця, A - Субота, S - Неділя.

При цьому чч:мм має бути меншим, ніж ЧЧ:ММ, тобто можна вказати з
00:00-23:59, але не можна вказати 20:00-09:00.

Давайте заборонимо все тому ж Вам мати доступ в мережу Інтернет з 10 до
15 годин щодня:

acl TimePupkin time 10:00-15:00
http_access deny Pupkin TimePupkin

Якщо хочеться дозволити Вас користуватися програмою Mirc з 13 до 14
годин, то пишемо:

acl TimePupkin time 13:00-14:00
http_access allow Pupkin TimePupkin Mirc
http_access deny Pupkin Mirc

А що робити, якщо необхідно заборонити чи дозволити у певні дні
тижня? Squid також дозволяє це зробити, наприклад з 13 до 14
понеділок та в неділю:

acl TimePupkin time MS 13:00-14:00

Як бачите, нічого складного у цьому немає.

ОБМЕЖЕННЯ ЗА ШВИДКОСТЮ
————————

Регулювання швидкості в проксі-сервері Squid здійснюється за допомогою
пулів. Пул - це свого роду барило з пивом, в яке пиво постійно
заливають до країв, а клієнти наливають у свої склянки чи інші ємності
для подальшого внутрішнього споживання при необхідності через свої
персональні крани

Пули регулюються за допомогою трьох параметрів: delay_class,
delay_parameters, delay_access. Кількість пулів вказується за допомогою
параметра delay_pools

Пули можуть бути трьох класів:

1. Весь потік пива обмежений одним краном (на всю мережу).

2. Весь потік пива обмежений одним краном, але при цьому кран ділиться
на підкранчики (кожний IP).
3. Весь потік пива обмежений одним краном, але кран поділяється на
підкранчики (на підмережі), які також поділяються на міні кранчики (на
кожен IP).

delay_pools кількість_оголошених_пулів
delay_access номер_пула дія ім'я_acl

дія може бути allow (дозволити) і deny (заборонити). При цьому,
даний пул діє на тих, кому він дозволений і не діє на тих,
кому він заборонено. У випадку, якщо вказано allow all, а потім deny Pupkin,
то на Пупкіна даний клас все одно подіє, т.к. IP-адреса Пупкіна
оголошений в acl Pupkin, входить до списку адрес acl all. Майте це
через.

delay_class номер_пула клас_пула
delay_parameters номер_пулу параметри

параметри відрізняються залежно від класу пулу:

для першого класу:

delay_parameters 1 байт_на_всю_мережу

для другого класу:

delay_parameters 1 на всю мережу на клієнта

для третього класу:

delay_parameters 1 на_всю_мережу на_підмережу на_клієнта

Для прикладу, у нас канал на 128 Кбіт (в середньому 15 Кбайт за секунду) і ми
бажаємо Васі (Pupkin) дати всього 4 Кбайти/сек (на все про все один
маленький келих), відділу програмування (Prog) дати всього 10
Кбайт/сек і на кожного всього по 5 Кб/сек (всього два келихи), всіх
решту обмежити в 2 Кбайти/сек на кожного і 10 Кб/сек на всіх, а
файли mp3 (media) обмежити в 3 Кбайти в секунду на всіх (на всю бочку
пива такий маленький кран). Тоді пишемо:

acl Prog src 192.168.0.1-192.168.0.9
acl Pupkin src 192.168.0.10
acl LocalNet src 192.168.0.0/255.255.255.0
acl media urlpath_regex -i \.mp3$ \.asf$ \.wma$

delay_pools 4
# спочатку обмежимо mp3
delay_class 1 1
delay_parameters 1 3000/3000
delay_access 1 allow media
delay_access 1 deny all
# обмежимо бідного Васю
delay_class 2 1
delay_parameters 2 4000/4000
delay_access 2 allow Pupkin
delay_access 2 deny all
# обмежимо відділ програмування
delay_class 3 2
delay_parameters 3 10000/10000 5000/5000
delay_access 3 allow Prog
delay_access 3 deny all
а тепер обмежимо інших (другий клас пулу)
delay_class 4 2
delay_parameters 4 10000/10000 2000/2000
delay_access 4 deny media
delay_access 4 deny Pupkin
delay_access 4 deny Prog
delay_access 4 allow LocalNet
delay_access 4 deny all

Часто виникає питання, а як краще використовувати такий малий
канал, щоб він автоматично ділився між усіма тими, хто в даний
момент щось завантажує? На це питання є однозначна відповідь
засобами проксі сервера Squid цього зробити неможливо, але все-таки
щось зробити можна:

delay_class 1 2
delay_parameters 1 -1/-1 5000/15000
delay_access 1 allow LocalNet
delay_access 1 deny all

Таким чином ми виділяємо на всю нашу мережу та на підмережі максимальний
канал (-1 означає необмеженість), а кожному користувачеві даємо
швидкість максимум 5 Кб/сек після того, як він скачає на максимальній
швидкість перших 15 Кбайт документа.

Таким чином, клієнт не з'їсть весь канал, але досить швидко отримає
перші 15 Кбайт.

ОПТИМІЗУЄМО КЕШУВАННЯ ОБ'ЄКТІВ У SQUID
——————————————

Існує безліч типів файлів, які оновлюються мало
часто, щоб дозволити проксі серверу реагувати на заголовки від
веб-серверів про те, що даний об'єкт не підлягає кешування або він був
на подив щойно змінений. Це досить часто ситуація.

Для вирішення таких ситуацій покликаний параметр refresh_pattern у файлі
налаштувань проксі-сервера Squid, але повністю з формулами тощо. ми його
розглядати не будемо.

refresh_pattern [-i] рядок МІНВ відсоток МАКСВ параметри

Цей параметр використовується для визначення віку об'єкта
(вважайте файл) у кеші, чи слід його оновлювати чи ні.

МІНВ (мінімальний час) - час у хвилинах, коли об'єкт, наявний в
кеше вважається свіжим.

МАКСВ (максимальний час) – максимальний час у хвилинах, коли об'єкт
вважається свіжим.

Параметри — це один або кілька таких параметрів:

- override-expire - ігнорувати інформацію про закінчення свіжості об'єкта
та використовувати МІНВ.

— override-lastmod — ігнорувати інформацію про дату зміни файлу та
використовувати МІНВ.

— reload-into-ims — замість запиту клієнтського запиту «не кешувати
документи» (no-cache) посилати запит «Якщо змінено з»
(If-Modified-Since)

- ignore-reload - ігнорувати запити клієнтів "не кешувати документи"
(no-cache) або перезавантажити документ (reload).

І так ми підійшли до найголовнішого. Ну, так які ж типи файлів рідше
всіх оновлюються? Як правило, це різноманітні музичні файли та
зображення.

Встановимо свіжість об'єктів, для цього для картинок та музичних файлів
вкажемо, скажімо так для прикладу, цілих 30 днів (43200 хвилин):

refresh_pattern -i \.gif$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.png$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.jpg$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.jpeg$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.pdf$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.zip$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.tar$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.gz$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.tgz$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.exe$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.prz$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.ppt$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.inf$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.swf$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.mid$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.wav$ 43200 100% 43200 override-lastmod override-expire
refresh_pattern -i \.mp3$ 43200 100% 43200 override-lastmod override-expire

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

Тепер можете перевірити ефективність свого проксі сервера, вона вже
точно зросте.

ВИСНОВОК
———-

Проксі сервер Squid не є одним лише поширеним проксі
сервером, існують та інші. Але, як показує статистика, більшість
використовують саме цей проксі сервер, але при цьому все одно у багатьох
початківців виникають проблеми з налаштуванням.

За допомогою цієї статті я спробував хоч трохи розкрити для великих
мас деякі функції проксі сервера Squid.

Posted in: ,
Tagged: , ,
Linux-сервер своїми руками Колісниченко Денис Миколайович

15.1. Що таке Squid?

15.1. Що таке Squid?

SQUID - це програма, яка отримує HTTP/FTP-запити клієнтів і з них звертається до ресурсів Інтернет. Застосування проксі-сервера (squid) дозволяє використовувати фіктивні IP-адреси у внутрішній мережі (Masquerading - маскарадинг), збільшує швидкість обробки запиту при повторному зверненні (кешування), а також забезпечує додаткову безпеку.

Немає сенсу встановлювати проксі на своїй домашній машині, оскільки функції кешування виконує браузер. Проксі-сервер варто використовувати лише в тому випадку, якщо у вашій мережі три-чотири комп'ютери, яким потрібний вихід в Інтернет. У цьому випадку запит від браузера до проксі-сервера обробляється швидше, ніж від браузера до ресурсів Інтернету, і таким чином збільшується продуктивність. При цьому можна сміливо встановити розмір кешу в браузерах клієнтів, що дорівнює нулю.

SQUID - це більше, ніж просто проксі-сервер. Це своєрідний стандарт кешування інформації у мережі Інтернет. З огляду на повсюдну поширеність SQUID, у книзі я приділив його конфігуруванню велику увагу.

Проксі-сервер Squid утворюється декількома програмами, серед яких: сама програма сервера squid, також програма dnsserver - програма обробки DNS-запитів. Коли запускається програма squid, вона спочатку запускає задану кількість процесів dnsserver, кожен із яких працює самостійно і може здійснювати лише одне пошук у системі DNS. За рахунок цього зменшується загальний час очікування на відповідь DNS.

З книги Linux-сервер своїми руками автора

15 Проксі-сервер SQUID 15.1. Що таке Squid? SQUID - це програма, яка отримує HTTP/FTP-запити клієнтів і з них звертається до ресурсів Інтернет. Застосування проксі-сервера (squid) дозволяє використовувати фіктивні IP-адреси у внутрішній мережі (Masquerading - маскарадинг),

З книги Linux: Повне керівництво автора Колісниченко Денис Миколайович

15.2. Установка SQUID SQUID може бути встановлений з вихідних текстів або у вигляді пакета RPM. Установка RPM-пакета SQUID дуже проста - для цього потрібно ввести команду rpm –ih squid-2.3.STABLE2-3mdk.i586.rpmЯ використовую версію squid 2.3. Новіша версія доступна у вигляді вихідних кодів. Вихідники можна

З книги Linux очима хакера автора Фльонов Михайло Євгенович

15.3. Налаштування SQUID Сервер SQUID використовує файл конфігурації squid.conf, який зазвичай міститься в каталозі /etc/squid (або /usr/local/squid/etc - раніше версії). Відкрийте його в будь-якому текстовому редакторі, наприклад joe/usr/local/squid/etc/squid.conf. Далі виконайте таку послідовність

З книги автора

15.4. Запуск SQUID Тепер, коли ви налаштували SQUID, його потрібно запустити: /usr/local/squid/bin/squid –zПараметр –z необхідний для створення (обнулення) каталогу, що містить кеш. Зазвичай цей параметр потрібний лише при першому запуску. Деякі інші параметри SQUID

З книги автора

15.5. Формат файлу squid.conf У файлі squid.conf задаються різні параметри конфігурації проксі-сервера. Давайте розглянемо їх усі по

З книги автора

17.1.5. Налаштування Squid Встановіть пакет squid. Залишилося налаштувати та запустити його. Для цього потрібно відредагувати конфігураційний файл /etc/squid/squid.conf. Спочатку вкажіть адресу проксі-провайдера: cach_peer proxy.your_isp.comЗадайте обсяг ОЗУ, який буде використовувати проксі-сервером: cache_memУ тому

З книги автора

Глава 18. Проксі-сервери SQUID та SOCKS 18.1. Що таке проксі-сервер? Проксі-сервер (сервер-посередник) – це програма, яка виконує HTTP/FTP-запити від імені клієнтів. Застосування проксі-сервера дозволяє використовувати фіктивні IP-адреси у внутрішній мережі (IP-маскарадинг),

З книги автора

18.2. Установка SQUID Я використовую версію 2.5. Пакет squid входить до складу сучасних дистрибутивів, а якщо його у вас чомусь немає, то завантажити можна з www.squid-cache.org. При складанні SQUID з вихідних кодів першим кроком має бути команда usr/local/squidSQUID буде встановлено в каталог,

З книги автора

18.3. Налаштування SQUID Сервер SQUID використовує файл конфігурації squid.conf, який зазвичай міститься в каталозі /etc/squid (або /usr/local/squid/etc - раніше версії). Докладніше на окремих налаштуваннях ми зупинимося трохи згодом. А зараз просто по кроках зробимо налаштування SQUID.

З книги автора

18.4. Запуск SQUID Перший раз squid потрібно запускати з ключем -z, щоб створити та очистити каталог кешу: # /usr/local/squid/bin/squid -zЩе кілька корисних ключів, з якими можна запускати squid, перераховані в таблиці 18.2. Таблиця 18.2 Ключ Призначення -а порт Задає

З книги автора

18.5. Розширені налаштування SQUID. Файл конфігурації squid.conf 18.5.1. Параметри мережі У файлі squid.conf можуть бути задані такі опції мережі:? http_port – порт для запитів клієнтів. З цього порту проксі-сервер чекатиме та оброблятиме запити клієнтів. Значення за замовчуванням

З книги автора

18.8. Розділення каналу за допомогою SQUID Допустимо, вам потрібно налаштувати проксі-сервер таким чином, щоб одна група комп'ютерів працювала в Інтернеті з однією швидкістю, а інша з іншою. Це може знадобитися, наприклад, для розмежування користувачів, які

З книги автора

9.3. squid Як я вже сказав, найпоширенішим проксі-сервером є squid. Цей сервер має досить довгу історію, і за його існування в ньому реалізовано багато можливостей. Ще не було нічого такого, що я не зміг би отримати за допомогою squid.

З книги автора

9.4. Права доступу до squid Це найболючіша тема для будь-якого адміністратора. Так, і в squid теж є права доступу, і вони також описуються в файлі конфігурації /etc/squid/squid.conf. Але ми розглядаємо права окремо, бо основний наголос робимо на безпеку. Саме тому

З книги автора

9.5. Зауваження по роботі squid Зараз нам доведеться трохи поговорити про деякі питання безпеки сервісу squid та додаткові можливості, які можуть прискорити роботу в

З книги автора

12.5.4. Журнал проксі-сервера squid Основним журналом проксі-сервера squid є /var/log/squid/access.log. Це текстовий файл, в якому кожен рядок складається з наступних полів: ? час початку з'єднання або події; тривалість сесії; IP-адреса клієнта;? результат обробки

Кожен, хто піднімає проксю, потім хоче дивитися, хто її користується, хто скільки качає. І іноді буває дуже корисним перегляд у режимі реального часу, хто що хитає. У даному топіку будуть розглянуті такі програми:
SqStat- Real Time статистика через web
- Аналізатор логів Squid з наступною генерацією HTML
SquidView- Інтерактивний консольний монітор логів Squid

0. Вступ

Я не буду тут розповідати як настроїти Apache. В інеті і так багато мануалів на цю тему, так що вперед і з піснею, я розповідатиму про ті фічі, які впроваджував у себе.
Так, розповідати буду на прикладі Debian Etch, у вас можуть відрізнятися шляхи, майте на увазі.
Поїхали…

1. SquidView

Ця програма працює в консолі, і виводить там все, що робить Squid.
Встановлення:

Aptitude install squidview

Зачекаємо кілька секунд, якщо у вас швидкий інтернет. Все, тепер ми можемо дивитися, хто качає. Якщо ви не змінювали розташування логів, і залишили більшість параметрів squid дефолтними, то для перегляду необхідно тільки запустити його, але з правами root"а, тому що логи сквіда пишуться їм.

Sudo squidview

Я думаю, що цього цілком вистачить вам, але також повідомлю дуже корисні речі, потрібно натискати кнопки, і дивитися:

  • h - допомога, тут ми можемо дізнатися ще більше;)
  • l - enter - генерація звіту, ви також можете налаштувати додаткові налаштування
  • T - почнеться облік статистики за розміром завантажуваного
  • O - перегляді хто че качав по користувачах, після T

По SquidView начебто б все, якщо щось не до розповів, пишіть, додам!

2. SqStat

Це скрипт, який дозволяє дивитися активні з'єднання, завантаження каналу, і середнє завантаження каналу.
Я припускаю, що у вас вже налаштований апач.
Завантажуємо останню версію,

Wget -c samm.kiev.ua/sqstat/sqstat-1.20.tar.gz
tar xvfz sqstat-1.20.tar.gz
cd ./sqstat-1.20
mkdir /var/www/squid-stat
cp -R * /var/www/squid-stat*

Тепер нам необхідно налаштувати Squid-cgi або cachemgr.cgi, Ставимо:
aptitude install squid-cgi

Тепер необхідно налаштовувати доступ.

Nano /etc/squid/squid.conf

Додаємо
acl manager proto cache_object
http_access allow manager localhost
http_access deny manager
#Ця рядок задає пароль secret і дозволяє робити все
cachemgr_passwd secret all

Зараз необхідно виправити /etc/squid/cachemgr.conf
echo "*" >> /etc/squid/cachemgr.conf
Замість * можете поставити адресу, яку прослуховує squid

У мене чомусь не вдалося завести за адресою 127.0.0.1 і ввів 192.168.0.1 і все запрацювало. тепер вам необхідно ввести в полі Cache Host адресу зовнішньої мережі. Порт який у вас стоїть, у полі логін, якщо ви робили все по мануалу, можна нічого не водити, і в полі пароля пишемо secret. Якщо все пройшло вдало, то ви побачите список доступних параметрів. Можете подивитися, а ми переходимо до налаштування SqStat.

Nano /var/www/squid-stat/config.inc.php
//Ця адреса на якій слухає ваш сквід
$squidhost="192.168.0.1";
$ squidport = 3128;
$cachemgr_passwd="secret";
//Цей параметр дозволяє резолвувати імена записами у вашій системі
$resolveip=false;
//У цьому файлі міститься айпі та імена комп'ютерів, можна використовувати кирилицю:)
$hosts_file="hosts";
$group_by="host";

В принципі, сам конфіг добре документований, вивчайте, благо там вивчати нічого))

Тепер робимо піддомен, так набагато зручніше)

Nano /etc/apache2/sites-enabled/sqstat

ServerAdmin [email protected]
DocumentRoot /var/www/squid-stat/
ServerName proxy.server.local

Для резолвінгу пишемо в /etc/hosts

Nano /etc/hosts
192.168.0.1 proxy.server.local

Ось і все :) майже все

Squid -k reconfigure
/etc/init.d/apache2 reload

3. Sarg

Ця програма генерує html звіти, малює графіки, і т.д.
Ставимо:

Aptitude install sarg

Nano /etc/squid/sarg.conf
language Ukrainian_koi8
graphs yes
title "(!LANG:Squid User Access Reports"!}
temporary_dir /tmp
output_dir /var/www/sarg
max_elapsed 28800000
charset Koi8-r

Звичайно ж ніхто Вам не забороняє поизгаляться над стилем відображення всього цього господарства - конфіг забезпечений дуже докладними коментарями.

Crontab -u root -e
* 08-18/1 * * * /usr/sbin/sarg-reports today
* 00 * * * /usr/sbin/sarg-reports daily
* 01 * * 1 /usr/sbin/sarg-reports weekly
* 02 1 * * /usr/sbin/sarg-reports monthly

Епілог

Все :)) Якщо хочете, можете створити і для нього піддомен! Це вже описано.
Сам я користуюсь усіма трьома програмами та задоволений.

UPD.Для вирішення проблеми зі скивдом третьої версії необхідно зробити м'яке посилання:

Ln -s /var/log/squid3/access.log /root/.squidview/log1

UPD.2.У наступній статті йтиметься розмова про delay pools

Доброго часу, шановні читачі та гості! З цієї статті я почну опис роботи кешируючого проксі-сервера SQUID. Ця стаття здебільшого буде вступна теоретична.

Що таке proxy-сервер і що таке squid

Почну з основ. squidє кешуючим проксі серверомдля HTTP, FTP та ін. протоколів. Проксі-сервер для HTTP- це програма, що виконує HTTP-запити від імені клієнтської програми (будь то браузер або інший софт). Proxy може бути кешируючимабо не кешируючим. Кешируючий,відповідно, зберігає всі запити в якесь сховище для більш швидкої віддачі клієнтам, а не кешуючий- просто транслює HTTP, FTP або інші запити. Раніше, кешування трафіку дозволяло досягти досить значної економії трафіку, але в час, що налаштовує, зі зростанням швидкостей інтернету це трохи втратило актуальність. Проксі сервера можна вибудовувати в ієрархіїдля обробки запитів При цьому, проксі сервера взаємодіють між собою по протоколу ICP.

Squidрозроблено і може працювати на більшості операційних систем (як unix, так і windows). Ліцензується за ліцензією GNU GPL. Здатний обробляти і кешувати HTTP, FTP, gopher, SSL і WAIS (прибрано в 2.6) запити, а також DNS. Найчастіші запити зберігає в оперативній пам'яті. На даний момент існують 2 стабільні версії squid: 2.7 і 3.1 . З відзнаками можна ознайомитись у посиланнях наприкінці статті. Усі залежності при встановленні з пакетів у них однакові. Конфігураційний файл версії 2 сумісний із версією 3, але до 3 версії додані нові параметри. У статті я розглядатиму версію squid3. Варто так само помітити, що якщо встановлювати squid3, то він конфігураційні файли буде тримати в /etc/squid3, а також логи за замовчуванням у squid3 лежать у каталозі /var/log/squid3/, а не /var/log/squid/, як "люблять рахувати" багато аналізаторів логів

Купу раз згадано слово " кешуванняА що ж це, власне, таке - кешування? Це спосіб зберігання об'єктів з Інтернетуна сервері, що знаходиться ближче до запитувального комп'ютера ніж вихідний. Інтернет-об'єкт - це файл, документ або відповідь на звернення до будь-якого сервісу, що надається в Інтернет (наприклад, FTP, HTTP, або gopher). Клієнт запитує інтернет-об'єкт із кеша проксі-сервера; якщо об'єкт ще не кешований, то проксі-сервер отримує об'єкт (або від вузла мережі вказаної за адресою URL, або від батьківського або сусіднього кеша) і доставляє його клієнту.

Режими роботи проксі-сервера Squid

Проксі-сервер Squid може працювати в наступних трьох основних режимах:

Прозорий режим

У цьому режимі HTTP з'єднання, що здійснюється клієнтами, перенаправляється на проксі-сервер без їх відома або явної конфігурації. У цьому режимі не потрібне налаштування клієнтів. Недоліки цього способу: потрібна конфігурація NAT та перенаправлення трафіку, автентифікація клієнтів не працює, не перенаправляються FTP та HTTPS запити.

Аутентифікуючий режим

Для роботи в цьому режимі клієнти повинні бути налаштовані для роботи з проксі-сервером (у налаштуваннях з'єднання має бути прописана адреса проксі-сервера). Може виконуватися автентифікація та авторизація клієнтів через Kerberos, Ldap, NTLM, IP та Radius. Можлива побудова взаємодії з серверами Microsoft Active Directory шляхом автентифікації клієнтів – членів домену, використовуючи протокол Kerberos, та подальшої авторизації членів груп домену, використовуючи LDAP у прозорому режимі (користувач вводить свій пароль лише при реєстрації в домені). Для авторизованих груп можливе застосування різних параметрів контролю доступу та QoS (delay pools).

Зворотний проксі-сервер

Проксі-сервер кешує вихідні дані. Зворотний проксі-сервер Squid отримує дані від сервера HTTP від ​​імені клієнта і передає їх назад клієнту (наприклад, в Інтернет). Цей режим дозволяє здійснити:

  • Використання кешування, яке знижує навантаження на сервер HTTP;
  • розподіл навантаження між HTTP серверами;
  • Маскування HTTP серверів та їх характеристик;
  • Запобігання web атак на сервері.

Схеми режимів роботи SQUID

transparent режим

зворотний режим

режим аутентифікації

На наведених схемах зеленими стрілками позначені потоки трафіку. Рух даних потоків у Linux найчастіше регулюється силами та налаштуваннями браузера. Крім того, дуже часто функції маршрутизатора і проксі виконує одна машина.

Установка SQUID

Перед установкою та налаштуванням squid необхідно і переконатися, що машина, на якій працюватиме squid, має доступ у зовнішню мережу і клієнти, які будуть використовувати даний проксі мають доступ до даної машини. Установка проксі-сервера squid, як і іншого ПЗ в Linux, можлива різними способами, описаними в статті . Я торкнуся способу встановлення з репозиторію в Debian. Отже, для установки squid необхідно встановити пакет squid3, для цього виконати таку команду:

Gw ~ # aptitude install squid3 Наступні НОВІ пакети будуть встановлені: libltdl7(a) squid-langpack(a) squid3 squid3-common(a) 0 пакетів оновлено, 4 встановлено нових, 0 пакетів відмічено для видалення та 0 пакетів не оновлено. Необхідно отримати 2157 kB архівів. Після розпакування 10,3 MB буде зайнято. Бажаєте продовжити? y Отримати:1 http://ftp.ru.debian.org/debian/ squeeze/main libltdl7 i386 2.2.6b-2 Отримати:2 http://ftp.ru.debian.org/debian/ squeeze/main squid- langpack all 20100628-1 Отримати:3 http://ftp.ru.debian.org/debian/ squeeze/main squid3-common all 3.1.6-1.2+squeeze2 Отримати:4 http://ftp.ru.debian.org /debian/ squeeze/main squid3 i386 3.1.6-1.2+squeeze2 Отримано 2 157 kБ на 9с (238 kБ/с) Вибір раніше не вибраного пакета libltdl7. (Читання бази даних... на даний момент встановлено 41133 файли та каталоги.) Розпаковується пакет libltdl7 (з файлу.../libltdl7_2.2.6b-2_i386.deb)... Вибір раніше не вибраного пакета squid-langpack. Розпаковується пакет squid-langpack (з файлу.../squid-langpack_20100628-1_all.deb)... Вибір раніше не вибраного пакета squid3-common. Розпакований пакет squid3-common (з файлу.../squid3-common_3.1.6-1.2+squeeze2_all.deb)... Вибір раніше не вибраного пакета squid3. Розпаковується пакет squid3 (з файлу.../squid3_3.1.6-1.2+squeeze2_i386.deb)... Обробляються тригери для man-db ... Налаштовується пакет libltdl7 (2.2.6b-2) ... Налаштовується пакет squid-langpack (20100628-1) ... Налаштовується пакет squid3-common (3.1.6-1.2+squeeze2) ... Налаштовується пакет squid3 (3.1.6-1.2+squeeze2) ... Creating Squid HTTP proxy 3.x spool directory structure 2012/02/15 21:29:41 | Creating Swap Directories Restarting Squid HTTP Proxy 3.x: squid3Creating Squid HTTP Proxy 3.x cache structure... (warning). 2012/02/15 21:29:43 | Creating Swap Directories.

Як видно, при установці пакета була спроба створення каталогу кешу, Але т.к. він не налаштований, то випало попередження. Так само, squidдодано в автозавантаження, запущено та приймає підключення на всіх інтерфейсах. Але т.к. він не налаштований, доступ до інтернет-сторінок через сервер обмежений. Конфіг сквідарозташований в /etc/squid3/squid.confі складається з більш ніж 5500 рядків і синтаксис його практично не відрізняється від конфіга будь-якого іншого сервісу. Кидатися міняти якісь налаштування зрізу – не варто. Потім не розгрібайте. Давайте розглянемо конфіг, який нам пропонується за замовчуванням без коментарів та порожніх рядків:

Gw~#grep-v^#/etc/squid3/squid.conf | grep -v ^$ acl manager proto cache_object acl localhost src 127.0.0.1/32::1 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32::1 acl SSL_ports port 443 acl Safe_ports port port # 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 # gm filemaker acl Safe_ports port 777 # multiling http acl CONNECT метод 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 deny all http_port 31 coredump_dir /var/spool/squid3 refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_ 0 20% 4320

Як видно, у стандартній конфігурації, проксі-сервер працює і дозволяє звернення тільки з адрес 127.0.0.0/8. Слід уважно переглянути весь список і закоментувати рядки з портами сервісів, що не потрібні або не використовуються. Більше повне розуміння цього конфігу буде після прочитання наступних розділів. Т.ч. якщо ми запустимо консольний браузер lunx із зазначенням нашого проксі, то зможемо побачити задану сторінку:

Gw~## запускаємо бреузер із зазначенням сторінки ya.ru: gw~# http_proxy=http://127.0.0.1:3128 lynx ya.ru : gw ~ # cat /var/log/squid3/access.log 1329527823.407 110 127.0.0.1 TCP_MISS/200 9125 GET http://ya.ru/ - DIRECT/93.158.134.203 text/html

Деякі параметри в конфігураційному файлі squid можуть використовуватись кілька разів (наприклад acl). Деякі параметри, що особливо мають одне значення, можуть використовуватися лише один раз. При цьому при використанні такого параметра 2 і більше разів - буде використано останнє значення. Наприклад:

Logfile_rotate 10 # Кілька значень - кінець буде дорівнює 5 logfile_rotate 5

Управління squid

Параметри, з якими був зібраний squid Вашого дистрибутива, можна подивитися командою squid3 -v. Наприклад, у Debian squeezу squid зібрано з параметрами, наведеними нижче:

Prefix=/usr - префікс для інших ключів: --mandir=$(prefix)/share/man - каталог зберігання man-сторінок --libexecdir=$(prefix)/lib/squid3 - каталог з модулями, що виконуються (в тому числі і хелпери) --sysconfdir=/etc/squid3 - каталог зберігання конфігурації --with-logdir=/var/log/squid3 - каталог зберігання журналів та багато інших. ін...

Налаштування squid

Опис налаштувань squid3почну з основних налаштувань, які бажано зробити при настроюванні будь-якої конфігурації проксі-сервера. Конфіг сквіда розташований /etc/squid3/squid.conf, це основний конфігураційний файл, який містить всі налаштування. (У дистрибутивах Debian та RedHat також при запуску проглядаються параметри зі стартових файлів налаштувань /etc/default/squid3і /etc/sysconfig/squid3відповідно). Так само, я згадував, що там понад 5 тисяч рядків і що одразу рватися налаштовувати щось не розібравшись – не варто. Синтаксис конфіга squid3класичний: рядки з # - це коментарі, параметри є рядками " параметр значенняКонфігураційний файл розбитий на розділи для зручності, але важливо пам'ятати, що розбір параметрів проводиться "зверху вниз" в порядку черговості. Так само, за допомогою параметра includeможна підключати зовнішні конфігураційні файли.

За замовчуванням дозвіл імені вузла, на якому працює Squid, відбувається за допомогою gethostname(),залежно від установок DNS, він іноді не може однозначно визначити ім'я, яке фігуруватиме в журналах та висновках про помилки “ Generated … by server.com (squid/3.0.STABLE2)”. Для коректного запису імені хоста необхідно це ім'я (FQDN??) занести до параметра:

Visible_hostname myproxy

За замовчуванням squid приймає підключення на всіх інтерфейсах. Якщо у нас сервер одним із мережевих інтерфейсів дивиться у зовнішній світ, то бажано обмежити підключення лише на інтерфейсі локальної мережі (припустимо, 10.0.0.10/24). За це відповідає параметр http_port:

Http_port 10.0.0.10:3128

Як працюють дані параметри можна побачити у наступному лістингу:

Gw~## перевіряємо роботу демона до налаштування: gw~#netstat-antp | grep squ tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 25816/(squid) gw~# # внесені зміни: gw~# grep ^http_port /etc/squid3/squid.conf http_port 10.0.0.2 # # перечитуємо змінений конфіг gw ~ # /etc/init.d/squid3 reload Reloading Squid HTTP Proxy 3.x configuration files. done. gw~## перевіряємо роботу зі зміненим конфігом: gw~#netstat -antp | grep squ tcp 0 0 10.0.0.10:3128 0.0.0.0:* LISTEN 25816/(squid)

Як видно, тепер демон працює лише на інтерфейсі заданої мережі. Варто також відзначити, що нові версії squid (<3.1) поддерживают задание нескольких параметров http_port. При этом, у разных параметров могут быть указанны дополнительные ключи такие как intercept, tproxy, accel и др., например:

Gw ~ # grep ^http_port /etc/squid3/squid.conf http_port 10.0.0.10:3128 http_port 10.0.0.10:3129 tproxy

Ці параметри задають режі роботи проксі-сервера. Наприклад, tproxy (старий синтаксис - transparent) задає режим . Дані режими гідні окремих статей і в майбутньому, можливо, буде розглянуто.

Тепер необхідно налаштувати клієнтський комп'ютер та користуватися інтернетом. Але за замовчуванням доступ дозволено тільки з локалхосту і при спробі доступу до веб-користувач отримає помилку "Доступ заборонено". У лозі /var/log/squid3/access.log буде приблизно таке повідомлення:

1329649479.831 0 10.0.1.55 TCP_DENIED/403 3923 GET http://ya.ru/ - NONE/- text/html

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

Налаштування доступу до squid

Фактично налаштування доступуполягає в опис об'єктадоступу через параметр acl, а потім дозволіабо заборона роботиописаному об'єкту acl за допомогою параметра "http_access". Найпростіший формат даних налаштувань має такий вигляд:

Acl Назва_список тип_відбору характеристики_типу_відбору

де acl- параметр описує список контролю доступу, ім'я якого задається значенням ім'я_списку. Ім'я чутливе до регістру літер. тип_відборузадає тип, якому відповідатиме задана далі характеристика_типу_відбору. Ця характеристика може набувати таких часто використовуваних значень, як src(Від source) - джерело запиту, dst- адреса призначення, arp- МАС-адреса, srcdomainі dstdomain- доменне ім'я джерела та призначення відповідно, port- порт, proto- Протокол, time- час та багато інших. Відповідно, значення характери_типу_відборуформуватимуться в залежності від типу_відбору.

Можна вказувати кілька рядків acl з однаковими іменами та типами_відбору, у такому разі дані acl будуть об'єднані в один список з логічною операцією АБО. Наприклад:

Acl site dstdomain site.com acl site dstdomain site.org # аналогічний запису: acl site dstdomain site.com site.org

Словами це звучить так: списку доступу з ім'ям site належать усі запити, надіслані на сайт site.com або site.org. Крім того, імена_спаска чутливі до регістру, тобто acl site і acl Site це два різних списки доступу.

Коли списки доступу сформовані, за допомогою параметра http_accessдозволяємо або забороняємо доступ зазначеному ACL. Загальний формат виклику такий:

Http_access allow|deny [!]ім'я_списку

де, http_access- параметр задає наступне правило дозволу ( allow) або заборони ( deny) доступ, вказаному далі імені_списку. При цьому, необов'язковий знак оклику інвертує значення імені списку. Тобто при знаку оклику значення імені_спискузвучатиме як всі, крім тих, хто належить даному списку. Крім того, можна задавати кілька списків через пропуск, тоді доступ буде дозволено за умови належності до всіх заданих списків. При цьому всі дозвільні правила необхідно вказувати до всіх правил, що забороняють:

Http_access deny all

Може виникнути резонне запитання: навіщо задавати це правило, якщо ми, наприклад, дозволимо доступ до Сквида тільки обраним acl? Адже решта, хто не потрапляє в цей acl отже "проходить повз"... Все просто. За замовчуванням, squid використовує протилежне/забороняюче правило останньому. Наприклад:

# у нас є єдине дозвільне правило для деякого acl user: http_access allow user # якщо при доступі до squid клієнт не потрапив у цей acl, то до нього буде застосовано дію deny. # А якщо ми маємо два правила http_access allow user http_access deny user2 # і клієнт не входить ні в acl user, ні в acl user2, то до нього застосовується allow. # Тобто дія протилежна останньому http_access deny user2

Це, як кажуть - основи основ. Давайте розглянемо найпростіший приклад. Припустимо, у нас є дві мережі 10.0.1.0/24 і 10.0.0.0/24, а також хост 10.0.4.1, яким необхідно дозволити доступ до інтернету. Для дозволу доступу необхідно створити опис нового списку доступу в розділі "ACCESS CONTROL" файлу squid.conf:

Acl lan src 10.0.1.0/24 10.0.0.0/24 acl lan src 10.0.4.1

Для більшої зручності можна задати ці правила в окремому файлі, вказавши шлях до нього в місце. характеристики_типу_відбору. Ось:

gw~## створимо окремий каталог для зберігання списків доступу gw~#mkdir/etc/squid3/acls/gw~## занесемо наші підмережі та хости в окремий файл gw~#vim/etc/squid3/acls/lan.acl gw~ # cat /etc/squid3/acls/lan.acl 10.0.1.0/24 10.0.0.0/24 10.0.4.1 gw ~ # # опишемо створений файл у конфізі (шлях необхідно укласти в лапки) gw ~ # grep lan.acl /etc /squid3/squid.conf acl lan src "/etc/squid3/acls/lan.acl"

Дозволимо створеному списку доступу lan доступ в інтернет і скажемо сквіду перечитати конфігураційний файл:

Gw ~ # grep lan /etc/squid3/squid.conf | grep acce http_access allow lan gw~#service squid3 reload Reloading Squid HTTP Proxy 3.x configuration files. done.

Підсумовуючи невеликий підсумок цього розділу, двома словами можна сказати, що acl ідентифікує Web запит, а http_access дозволяє або забороняє ідентифікований запит. Тепер наші локальні клієнти з радістю користуються інтернетом, попередньо налаштувавши браузер!

Налаштування параметрів кешу squid

Важливим моментом налаштування squid є налаштування параметрів кешування в squid. Місце розміщення кешу задається параметром cache_dirу squid.conf. Формат параметр наступний:

Cache_dir тип шлях розмір L1 L2

де, тип- це алгоритм формування кешу, можливо: ufs (unix file system), aufs (async ufs), diskd(Зовнішні процеси для уникнення блокування squid на дисковому вводі/виводі). Рекомендується використовувати ufs, хоча деякі хвалять aufs. Шлях- Задає місце розміщення кеша у файловій системі (має існувати і мати права доступу на запис для користувача, під яким працює squid - зазвичай proxy). Розмір- Вказує максимальний розмір, після якого кеш почне очищатися. У мережі існує багато холіварів за цим параметром. Ідеальний розмір кешу – від 2 до 10 ГБ залежно від кількості клієнтів. Приблизно 1 ГБ кешу на кожні 100 тисяч запитів/день. Я дотримуюсь значення 5 Гб. У Squid кожен об'єкт, що кешується, розташовується в окремому файлі, самі файли не звалюються в одне місце, а використовується дворівнева ієрархія каталогів. Кількість каталогів 1 та 2 рівнів та визначають параметри L1 та L2. Ці значення можна залишити за замовчуванням. Але для орієнтування у ситуації наведу цитату з bog.pp.ru:

Експеримент показав, що при кеші 700 МБ використовується тільки 2 директорії першого рівня. Тобто при стандартній структурі директорій кешу в нього "з комфортом" влазить мільйон об'єктів (9 GB), якщо їх більше, то треба збільшити кількість директорій верхнього рівня

Можна використати кілька cache_dir. Це позитивно позначається на продуктивності, особливо якщо розмістити кеш на різних дисках. Ще більше прискорити роботу кешу можна, розмістивши кеш у tmpfs. Для кожного параметра cache_dirможна в розділі optionsвизначити параметр read-only (тільки читання) та max-size (максимальний розмір об'єкта).

Максимальний розмір об'єкта в кеші визначається параметром maximum_object_size, значення за замовчуванням – 4 Мб. Я це значення збільшив до 60 Мб, т.к. співробітникам у локальній мережі часто доводиться завантажувати однотипні файли до вказаного розміру:

Maximum_object_size 61440 KB

Аналогічно? є і параметр minimum_object_sizeвідповідає за мінімальний розмір об'єкта, за замовчуванням його значення "0", тобто відключено. Я рекомендую значення цього параметра збільшити до 2-3 Кб, що зменшить навантаження на диск під час пошуку маленьких об'єктів.

Обсяг ОЗУ, використовуваний сквідом задається в параметрі cache_mem, стандартне значення 256 Мб (у версії 3.1). Це значення я залишив за замовчуванням. Змінювати це значення варто лише в тому випадку, якщо Сквід вас про це попросить у логах. Після цих змін необхідно перезапустити сквід, при цьому буде створено структуру каталогів:

Gw ~ # service squid3 start Starting Squid HTTP Proxy 3.x: squid3Creating Squid HTTP Proxy 3.x cache structure ... (warning). 2012/02/19 22:58:21 | Creating Swap Directories 2012/02/19 22:58:21 | /var/spool/squid3 exists 19/02/2012 22:58:21| Making directories in /var/spool/squid3/00 19/02/2012 22:58:21| Making directories in /var/spool/squid3/01 2012/02/19 22:58:21 | Making directories in /var/spool/squid3/02 2012/02/19 22:58:21 | Making directories in /var/spool/squid3/03 2012/02/19 22:58:21 | Making directories in /var/spool/squid3/04 19/02/2012 22:58:21| Making directories in /var/spool/squid3/05 2012/02/19 22:58:21 | Making directories in /var/spool/squid3/06 2012/02/19 22:58:21 | Making directories in /var/spool/squid3/07 19/02/2012 22:58:21| Making directories in /var/spool/squid3/08 19/02/2012 22:58:21| Making directories in /var/spool/squid3/09 2012/02/19 22:58:21 | Making directories in /var/spool/squid3/0A 19/02/2012 22:58:21| Making directories in /var/spool/squid3/0B 19/02/2012 22:58:21| Making directories in /var/spool/squid3/0C 19/02/2012 22:58:21| Making directories in /var/spool/squid3/0D 19/02/2012 22:58:21| Making directories in /var/spool/squid3/0E 19/02/2012 22:58:21| Making directories in /var/spool/squid3/0F .

Багато цікавих питань та відповідей на них щодо використання кеша та пам'яті squid"ом описано. На цьому, можна вважати типове рішення з настроювання проксі-сервера закінченим.

Приклад налаштування прозорого проксі squid

Що є прозорий проксі? Це режим роботи проксі-сервера, коли клієнт не налаштовуєтьсяна роботу через проксі і посилає запити в мережу за протоколом HTTP, якби клієнт браузер працював безпосередньо з веб-сервером. При цьому силами (в linux - ) вихідні запити на HTTP направляються на порт, на якому запущено проксі. Проксі-сервер, у свою чергу, перетворює HTTP запити в запити протоколу проксі-сервера і посилає відповіді клієнту, як веб-сервер. Т.ч. для клієнта прозоро відбувається взаємодія із проксі-сервером.

Важливо розуміти та знати!Цей метод підтримує тільки HTTP протокол, та не підтримує gopher, FTP або інше проксіювання. А також, Squid не вміє одночасно працювати в прозорому режимі та в режимі аутентифікації.

Для налаштування прозорого режиму необхідно:

1. Задати прозорий режиму налаштуваннях проксі. Це робиться в параметрі http_port, наприклад:

Http_port ip:port transparent

2. Загорнути користувачіввідповідним правилом на потрібний порт силами iptables:

Iptables -t nat -A PREROUTING -i ім'я_вхідного_інтерфейсу -s підмережа_локльної_мережі -p tcp --dport 80 -j REDIRECT --to-port порт_squid, приклад: iptables -t nat -A PREROUTING -i eth1 -s 10.0. p tcp --dport 80 -j REDIRECT --to-port 3128

Усе. Можна насолоджуватися загорнутими користувачами, що нічого не підозрюють, на наш проксі-сервер.

Траблешуттинг

В першу чергу, діагностика роботи squidполягає в перегляді журналів, розташованих в /var/log/squid3. Більшість проблем вирішується цим способом. Якщо це не допомогло вирішити проблему, то переключивши демона на дебаг режим командою squid3 -k debugпроблему буде знайти найпростіше. Власне, що являє собою ліг сквіда? Файли логів містять різну інформацію про завантаження та продуктивність Squid. У log пишуться крім інформації про доступ, /ще і системні помилки та інформація про споживання ресурсів, таких, наприклад, як пам'ять або дисковий простір.

Формат log файлів Squidявляє собою рядок із значень, розділених одним або декількома пробілами:

час.мс час_відгуку ip_src Squid_req_status/HTTP_status byte_snd метод URL user squid_her_status/ip_dst MIME

  • час- час у форматі unix (Кількість секунд від 00:00 1970.01.01)
  • мс- мілісекунди з точністю до 3-х знаків
  • час відгуку- час відгуку, мілісекунд
  • ip_src- IP адреса джерела
  • Squid_req_status- статус запиту у squid (наприклад, TCP_HIT для раніше об'єктів, що кешуються, TCP_MISS якщо запитуваний об'єкт взятий не з локального кеша, UDP_HIT і UDP_MISS те ж для братських запитів)
  • HTTP_status- статус http протоколу (200 для вдалих, 000 для UDP запитів, 403 для перенаправлень, 500 для помилок)
  • byte_snd- передано, байт у відповідь включаючи HTTP заголовок
  • метод- метод запиту GET чи POST
  • URL- запитана url-адреса
  • user- ім'я авторизованого користувача
  • squid_her_status- статус ієрархії squid - Результат запитів до братських/батьківських кеш
  • ip_dst- IP адреса запитуваного вузла
  • MIME- mime-type

Розглянемо з прикладу:

1329732295.053 374 10.0.1.55 TCP_MISS/200 1475 GET http://www.youtube.com/live_comments? - DIRECT/173.194.69.91 text/xml

Як видно, запит зроблено в 1329732295.053, відповідь віддаленого сервера склала 374 мс, хост, що запросив сторінку має IP 10.0.1.55, запитаний об'єкт був переданий не з локального кеша (TCP_MISS), код відповіді сервера - 200, клієнту передано 14 було запрошено URL http://www.youtube.com/live_comments?, ім'я користувача не визначено, об'єкт було отримано безпосередньо від сервера з IP 173.194.69.91, було передано текст, т.к. mime – text/xml. Ось.

Деякі останні моменти про squid3

У статті я розглянув основні принципи роботи проксі сервера, а також базові налаштування, що дозволяють реалізувати найпростіший кешуючий сервер, а також організувати роботу squid в прозорому (transparent) режимі. Squid підтримує кілька варіантів авторизації (по IP, через LDAP, MySQL, NTLM та ін), можливості обмеження пропускної спроможності каналу та контролю доступу до ресурсів інтернету. Роботу Сквіда з методами різної авторизації та приклади контролю трафіку я розгляну в наступних статтях.

Squid - поширене серед програмістів, системних адміністраторів і ентузіастів комп'ютерних мереж рішення для створення ефективного проксі-сервера і управління ним. Програма особливо приваблива тим, що вона кроссплатформенна. Тобто встановлювати і запускати її можна як у Linux та інших ОС, що відповідають архітектурі Unix, так і Windows. Можливості даного інструменту найвидатніші. Як їх можна задіяти? Чи є особливості в налаштуванні програми, залежно від конкретної ОС?

Загальні відомості про Squid

Що таке Squid? Під цією назвою відомий особливо продуктивний проксі-сервер, який найчастіше використовується з веб-клієнтами. З його допомогою можна організовувати одночасний доступ до Інтернету кількох користувачів. Інша примітна властивість Squid у тому, що може кешувати різні запити. Це дозволяє прискорювати отримання файлів, оскільки повторно завантажувати їх із Інтернету не потрібно. Проксі-сервер Squid також може регулювати швидкість інтернет-каналу при співвіднесенні з фактичним навантаженням.

Squid адаптований для використання на платформах Unix. Однак є версії Squid для Windows та багатьох інших популярних ОС. Ця програма, як і багато операційних систем, засновані на концепції Unix, безкоштовна. Вона підтримує FTP, SSL, дозволяє настроювати гнучкий контроль за доступом до файлів. Squid також записує кеш DNS-запити. При цьому можна налаштувати прозорий Squid-проксі, тобто роботу сервера у форматі, коли користувач не знає, що звертається до Мережі через нього, а не безпосередньо. Таким чином, Squid – це потужний інструмент у руках системного адміністратора чи постачальника комунікаційних послуг.

Практична корисність Squid

У яких випадках Squid може бути найкориснішим? Наприклад, це може бути завдання, при якому необхідно здійснити ефективну інтеграцію кількох комп'ютерів у мережу та забезпечити їм доступ до Інтернету. Доцільність використання проксі-сервера в цьому випадку полягає в тому, що запити між ним і браузером конкретного ПК здійснюються швидше, ніж у випадку взаємодії користувача з Інтернетом безпосередньо. Також при використанні Squid кеш у самому браузері можна вимкнути зовсім. Подібна функція дуже потрібна серед користувачів.

Склад Squid

Рішення, про яке йдеться, складається з декількох компонентів. Фактично, це пакет програмного забезпечення. У його структурі — програма, за допомогою якої запускається сервер, а також програма, що доповнює його, для роботи з DNS. Цікава її особливість у тому, що вона запускає процеси, кожен із яких функціонує незалежно від інших. Це дозволяє оптимізувати взаємодію сервера з DNS.

Встановлення програми

Установка Squid зазвичай жодних складнощів не викликає. Дуже легко ставиться програма на Linux: досить запровадити команду $ sudo apt-get install squid.

Що стосується Squid для Windows, тут все трохи складніше. Справа в тому, що дана програма не має файлів, що виконуються, - основних елементів додатків для ОС від Microsoft.

Однак установка Squid на Windows – завдання, яке вирішується цілком оперативно. Необхідно знайти на ресурсах або релевантних йому ресурсах дистрибутив, що містить файли типу.bat, які в чомусь близькі традиційним для Windows виконуваним. Після цього слід скопіювати їх у окрему папку на диску. Потім необхідно запустити Squid як системну службу. Після цього програму можна використовувати як проксі через браузер ПК. Можна сказати, що на цьому налаштування Squid завершено.

У дистрибутиві проксі-сервера практично завжди міститься файл конфігурації типу.conf. Він є головним інструментом налаштування доступу до Інтернету з комп'ютера користувача та інших пристроїв, об'єднаних у локальну мережу під час використання Squid.

Нюанси налаштування

Які нюанси може включати налаштування Squid? Windows — це операційна система, де робота з проксі-сервером буде здійснюватися за допомогою редагування конфігураційних файлів.

У випадку з Linux можна використовувати деякі процедури. Але в цілому в цій операційній системі, так само як і в тому випадку, якщо ОС, в якій ведеться налаштування Squid, Windows, найчастіше задіюється файл squid.conf. У ньому прописуються певні вирази («команди»), відповідно до яких сервер виконує керування підключеннями до мережі.

Розглянемо, таким чином, як здійснюється налаштування Squid, докладніше. Насамперед необхідно дозволити користувачам мережі доступ до сервера. Для цього слід виставити у файлі squid.conf відповідні значення http_port, а також http_access. Також корисно створити список, призначений для контролю доступу, або ACL. Налаштування http_port мають для нас значення, тому що наше завдання – підготувати Squid лише для обслуговування конкретної групи комп'ютерів. У свою чергу, такий параметр, як http_access, важливий, тому що за допомогою нього ми зможемо регулювати доступ до конкретних ресурсів Мережі, що запитуються з тих чи інших адрес (можливі інші критерії - протоколи, порти та інші властивості, що містяться в ACL).

Як виставити необхідні налаштування? Зробити це дуже просто.

Допустимо, ми створили комп'ютерну мережу з діапазоном адрес, що починається з 192.168.0.1 і закінчується 192.168.0.254. В цьому випадку в ACL-налаштуваннях слід виставити наступний параметр: src 192.168.0.0/24. Якщо нам потрібно налаштувати порт, то у файлі конфігурації треба зробити запис http_port 192.168.0.1 (тільки слід вказати правильну IP-адресу) та ввести номер порту.

Для того щоб обмежити доступ до створюваного за допомогою Squid проксі (крім комп'ютерів, що входять до локальної мережі), необхідно внести зміни до http_access. Це робиться просто — за допомогою виразів («команд» - умовимося називати їх так, хоча, строго кажучи, в тексті вони не є, але в рядку терміналу цілком відповідали б їм) allow LocalNet і deny all. Дуже важливо розмістити перший параметр вище за другий, оскільки Squid розпізнає їх по черзі.

Робота з ACL: заборона доступу до сайтів

Власне, налаштування доступу можливі у Squid у дуже широкому спектрі. Розглянемо приклади корисних у практиці управління локальними мережами.

Досить потрібний елемент src. З його допомогою можна зафіксувати IP-адресу комп'ютера, яка здійснила запит до проксі-сервера. Поєднуючи елемент src з http_access можна, наприклад, дозволяти доступу до мережі конкретному користувачеві, але забороняти аналогічні дії всім інших. Це дуже просто.

Пишемо ACL (назва групи користувачів) src (інтервал IP-адрес, які під управлінням). Рядком нижче — ACL (назва конкретного комп'ютера) src (IP-адреса відповідного ПК). Після цього працюємо вже з http_access. Встановлюємо дозвіл на вхід до мережі для групи користувачів та окремого ПК за допомогою команд http_access allow. Рядком нижче фіксуємо, що доступ до інших комп'ютерів в мережу закритий командою deny all.

Налаштування проксі Squid також передбачає використання іншого корисного елемента, передбаченого системою контролю доступу, - dst. Він дозволяє зафіксувати IP-адресу сервера, якого бажає підключитися користувач проксі.

За допомогою даного елемента ми можемо, наприклад, обмежити доступ до тієї чи іншої підмережі. Для цього можна задіяти команду ACL (позначення мережі) dst (IP-адреса підмережі), рядком нижче - http_access deny (ім'я конкретного комп'ютера в мережі).

Ще один корисний елемент - dstdomain. Він дозволить нам зафіксувати домен, якого бажає підключитися користувач. Використовуючи цей елемент, ми можемо обмежити доступ того чи іншого користувача, наприклад, до зовнішніх ресурсів Інтернету. Для цього можна задіяти команду: ACL (група сайтів) dstdomain (адреси сайтів), рядком нижче - http_access deny (ім'я комп'ютера в мережі).

Є й інші примітні елементи у структурі системи контролю доступу. Серед таких - SitesRegex. За допомогою цього виразу можна обмежити доступ користувачів на інтернет-домени, що містять певне слово, наприклад mail (якщо стоїть завдання заборонити співробітникам компанії звертатися до сторонніх поштових серверів). Для цього можна використовувати команду ACL SitesRegexMail dstdom_regex mail, потім ACL SitesRegexComNet dstdom_regex \.com$ (це означає, що доступ буде закритий для відповідного типу доменів). Рядком нижче - http_accesss deny із зазначенням комп'ютерів, з яких вихід на зовнішні поштові сервери небажаний.

У деяких виразах можна використовувати ключ -i. За допомогою нього, а також такого елемента, як наприклад url_regex, призначеного для створення шаблону для веб-адрес, ми можемо заборонити доступ до файлів із заданим розширенням.

Наприклад, за допомогою команди ACL NoSwfFromMail url_regex -i mail.*\.swf$ ми регулюємо можливість звернення до поштових сайтів, у структурі яких є Flash-ролики. Якщо немає необхідності включати в алгоритми доступу доменне ім'я сайту, можна задіяти вираз urlpath_regex. Наприклад, як ACL media urlpath_regex -i \.wma$ \.mp3$.

Заборона доступу до програм

Налаштування Squid дозволяє забороняти доступ користувачів до тих чи інших програм за допомогою ресурсів проксі-сервера. Для цього можна використовувати команду ACL (назва програми) port (інтервал портів), рядком нижче — http_access deny all (ім'я програми).

Задіяння стандартів та протоколів

Налаштування Squid також дозволяє системному адміністратору задати найкращий протокол використання інтернет-каналу. Наприклад, якщо є необхідність у тому, щоб людина з конкретного ПК виходила в мережу через протокол FTP, то можна задіяти наступну команду: ACL ftpproto proto ftp, рядком нижче - http_access deny (ім'я комп'ютера) ftpproto.

За допомогою елемента method ми можемо вказати те, яким способом має здійснюватись HTTP-запит. Усього їх 2 - GET і POST, але в ряді випадків бажаний саме перший, а не другий, і навпаки. Наприклад, можлива ситуація, за якої конкретний співробітник не повинен переглядати пошту через mail.ru, проте його роботодавець не заперечуватиме, якщо людина захоче читати на вказаному сайті новини. Для цього системний адміністратор може задіяти наступну команду: ACL sitemailru dstdomain .mail.ru, рядком нижче - ACL methodpost method POST, далі - http_access deny (ім'я комп'ютера) methodpost sitemailru.

Такі нюанси, які включає налаштування Squid. Ubuntu використовується Windows або інша сумісна з проксі-сервером ОС, - розглянуті нами особливості завдання потрібних параметрів в цілому характерні для будь-якого програмного середовища функціонування Squid. Робота з цим ПЗ - неймовірно захоплюючий процес і одночасно нескладний через логічність і прозорість основних алгоритмів налаштування програми.

Відзначимо деякі ключові моменти, характерні для налаштування Squid.

На що звернути увагу під час налаштування?

Якщо є труднощі у виявленні файлу squid.conf, який є основним інструментом конфігурування сервера, можна спробувати перевірити каталог etc/squid.

Найкраще, якщо під час роботи з файлом, про який йдеться, ви будете використовувати найпростіший текстовий редактор: не потрібно, щоб у рядки, що відповідають за налаштування проксі-сервера, потрапили будь-які елементи форматування.

У ряді випадків може виникнути потреба в тому, щоб при роботі вказано проксі-сервер провайдера. І тому існує команда cache_peer. Вписувати її потрібно так: cache_peer (адреса проксі-сервера провайдера).

У ряді випадків корисно фіксувати величину оперативної пам'яті, яку буде використовувати Squid. Це можна зробити за допомогою команди cache_mem. Також корисно вказати каталог, де зберігатимуться кешовані дані, робиться це за допомогою виразу cache_dir. У першому випадку повністю команда буде виглядати як cache_mem (обсяг ОЗУ в байтах), у другому – як cache_dir (адреса каталогу, кількість мегабайтів дискового простору). Бажано розміщувати кеш на високопродуктивних дисках, якщо є вибір.

Може знадобитися вказівка ​​комп'ютерів, які мають доступ до проксі-сервера. Це можна зробити за допомогою команд ACL allowed hosts src (інтервал IP-адрес комп'ютерів), а також ACL localhost src (локальна адреса).

Якщо порти типу SSL задіяні в підключеннях, їх також можна зафіксувати за допомогою команди ACL ssl_ports port (вказівка ​​порту). Одночасно можна заборонити використання методу CONNECT для інших портів, крім тих, що вказані у захищеному з'єднанні SSL. Це допоможе вираз http_access deny CONNECT! SSL_Ports.

Squid та pfSense

У ряді випадків разом з проксі-сервером, що розглядається, використовується інтерфейс pfSense, що застосовується в якості ефективного Яким чином організувати їх спільну роботу? Алгоритм розв'язання цього завдання не надто складний.

Спочатку нам потрібно попрацювати в інтерфейсі pfSense. Squid, налаштування якого вже здійснено нами, необхідно буде інсталювати за допомогою SSH-команд. Це один із найзручніших та найбезпечніших способів роботи з проксі-серверами. Для цього необхідно активізувати в інтерфейсі пункт Enable Для того, щоб знайти його, необхідно вибрати пункт меню System, потім Advanced, потім Admin Access.

Після цього потрібно завантажити PuTTY - зручний додаток для роботи з SSH. Далі, використовуючи консоль, необхідно встановити Squid. Це легко зробити за допомогою команди pkg install squid. Після цього необхідно встановити проксі через веб-інтерфейс pfSense. Squid (налаштування його параметрів на даному етапі не проводиться) можна інсталювати, вибравши пункт меню System, потім Packages, а потім — Available Packages. У відповідному вікні має бути доступний пакет Squid Stable. Вибираємо його. Необхідно виставити такі настройки: Proxy Interface: LAN. Навпроти рядка Transparent Proxy можна поставити галочку. Вибираємо адресу для лога та відзначаємо російську мову як кращу. Натискаємо Save.

Інструмент оптимізації ресурсів

Налаштування Squid дозволяє системним адміністраторам ефективно розподіляти ресурси серверів. Тобто в даному випадку не йдеться про заборони доступу на будь-який сайт, проте інтенсивність залучення каналу тим чи іншим користувачем або їхньою групою може вимагати контролю. Розглянута програма дозволяє вирішити це завдання декількома способами. По-перше, це задіяння механізмів кешування: за рахунок цього повторне завантаження файлів з Інтернету не знадобиться, оскільки знизиться навантаження на трафік. По-друге, це обмеження доступу до мережі за часом. По-третє, це встановлення граничних значень для швидкості обміну даними в мережі щодо дій тих чи інших користувачів або конкретних типів файлів, що завантажуються. Розглянемо зазначені механізми докладніше.

Оптимізація мережевих ресурсів за допомогою кешування

У структурі мережного трафіку присутня безліч типів файлів, що використовуються в постійному вигляді. Тобто одного разу завантаживши їх на комп'ютер, користувач може не повторювати відповідну операцію. Програма Squid дозволяє здійснювати гнучку настройку механізму розпізнавання подібних файлів сервером.

Досить корисна опція досліджуваного проксі-сервера - перевірка віку файлу, що знаходиться в кеші. Об'єкти, які надто довго розташовані у відповідній області пам'яті, слід оновлювати. Задіяння цієї опції можливе за допомогою команди refresh_pattern. Так, цілком вираз може виглядати як refresh_pattern (мінімальна тривалість часу – у хвилинах, максимальна частка «свіжих» файлів – у %, максимальний період). Відповідно, якщо файл знаходиться в кеші довше за встановлені критерії, то, можливо, буде потрібно завантаження його нової версії.

Оптимізація ресурсів через обмеження доступу за часом

Інший варіант, який можна використовувати завдяки можливостям Squid-Proxy, - це обмеження доступу користувачів до мережевих ресурсів за часом. Встановлюється за допомогою дуже простої команди: ACL (ім'я комп'ютера) time (день, година, хвилина). Доступ можна обмежувати для будь-якого дня тижня, підставивши замість «день» першу літеру слова, що відповідає назві в англійському алфавіті. Наприклад, якщо це понеділок — то M, якщо вівторок, то T. Якщо команда не має слова «день», то відповідна заборона буде встановлена ​​на весь тиждень. Цікаво, що також можна регулювати розклад входження в мережу, здійснюваного користувачами за допомогою тих чи інших програм.

Оптимізація ресурсів за допомогою обмеження швидкості

Досить поширений варіант – оптимізація ресурсів за допомогою регулювання допустимої швидкості обміну даними у межах комп'ютерної мережі. Проксі-сервер, що вивчається нами, — найзручніший інструмент для вирішення даного завдання. Регулювання швидкості обміну даними в мережі здійснюється за допомогою таких параметрів як delay_class, delay_parameters, delay_access, а також за допомогою елемента delay_pools. Усі чотири компоненти мають величезне значення для вирішення завдань, які стоять перед системними адміністраторами в аспекті оптимізації ресурсів локальної мережі.