Ubuntu Server. Ограничиваем скорость клиентов через Squid.

  • Автор:

squid_speed.png

Наши читатели часто спрашивают, каким образом можно ограничить скорость или разделить канал между клиентами. Сегодня мы рассмотрим как это можно сделать с помощью прокси-сервера Squid, взяв за основу уже настроенный нами роутер.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

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

За ограничение скорости в Squid отвечает механизм пулов, работающий по следующему принципу: каждый пул имеет свой размер и свою скорость заполнения. Любой запрошенный клиентом объект сначала помещается в пул, а затем отдается клиенту. Размер буфера и скорость его заполнения задается в байтах и записывается следующим образом: 120000/120000, эта запись обозначает пул с размером буфера в 120 кБ и скоростью заполнения 120 кБ/с. Неограниченный размер буфера / скорости указывается как -1/-1.

В зависимости от значений возможны три варианта работы пула

  • Размер буфера и скорость заполнения равны. Клиент всегда качает с максимальной скоростью, равной скорости заполнения.
  • Размер буфера меньше скорости заполнения. Клиент получает трафик с постоянной скоростью, численно равной размеру буфера, но Squid не подкачивает данные пока буфер не будет опустошен. Наполнение буфера (т.е. скачивание информации из интернета) происходит на скорости заполнения.
  • Размер буфера больше скорости наполнения. Клиент получает объекты не превышающие объем буфера на максимальной скорости, численно равной размеру буфера. Объекты большего размера он получает на скорости равной скорости заполнения буфера.

Также существуют три класса пулов:

  • Первый - ограничивается общая скорость загрузки
  • Второй - ограничивается общая скорость загрузки и скорость каждого хоста.
  • Третий - ограничивается общая скорость загрузки, скорость подсети и скорость каждого хоста.

На первый взгляд кажется довольно сложно. Однако это не так, разберем несколько примеров.

Пример 1. Необходимо ограничить скорость сети на уровне 1024 кб/с и скорость каждого клиента на уровне 256 кб/с.
Для этой цели нам понадобится пул второго класса с характеристиками 128000/128000 32000/32000 (не забываем переводить килобиты в килобайты)

Пример 2. Необходимо обеспечить серфинг на полной скорости канала (1024 кб/с), а для закачек более 1 МБ ограничить скорость на 128 кб/с. Создадим пул первого класса с параметрами 1000000/16000. Все объекты размером меньше 1 МБ будут отдаваться на максимальной теоретической скорости 8 Мбит/с, реально ограниченной максимальной скоростью канала, все объекты размером свыше одного МБ будут скачиваться на скорости не выше 128 Кб.

Теперь рассмотрим практический пример конфигурирования Squid для наших нужд, попробуем реализовать следующую схему:

squid_speed_001.png
Будем считать, что у нас имеется входящий интернет канал шириной 2048 кб/с который требуется разделить на две подсети LAN1 (192.168.0.0/24) и LAN2 (192.168.1.0/24) выделив по 1024 кб/с на каждую. В каждой из подсетей скорость конечных клиентов требуется ограничить на уровне 128 кб/с. Также в подсети LAN1 необходимо выделить неограниченный канал для ноутбука директора (192.168.0.110).

Задача ясна, приступим к реализации. Все изменения следует вносить в конфигурационный файл Squid /etc/squid/squid.conf.

Сначала зададим списки доступа (ACL), следует помнить, что поиск в списках ведется по порядку и до первого совпадения, поэтому нужно соблюдать необходимую очередность, сначала указываем хосты, затем подсети. Аналогичных правил следует придерживаться и при указании пулов.

acl direktor src 192.168.0.110/32
acl lan1 src 192.168.0.0/24
acl lan2 src 192.168.1.0/24

Установим необходимые права доступа

http_access allow direktor
http_access allow lan1
http_access allow lan2

Теперь создадим пулы. Для решения данной задачи нам потребуется два пула: первого и третьего классов.

delay_pools 2
delay_class 1 1
delay_class 2 3

Для параметра delay_class указывается номер пула и его класс, так вторая строка создает первый пул первого класса, третья второй пул третьего класса.

Следующим шагом зададим принадлежность групп доступа к пулам:

delay_access 1 allow direktor
delay_access 1 deny all
delay_access 2 allow lan1
delay_access 2 allow lan2
delay_access 2 deny all

Осталось задать параметры пулов. Следует помнить, что параметры указываются по порядку: общие - подсеть - хост и в том же порядке перекрывают друг друга. Если, например, на общем уровне действуют ограничения на размер файла, то они автоматически распространяются на подсеть и хост.

delay_parameters 1 -1/-1
delay_parameters 2 -1/-1 128000/128000 16000/16000

Сохраняем конфигурационный файл, перезапускаем Squid. Проверяем, все должно работать.

Дополнительные материалы:


  1. Linux. Настройка роутера (NAT + DHCP + Squid)
  2. Ubuntu Server. Настраиваем роутер NAT + DHCP + Squid3
  3. Ubuntu Server. Настраиваем контент-фильтр роутера (DansGuardian)
  4. DansGuardian. Сложности фильтрации русскоязычного контента
  5. Ubuntu Server. Настраиваем антивирусный фильтр роутера (ClamAV)
  6. Ubuntu Server. Дополняем контент-фильтр роутера антивирусом (DansGuardian + ClamAV)
  7. Ubuntu Server. Настраиваем форвардинг портов на роутере
  8. Ubuntu Server. Настраиваем аутентификацию через Squid
  9. Ubuntu Server. Ограничиваем скорость клиентов через Squid
  10. SARG - анализируем логи прокси-севера Squid
  11. SAMS - веб-интерфейс для управления Squid и не только
  12. Squid - настраиваем URL-фильтрацию по спискам
  13. Squid - блокируем потоковое мультимедиа
  14. Как устроена и работает система контроля доступа в Squid
  15. Настраиваем Squid для работы с Active Directory. Часть 1 - базовые настройки
  16. Настраиваем Squid для работы с Active Directory. Часть 2 - Kerberos-аутентификация
  17. Настраиваем Squid для работы с Active Directory. Часть 3 - Авторизация на основе групп AD
  18. WPAD или автоматическая настройка параметров прокси
  19. Устраняем ошибки Windows Update при работе через прокси-сервер Squid
  20. Настраиваем ограничение скорости для пользователей в Squid
  21. Сборка Squid 3.5 с поддержкой SSL из исходных кодов для Debian / Ubuntu
  22. Настраиваем роутер NAT + DHCP + Squid3 с поддержкой фильтрации SSL-трафика

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.


Loading Comments