Ограничение на скоростта на Squid, Linuxoid

отворен код завинаги

Squid има толкова много функции, че разработчиците често дори нямат време да ги опишат подробно. Общата настройка, като правило, не създава проблеми, трудностите започват, когато е необходимо да се настроят ограничения за използването на канала, да се организира достъп до прокси сървъра с помощта на външни инструменти или да се избере програма за работа с регистрационни файлове.

Ситуацията, когато един канал трябва да бъде справедливо разделен между потребителите, в никакъв случай не е необичайна. В Squid честотната лента на канала се регулира с помощта на пулове. Групата параметри "Delay Pools " отговаря за настройките. Повечето опции в този раздел изискват squid да бъде компилиран с опцията ‘—enable-delay-pools ’. По подразбиране е така. Можете да разберете параметрите на компилация на инсталирания Squid, като въведете командата "squid -v". Принципът на ограничението на скоростта е прост. Всеки заявен обект първо се буферира и едва след това се предава на клиента. Всеки пул се определя от два параметъра: скорост на запълване и размер на буфера. Ако количеството данни е по-малко от размера на буфера, тогава клиентът ги получава с максимална скорост, но когато лимитът бъде достигнат, информацията ще бъде издадена в съответствие с настройките. Когато басейнът се изпразни, Squid ще получи останалата част от исканата информация. Процентът на запълване на басейна варира според класа. За всеки пул един от пет класа трябва да бъде зададен с помощта наdelay_class (преди версия 2.6, един от три):

От това можем да заключим, че колкото по-висок е класът, толкова повече ограничения преминава връзката. Така че за четвъртия клас се прилагат първо общи ограничения, след това ограничения за подмрежи, ограничения за индивидуални хостове и накрая ограничения за потребители. Тоест, не трябва да очаквате, че потребителят ще получи ясно определена част от канала,ако неговата подмрежа е избрала свой лимит. Класът за пула се задава с помощта на параметъраdelay_class, чиито аргументи са номерът на пула и номерът на класа. Броят на пуловете се задава от параметъраdelay_pools. Например, нека създадем два пула и да дефинираме клас за всеки от тях. За да направите това, добавете следните редове към squid.conf:

$ sudovim /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 позволява/отказва ACL

delay_access 1 разреши офис delay_access 1 позволи на потребителя delay_access 1 откаже всички delay_access 2 разреши office2 delay_access 2 разреши на шефа delay_access 2 откаже всички http_access разреши офис office2 boss user http_access откаже всички

Първият пул включва клиентите, описани в ACL на офиса и потребителя, вторият пул включва office2 и boss. Трябва да се помни, че ACL, които не са посочени в delay_access, ще имат достъп до мрежата без ограничения. След това, като използватеdelay_parameters, задайте ограниченията на скоростта за всеки пул. В зависимост от класа на пула, броят на аргументите ще бъде различен. Така че за четвъртия клас пълният формат на записа изглежда така:delay_parameters pool common network individual_user

Съответно в третия клас последният аргумент не се използва, а във втория няма "мрежа" и "потребител". Броят на двойките трябва да съответства на класа, ако пропуснете нещо, калмариотказва да работи. Ограниченията за всяка от позициите се състоят от двойка filling_rate / pool_volume. Но стойностите са посочени тук в байтове, а доставчиците отчитат скоростта в битове. В позиции, където няма ограничения, задайте-1 :

параметри_закъснение 1 16000/16000 8000/8000 параметри_закъснение 2 32000/32000 -1/-1 16000/16000

Сега, когато изтегляте файлове от посочените типове, скоростта няма да надвишава 64 kbps. По същия начин се определят и сроковете. Например, за да намалите скоростта за всички потребители до 32 kbps през работно време, приложете следното правило: acl work_hours time M T W T F 9:00-18:00 delay_class 4 2 delay_access 4 enable work_hours delay_access 4 deny all delay_parameters 4 -1/-1 4000/4000

кажете ми, моля, когато задам скорост на повече от 4000/4000, ограничението спира да работи. Имам нужда от скорост от 15-20 kB / s, но не се получава, започва да изтегля почти максимално. Благодаря ви предварително!