Ограничиваем скорость доступа пользователям в интернет с помощью прокси-сервера Squid

Рано или поздно все сталкиваются с задачей ограничения скорости доступа в интернет для пользователей. Рассмотрим решение данной задачи при помощи прокси-сервера Squid (установить его можно по этой статье)

 

За ограничение скорости в Squid отвечает параметр delay_pools. Принцип работы delay_pools: каждый запрашиваемый объект сначала попадает в пул, а затем передается клиенту. Каждый пул определяется двумя параметрами: скоростью его заполнения и размером буфера. Прим. размер пула 8000 и размер буфера 8000, означает что скорость заполнения буфера будет 64 кБ/с. Неограниченный размер буфера и скорости задается как -1/-1. Размер буфера и скорость задается в байта.

 

Скорость заполнения пула зависит от класса delay_class. Варианты доступных классов:

  1. Общие ограничения скорости загрузки для всех.
  2. Общие ограничения скорости загрузки и скорость каждого хоста.
  3. Общие ограничения скорости загрузки, скорость сети и скорость каждого хоста.
  4. Все ограничения класса 3 + ограничения на уровне отдельно взятых пользователей (требуется аутентификация пользователей в правилах http_access).
  5. Запросы группируются по тэгам определяемым в external_acl

 

Вид записей delay_parameters, в зависимости от выбранного класса:

  1. delay_parameters <номер пула> <общие ограничения для всех>
  2. delay_parameters <номер пула> <общие ограничения для всех> <ограничения для хоста>
  3. delay_parameters <номер пула> <общие ограничения для всех> <ограничения для подсети> <ограничения для хоста>
  4. delay_parameters <номер пула> <общие ограничения для всех> <ограничения для подсети> <ограничения для хоста> <ограничения для пользователя>
  5. delay_parameters <номер пула> <тегированные ограничения>

 

Разграничение скорости по группам пользователей

К примеру мы имеем локальную сеть 172.31.31.0/24, список пользователей без ограничений, список пользователей кому ограничивать скорость до 1024 кБ/с.

Создадим списки пользователей с IP-адресами:

IP-адреса пользователей в текстовые файлы заносим в строчном порядке:

Переходим к редактированию конфигурации Squid

Указываем списки доступа (acl):

Указываем права доступа:

Задаем пулы по которым будут проходить пользователи:

Задаем группы доступа к пулам:

Задаем параметры пулов:

[note]Заметка: Параметры пулов указываются по порядку: общие — подсеть — хост и в том же порядке они перекрывают друг друга. Если, например, на общем уровне действуют ограничения на размер файла, то они автоматически распространяются на подсеть и хост.[/note]

Сохраняем конфиг. и перезапускаем Squid. Проверяем работу.

 

Разграничение скорости по группам пользователей Active Directory

Для ограничения скорости интернета на основе Active Directory групп, применяются практически аналогичные настройки что описаны выше, за исключением параметров определения этих самых групп AD. Ниже описанный способ предполагает что у вас уже настроена связка Squid + Active Directory (как настроить связку подробно описано здесь). Рассмотрим несколько иную ситуацию ограничения скорости, дабы разнообразить описание.

Имеем входящий канал интернета 10Mb, две локальные сети 172.31.31.0/24 и 172.31.32.0/24, группы пользователей в AD — Admins_Unlim (администраторы — без ограничений), Users_Speed_128 (пользователи с ограничениями). Задача поделить канал интернета поровну на две сети, группе пользователей Admins_Unlim предоставлять скорость без ограничения, группе Users_Speed_64 жестко ограничивать скорость до 64 кБ/с, всем остальным авторизованным пользователям AD ограничивать скорость 512 кб/с.

Переходим к редактированию конфигурации Squid

Указываем какие группы в AD мы будем использовать в Squid:

Указываем разрешенные локальные сети (acl):

Указываем права доступа:

Задаем пулы по которым будут проходить пользователи:

Задаем группы доступа к пулам:

Задаем параметры пулов:

Создаем в Active Directory две группы, которые мы указали в конфиге (Admins_Unlim, Users_Speed_64) и включаем в них пользователей. Сохраняем конфиг. и перезапускаем Squid. Проверяем работу.

Мы рассмотрели основные варианты ограничения скорости интернета с использованием delay_class 1,2 и 3 класса. Их вполне достаточно чтобы реализовывать различные задачи по ограничению скорости.

Обзор использования 4 и 5 delay_class классов.

Немного слов об этих двух классах.

4 класс идентичный классу 3, только в нем есть возможность задавать размер буфера и скорости не только по хосту, но и по пользователю (если используется NCSA-авторизация. Как настроить ее описано здесь). Хочу заметить что если пользователь авторизуется на нескольких ПК под одним логином, то скорость ему поделится на равные части от выделенной на каждого пользователя (прим. на пользователя выделено 16000/16000, пользователь заходит в интернет под своим логином на двух разных ПК, то скорость будет у него на каждом из ПК равна 8000/8000).

Использование пула выглядит так:

Сохраняем конфиг. и перезапускаем Squid. Проверяем работу.

5 класс пока что не дошли разобраться в нем… 🙁

 

Понравилась или оказалась полезной статья, поблагодари автора

 

БесполезноСлабоватоПриемлемоОтличноПревосходно (Еще нет оценок)
Загрузка...

Только один комментарий Комментировать

  1. Владимир /

    будет ли корректно работать такая конструкция ?)

    http_access allow localnet
    http_access allow localhost
    http_access deny all

    acl shef src «/etc/squid/user»
    acl dostupurl url_regex «/etc/squid/dostup_url»
    acl bad_url url_regex «/etc/squid/bad_url»
    acl bad_slovo url_regex «/etc/squid/bad_slovo»
    acl multimedia url_regex -i «/etc/squid/ban_suite»
    #acl multimedia2 rep_mime_type -i ^video
    acl media1 urlpath_regex -i mp3$ flv$ avi$ mp4$ swf$
    acl rabota url_regex -i .permstat.gks.ru* .consultant.ru*

    http_access deny media1 !shef
    http_access deny bad_slovo
    http_access deny bad_url !shef

    delay_pools 1
    delay_class 1 2
    delay_parameters 1 20000/12000 9000/9000

    #delay_access 1 allow multimedia2 !shef !dostupurl

    delay_access 1 allow multimedia !shef
    delay_access 1 allow multimedia !rabota
    delay_access 1 allow multimedia !dostupurl

    delay_access 1 deny all

    желание порезать скорость не по хостам а по контенту)
    и как squid отработает логику если писать так #delay_access 1 allow multimedia2 !shef !dostupurl

Оставить ответ

10 − один =

© IT-блог Жаконды All Rights Reserved.
Яндекс.Метрика