После того, как базовая конфигурация прокси-сервера определена и он даже может быть запущен, дополним хозяйство функционалом дозирования полосы пропускания для клиентов.
Опишем с помощью ACL типы ресурсов, в зависимости от которых будем применять правила к проходящему трафику.
Первым делом укажем серверы в одной из групп, им ведь нужно особое отношение:
# touch /etc/squid3/acl/delay_pool_servers_1
# touch /etc/squid3/acl/delay_pool_servers_2
# touch /etc/squid3/acl/delay_pool_servers_2
192.168.1.1/32
192.168.1.2/32
....
192.168.1.3/32
192.168.1.2/32
....
192.168.1.3/32
Далее причислим разные сетевые сегменты к разным группам, которым в поледствии будут назначены свои правила пропускания:
# touch /etc/squid3/acl/delay_pool_segments_1
# touch /etc/squid3/acl/delay_pool_segments_2
# touch /etc/squid3/acl/delay_pool_segments_2
192.168.2.0/24
192.168.3.0/24
....
192.168.x.0/24
192.168.3.0/24
....
192.168.x.0/24
Определим глобальную группу, к которой после применим правила, применяемые к тем пользователям, которые не вошли ни в одну из ранее описанных групп:
# touch /etc/squid3/acl/delay_pool_global_1
192.168.0.0/16
10.10.0.0/16
....
10.10.0.0/16
....
И, напоследок, опишем запрашиваемые ресурсы, к которым будет применено особое правило сужения пропускной способности (то есть, запрос будет исполняться, но с особо малой скоростью):
# touch /etc/squid3/acl/delay_pool_underspeed_1
\.mp3($|\?)
\.mpeg($|\?)
\.avi($|\?)
\.mov($|\?)
....
\.mpeg($|\?)
\.avi($|\?)
\.mov($|\?)
....
Сведём всё это в конфигурационном файле Squid:
# cat /etc/squid3/squid-ordinary-delay.conf
# Delay pools: begin
# Pools ACL. Описываем ACL принадлежность к группам
#
acl delay_pool_underspeed_1 urlpath_regex -i "/etc/squid3/acl/delay_pool_underspeed_1"
#
acl delay_pool_servers_1 src "/etc/squid3/acl/delay_pool_servers_1"
acl delay_pool_servers_2 src "/etc/squid3/acl/delay_pool_servers_2"
#
acl delay_pool_segments_1 src "/etc/squid3/acl/delay_pool_segments_1"
acl delay_pool_segments_2 src "/etc/squid3/acl/delay_pool_segments_2"
#
acl delay_pool_global_1 src "/etc/squid3/acl/delay_pool_global_1"
# Объявляем об инициализации набравшегося количества пулов, с помощью которых будет дозировано "вливаться" и "разливаться" трафик (далее пулы можно именовать только из набора от 1 до числа, равного общему количеству инициализированных пулов, наш пример: 1, 2, 3, 4, 5. 6)
#
delay_pools 6
# Регистрируем "пулы" как таковые
# Пул номер 1 второго класса (ограничена общая скорость загрузки и скорость загрузки для каждого из членов группы (биты 25 -32 IP-адреса); иначе говоря: одно общее ведро и 255 отдельных вёдер для каждого хоста из C-сети). Используем его для ограничения скорости скачивания непрофильного трафика (мультимедиа)
#
delay_class 1 2
#
# Пулы номер 2 и 3 первого класса (ограничена общая скорость загрузки для всех членов; иначе говоря: одно ведро на всех). Используем его для группы серверов, например серверов обновления, которые нечасто, но агрессивно эксплуатируют канал:
#
delay_class 2 1
delay_class 3 1
#
# Пулы номер 4 и 5 второго класса. Используем эти пулы для индивидуального дозирования скорости сегментов сети, например отделов или департаментов:
#
delay_class 4 2
delay_class 5 2
#
# Один пул номер 6 третьего класса (ограничена общая скорость загрузки, скорость загрузки подсетей входящих в группу (дифференцируются по битам 17-24 IP-адреса) и скорость загрузки каждого из членов группы (биты 25 -32 IP-адреса); иначе говоря: одно общее ведро, 255 ведер для каждой B-сети и отдельное для каждого хоста). С помощью этого пула мы по-дробим всех не вошедших в вышестоящие пулы, дав им по чуть-чуть, по остаточному принципу
#
delay_class 6 3
# Привязываем к описанным ранее пулам группы
#
delay_access 1 allow delay_pool_underspeed_1
delay_access 1 deny all
#
delay_access 2 allow delay_pool_servers_1
delay_access 2 deny all
delay_access 3 allow delay_pool_servers_2
delay_access 3 deny all
#
delay_access 4 allow delay_pool_segments_1
delay_access 4 deny all
delay_access 5 allow delay_pool_segments_2
delay_access 5 deny all
#
delay_access 6 allow delay_pool_global_1
delay_access 6 deny all
# Описываем ограничения пулов (total_rest/total_max net_rest/net_max ind_rest/ind_max in Bps)
# Ограничиваем скорость закачки группы в 1Mbs, "хоста" - в 32Kbs
#
delay_parameters 1 131072/1310720 4000/1310720
#
# Даём всей группе возможность закачивать данные со скоростью не более 2Mbs, отдавая клиентам на скорости в 10Mbs
#
delay_parameters 2 262144/1310720
#
# Закачиваем на скорости в 4Mbs
#
delay_parameters 3 526000/1310720
#
# Ограничиваем скорость закачки группы в 4Mbs, "хоста" - в 256Kbs
#
delay_parameters 4 526000/1310720 32000/1310720
delay_parameters 5 526000/1310720 32000/1310720
#
# Ограничиваем глобальную скорость в 2Mbs, скорость C-сетей в 1Mbs, хостов - 128Kbs
#
delay_parameters 6 262144/1310720 131072/1310720 16000/1310720
# Delay pools: end
# Pools ACL. Описываем ACL принадлежность к группам
#
acl delay_pool_underspeed_1 urlpath_regex -i "/etc/squid3/acl/delay_pool_underspeed_1"
#
acl delay_pool_servers_1 src "/etc/squid3/acl/delay_pool_servers_1"
acl delay_pool_servers_2 src "/etc/squid3/acl/delay_pool_servers_2"
#
acl delay_pool_segments_1 src "/etc/squid3/acl/delay_pool_segments_1"
acl delay_pool_segments_2 src "/etc/squid3/acl/delay_pool_segments_2"
#
acl delay_pool_global_1 src "/etc/squid3/acl/delay_pool_global_1"
# Объявляем об инициализации набравшегося количества пулов, с помощью которых будет дозировано "вливаться" и "разливаться" трафик (далее пулы можно именовать только из набора от 1 до числа, равного общему количеству инициализированных пулов, наш пример: 1, 2, 3, 4, 5. 6)
#
delay_pools 6
# Регистрируем "пулы" как таковые
# Пул номер 1 второго класса (ограничена общая скорость загрузки и скорость загрузки для каждого из членов группы (биты 25 -32 IP-адреса); иначе говоря: одно общее ведро и 255 отдельных вёдер для каждого хоста из C-сети). Используем его для ограничения скорости скачивания непрофильного трафика (мультимедиа)
#
delay_class 1 2
#
# Пулы номер 2 и 3 первого класса (ограничена общая скорость загрузки для всех членов; иначе говоря: одно ведро на всех). Используем его для группы серверов, например серверов обновления, которые нечасто, но агрессивно эксплуатируют канал:
#
delay_class 2 1
delay_class 3 1
#
# Пулы номер 4 и 5 второго класса. Используем эти пулы для индивидуального дозирования скорости сегментов сети, например отделов или департаментов:
#
delay_class 4 2
delay_class 5 2
#
# Один пул номер 6 третьего класса (ограничена общая скорость загрузки, скорость загрузки подсетей входящих в группу (дифференцируются по битам 17-24 IP-адреса) и скорость загрузки каждого из членов группы (биты 25 -32 IP-адреса); иначе говоря: одно общее ведро, 255 ведер для каждой B-сети и отдельное для каждого хоста). С помощью этого пула мы по-дробим всех не вошедших в вышестоящие пулы, дав им по чуть-чуть, по остаточному принципу
#
delay_class 6 3
# Привязываем к описанным ранее пулам группы
#
delay_access 1 allow delay_pool_underspeed_1
delay_access 1 deny all
#
delay_access 2 allow delay_pool_servers_1
delay_access 2 deny all
delay_access 3 allow delay_pool_servers_2
delay_access 3 deny all
#
delay_access 4 allow delay_pool_segments_1
delay_access 4 deny all
delay_access 5 allow delay_pool_segments_2
delay_access 5 deny all
#
delay_access 6 allow delay_pool_global_1
delay_access 6 deny all
# Описываем ограничения пулов (total_rest/total_max net_rest/net_max ind_rest/ind_max in Bps)
# Ограничиваем скорость закачки группы в 1Mbs, "хоста" - в 32Kbs
#
delay_parameters 1 131072/1310720 4000/1310720
#
# Даём всей группе возможность закачивать данные со скоростью не более 2Mbs, отдавая клиентам на скорости в 10Mbs
#
delay_parameters 2 262144/1310720
#
# Закачиваем на скорости в 4Mbs
#
delay_parameters 3 526000/1310720
#
# Ограничиваем скорость закачки группы в 4Mbs, "хоста" - в 256Kbs
#
delay_parameters 4 526000/1310720 32000/1310720
delay_parameters 5 526000/1310720 32000/1310720
#
# Ограничиваем глобальную скорость в 2Mbs, скорость C-сетей в 1Mbs, хостов - 128Kbs
#
delay_parameters 6 262144/1310720 131072/1310720 16000/1310720
# Delay pools: end
Проверяем конфигурационный файл на наличие ошибок, перед запуском его в работу:
# squid3 -f /etc/squid3/squid-ordinary-delay.conf -k parse
Processing Configuration File: /etc/squid3/squid-ordinary-delay.conf (depth 0)
13 октября 2014 в 02:47
13 октября 2014 в 21:39