Squid обмежуємо швидкість, Linuxoid

OpenSource forever

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

Ситуація, коли один канал потрібно справедливо поділити між користувачами, аж ніяк не рідкість. У Squid регулювання пропускної спроможності каналу здійснюється за допомогою пулів. За налаштування відповідає група параметрів "Delay Pools ". Більшість параметрів цієї секції вимагають компіляції squid із опцією '—enable-delay-pools '. За промовчанням так і є. Дізнатися про параметри складання встановленого Squid, можна ввівши команду «squid –v». Принцип обмеження швидкості простий. Кожен запитуваний об'єкт спочатку потрапляє в буфер, а потім передається клієнту. Кожен пул визначається двома параметрами: швидкістю його заповнення та розміром буфера. Якщо обсяг даних менший за розмір буфера, то клієнт отримує їх з максимальною швидкістю, але при досягненні ліміту інформація буде видаватися відповідно до установок. У міру спустошення пула Squid отримуватиме решту запитуваної інформації. Швидкість заповнення пулу залежить від класу. Для кожного пулу за допомогоюdelay_class має бути встановлений один із п'яти класів (до версії 2.6 — один із трьох):

Звідси можна дійти невтішного висновку, що що вище клас, то через більше обмежень проходить з'єднання. Так, для четвертого класу спочатку діють загальні обмеження, потім обмеження підмережі, окремого вузла і, нарешті, для користувача. Тобто не варто очікувати, що користувач отримає чітко прописану частину каналу,якщо його підмережа вибрала свій ліміт. Клас для пулу задається за допомогою параметраdelay_class, аргументами якого є номер пулу та номер класу. Кількість пулів визначається параметромdelay_pools. Наприклад, створимо два пули та визначимо для кожного з них свій клас. Для цього прописуємо у squid.conf наступні рядки:

$ sudo vim /etc/squid/squid.conf # Задаємо списки доступу, за якими будемо розподіляти користувачів по пулах acl office src 192.168.1.0/24 acl office2 src 192.168 .2.0/24 acl user src 192.168.1.20/32 acl boss src 192.168.1.12/32

delay_pools 2 # 2 пула delay_class 1 2 # пул 1, клас 2 delay_class 2 3 # пул 2, клас 3

Приналежність користувачів до пулу визначається за допомогоюdelay_access, його синтаксис нагадуєhttp_access : delay_access pool allow/deny ACL

delay_access 1 allow office delay_access 1 allow user delay_access 1 deny all delay_access 2 allow office2 delay_access 2 allow boss delay_access 2 deny all http_access allow office off>http_access deny all

У перший пул включені клієнти, описані в ACL office та user, у другий - office2 та boss. Слід пам'ятати, що ACL, які не вказані в delay_access, будуть виходити до мережі без обмежень. Далі за допомогоюdelay_parameters задаємо обмеження швидкості для кожного пулу. Залежно від класу пулу кількість аргументів буде різною. Так для четвертого класу повний формат запису виглядає так:delay_parameters пул спільна мережа індивідуальний_користувач

Відповідно, у третьому класі не використовується останній аргумент, а у другому відсутні «мережа» та «користувач». Кількість пар має відповідати класу, якщо щось пропустити, сквідвідмовиться працювати. Обмеження на кожній із позицій складаються з пари швидкість_заповнення/об'єм_пулу. Але значення тут вказуються в байтах, а швидкість провайдери рахують у бітах. У позиціях, у яких немає обмежень, встановлюємо-1 :

delay_parameters 1 16000/16000 8000/8000 delay_parameters 2 32000/32000 -1/-1 16000/16000

Тепер при закачуванні файлів зазначених типів швидкість вище 64 кбіт не підніматиметься. Аналогічно встановлюються обмеження часу. Наприклад, щоб зменшити для всіх користувачів швидкість до 32 кбіт у робочий час, застосовуємо наступне правило: acl work_hours time M T W T F 9:00-18:00 delay_class 4 2 delay_access 4 allow work_hours delay_access 4 deny all delay_parameters 4 -1/-1 4000/4000

підкажіть будь ласка, коли виставляю швидкість більш ніж 4000/4000, обмеження перестає діяти. мені потрібна швидкість 15-20 кБ/с, але ніяк не виходить починає качати майже на максимумі. заздалегідь дякую!