URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID12
Нить номер: 7122
[ Назад ]

Исходное сообщение
"Настройка delay_pool в Squid. Помогите пожалуйста."

Отправлено Dan78 , 22-Июл-14 16:26 
Есть прокси/фаервол/NAT на Debian 7 (7.4). Два сетевых интерфейса (eth0 - WAN; eth1 - LAN (сеть 172.16.1.0/24)). Установлен SQUID (Version 2.7.STABLE9)+ iptables. Интернет есть у всех, канал 8 Mbit.
Этот канал хочу порезать при помощи сквида. До этого никогда такого не делал. Задача: отделить тех, кто качает и ходит в соцсети от всех остальных. Первым (качкам и вконтактникам) порезать скорость, вторым дать "равные" доли от канала. Оставив при этом запаса ~2 Mbit от канала. Нашел несколько инструкций по настройке squid и delay_pool в частности, в итоге получился следующий конфиг:

acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 172.16.1.0/24
acl localnet src 172.16.1.0/24    # RFC1918 possible internal network
acl vip src "/etc/squid/lists/vip"
acl file_bad urlpath_regex -i \.mp3$ \.asf$ \.wma$ \.flv$
acl bad_url dst "/etc/squid/lists/bad_url"
acl SSL_ports port 443        # https
acl SSL_ports port 563        # snews
acl SSL_ports port 873        # rsync
acl Safe_ports port 80        # http
acl Safe_ports port 21        # ftp
acl Safe_ports port 443        # https
acl Safe_ports port 70        # gopher
acl Safe_ports port 210        # wais
acl Safe_ports port 1025-65535    # unregistered ports
acl Safe_ports port 280        # http-mgmt
acl Safe_ports port 488        # gss-http
acl Safe_ports port 591        # filemaker
acl Safe_ports port 777        # multiling http
acl Safe_ports port 631        # cups
acl Safe_ports port 873        # rsync
acl Safe_ports port 901        # SWAT
acl purge method PURGE
acl CONNECT method CONNECT

http_access allow manager
http_access allow localnet vip
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access allow localhost
http_access deny all
cachemgr_passwd ghjcnjq all
http_port 172.16.1.1:3128 transparent
hierarchy_stoplist cgi-bin ?
access_log /var/log/squid/access.log squid
log_fqdn on
refresh_pattern ^ftp:        1440    20%    10080
refresh_pattern ^gopher:    1440    0%    1440
refresh_pattern -i (/cgi-bin/|\?) 0    0%    0
refresh_pattern (Release|Packages(.gz)*)$    0    20%    2880
refresh_pattern .        0    20%    4320
acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]
upgrade_http0.9 deny shoutcast
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
hosts_file /etc/hosts
coredump_dir /var/spool/squid
cache_dir ufs /var/spool/squid 5000 16 256
minimum_object_size 2 KB
maximum_object_size 61440 KB
via off
forwarded_for delete

delay_pools 4

delay_class 1 1
delay_parameters 1 768000/768000
delay_access 1 allow vip
delay_access 1 deny all

delay_class 2 2
delay_parameters 2 64000/5000000 8000/1024000
delay_access 2 allow file_bad
delay_access 2 deny all

delay_class 3 2
delay_parameters 2 64000/5000000 16000/2048000
delay_access 3 allow bad_url
delay_access 3 deny all

delay_class 4 3
delay_parameters 4 704000/50000000 -1/-1 38000/10000000
delay_access 4 allow localnet

Сквид ошибок не находит в конфиге, нормально стартует. Но при этом ВСЕ пользователи у меня в классе 4. Вторым и третьим классом никто не стал... Что неправильно в конфиге и как добиться выполнения поставленной задачи?


Содержание

Сообщения в этом обсуждении
"Настройка delay_pool в Squid. Помогите пожалуйста."
Отправлено pavlinux , 22-Июл-14 23:58 
> ... как добиться выполнения поставленной задачи?

HTB, SFQ, ipset  



"Настройка delay_pool в Squid. Помогите пожалуйста."
Отправлено Dan78 , 23-Июл-14 07:54 
>> ... как добиться выполнения поставленной задачи?
> HTB, SFQ, ipset

Можно ли расшифровать Ваш ответ? Я никогда не слышал об этих аббревиатурах.
Да, и я спрашивал как решить поставленную задачу в рамках сквида, поскольку знаю, что подобные вещи как раз на нём делают.


"Настройка delay_pool в Squid. Помогите пожалуйста."
Отправлено pavlinux , 23-Июл-14 22:36 
>>> ... как добиться выполнения поставленной задачи?
>> HTB, SFQ,

Шейперы трафика это. (см. QoS)
ipset - группировка ip адресов, для работы в паре с фаерволом.

> Можно ли расшифровать Ваш ответ? Я никогда не слышал об этих аббревиатурах.
> поскольку знаю, что подобные вещи как раз на нём делают.

SQUID работает на 7-5 уровнях OSI, скорость передачи - это 3-2 уровень.  
Могу как теоретически, так и практически показать как обойти любое
ограничение скорости реализованное на 7...5 уровнях. (но не буду, долго это и нудно :))
4-й уровень и SPDY - отдельная песнь.



"Настройка delay_pool в Squid. Помогите пожалуйста."
Отправлено Dan78 , 24-Июл-14 08:47 
>>> HTB, SFQ,
> Шейперы трафика это. (см. QoS)
> ipset - группировка ip адресов, для работы в паре с фаерволом.

Ни разу не сталкивался с этим. Может быть, это хорошие инструменты, но почему-то про них мне информация не попадалась. Я реализую решения на том, что знаю и боюсь, мы можем немного отойти от темы.

>> Можно ли расшифровать Ваш ответ? Я никогда не слышал об этих аббревиатурах.
>> поскольку знаю, что подобные вещи как раз на нём делают.
> SQUID работает на 7-5 уровнях OSI, скорость передачи - это 3-2 уровень.

Вы имеете в виду QOS, как я понимаю. Но "Механизмы QoS главным образом работают на четвертом (транспортном) и седьмом (прикладном) уровнях." (http://www.ccc.ru/magazine/depot/03_14/read.html?0301.htm, или в этих протоколах что-то кардинально изменилось?) Соответственно, чем эти механизмы отличаются от Squid мне не очень понятно. Но это уже отклонение от прямой темы форума, посему развивать не буду.

> Могу как теоретически, так и практически показать как обойти любое
> ограничение скорости реализованное на 7...5 уровнях. (но не буду, долго это и
> нудно :))

Я не сомневаюсь в Ваших знаниях и умениях. Однако вопрос темы "Как сделать ограничения на Squid", а не "Как обойти ограничения траффика в Squid". Посему опять таки, продолжать углубляться в это не вижу смысла.

> 4-й уровень и SPDY - отдельная песнь.

Да, посему забудем в данном обсуждении.


"Настройка delay_pool в Squid. Помогите пожалуйста."
Отправлено ipmanyak , 23-Июл-14 09:38 
>[оверквотинг удален]
> delay_class 1 1
> delay_parameters 1 768000/768000
> delay_access 1 allow vip
> delay_access 1 deny all
> delay_class 2 2
> delay_parameters 2 64000/5000000 8000/1024000
> delay_access 2 allow file_bad
> delay_access 2 deny all
> delay_class 3 2
> delay_parameters 2 64000/5000000 16000/2048000

ошибка,  пул номер 3, а delay_parameters  указан для пула c номером 2
> delay_access 3 allow bad_url

пробуй вот так
delay_access 3 allow localnet bad_url
> delay_access 3 deny all
> delay_class 4 3
> delay_parameters 4 704000/50000000 -1/-1 38000/10000000
> delay_access 4 allow localnet
> Сквид ошибок не находит в конфиге, нормально стартует. Но при этом ВСЕ
> пользователи у меня в классе 4. Вторым и третьим классом никто
> не стал... Что неправильно в конфиге и как добиться выполнения поставленной
> задачи?

в 4 пуле  -1/-1 советую убрать, этим  вы сняли все ограничения и лучше сделать его  пулом второго класса.


"Настройка delay_pool в Squid. Помогите пожалуйста."
Отправлено Dan78 , 23-Июл-14 12:00 
>>[оверквотинг удален]
>> delay_class 2 2
>> delay_parameters 2 64000/5000000 8000/1024000
>> delay_access 2 allow file_bad
>> delay_access 2 deny all
>> delay_class 3 2
>> delay_parameters 2 64000/5000000 16000/2048000
> ошибка,  пул номер 3, а delay_parameters  указан для пула c
> номером 2

Спасибо, не заметил!

>> delay_access 3 allow bad_url
> пробуй вот так
> delay_access 3 allow localnet bad_url

А какой смысл объединять всю локалку и "запретные" урлы? Скорости у них должны быть разные.

>> delay_access 3 deny all
>> delay_class 4 3
>> delay_parameters 4 704000/50000000 -1/-1 38000/10000000
>> delay_access 4 allow localnet
> в 4 пуле  -1/-1 советую убрать, этим  вы сняли все
> ограничения и лучше сделать его  пулом второго класса.

Как я понял из прочитанного в сети, -1/-1 убирает ограничения в конкретном пуле для конкретных параметров (для сети, посети или ИП). Или это действует вообще на всё и на всех? А про второй класс я подумаю, идея вполне здравая, спасибо!



"Настройка delay_pool в Squid. Помогите пожалуйста."
Отправлено Andrey Mitrofanov , 23-Июл-14 09:55 
>[оверквотинг удален]
> acl bad_url dst "/etc/squid/lists/bad_url"
> delay_access 2 allow file_bad
> delay_parameters 2 64000/5000000 16000/2048000
> delay_access 3 allow bad_url
> delay_parameters 4 704000/50000000 -1/-1 38000/10000000
> delay_access 4 allow localnet
> Сквид ошибок не находит в конфиге, нормально стартует. Но при этом ВСЕ
> пользователи у меня в классе 4. Вторым и третьим классом никто
> не стал... Что неправильно в конфиге и как добиться выполнения поставленной
> задачи?

В пулы попадают не "кто-то", а конкретные http-запросы, но да несколько запросов с одного ip в одном пуле получат одно ограничение.

По этим правилам, например, 1 пользователь (=ip) может качать .mp3 на 8kBs, "bad url" на 16-ти, и, скажем какой-нибудь .pdf на 38kBs, всего - до 52kBs. Никаким из 3ёх классов _он, "ip", при этом не становится.


"Настройка delay_pool в Squid. Помогите пожалуйста."
Отправлено Dan78 , 23-Июл-14 12:07 
> В пулы попадают не "кто-то", а конкретные http-запросы, но да несколько запросов
> с одного ip в одном пуле получат одно ограничение.

Да, я это понимаю. Я неправильно применил терминологию, скажем так.

> По этим правилам, например, 1 пользователь (=ip) может качать .mp3 на 8kBs,
> "bad url" на 16-ти, и, скажем какой-нибудь .pdf на 38kBs, всего
> - до 52kBs. Никаким из 3ёх классов _он, "ip", при этом
> не становится.

Да, согласен. Именно этого я и хочу. Но этого почему-то и не происходит. Смотрю sqstat с интервалом обновления 1с, народ качает mp3, flv, заходит на сайты перечисленные в bad_url - и всё это хозяйство попадает в 4 класс. С разных ИП, разные запросы. Но все в одном классе. Проблема в этом. Вопрос про это. Что в указанном конфиге не так?


"Настройка delay_pool в Squid. Помогите пожалуйста."
Отправлено Andrey Mitrofanov , 23-Июл-14 12:49 
Ещё попытка.

> acl vip src "/etc/squid/lists/vip"
> acl file_bad urlpath_regex -i \.mp3$ \.asf$ \.wma$ \.flv$
> acl bad_url dst "/etc/squid/lists/bad_url"

1. Стеснялся спросить, а _vip_ работает?

2. http://wiki.squid-cache.org/SquidFaq/SquidAcl#Fast_and_Slow_...
Как то: dst, пишут, - slow, но delay_access - fast, поэтому пул bad_url не работает.

Заменить url_regex-пом, переписав список, например.

Но urlpath_regex - fast, тот пул дожен, вроде работать.

>[оверквотинг удален]
> delay_class 2 2
> delay_parameters 2 64000/5000000 8000/1024000
> delay_access 2 allow file_bad
> delay_access 2 deny all
> delay_class 3 2
> delay_parameters 2 64000/5000000 16000/2048000
> delay_access 3 allow bad_url
> delay_access 3 deny all
> delay_class 4 3
> delay_access 4 allow localnet

3. Порядок директив - и deny-и _везде.... Я как-то с этим морочался, припоминаю.

-> добавь для последнего пула deny all в конце, или даже переписать в виде

deny vip
deny file_bad
deny bad_url
allow all


"Настройка delay_pool в Squid. Помогите пожалуйста."
Отправлено Dan78 , 23-Июл-14 16:52 
> Ещё попытка.

Спасибо! :)

>> acl vip src "/etc/squid/lists/vip"
>> acl file_bad urlpath_regex -i \.mp3$ \.asf$ \.wma$ \.flv$
>> acl bad_url dst "/etc/squid/lists/bad_url"
> 1. Стеснялся спросить, а _vip_ работает?

Как ни удивительно, VIP работает исправно.

> 2. http://wiki.squid-cache.org/SquidFaq/SquidAcl#Fast_and_Slow_...
>  Как то: dst, пишут, - slow, но delay_access - fast, поэтому
> пул bad_url не работает.
> Заменить url_regex-пом, переписав список, например.

Хм... Мне весьма сомнительна идея заменить список сайтов регулярным выражением... К тому же

> Но urlpath_regex - fast, тот пул дожен, вроде работать.

Этот пул тоже НЕ работает... Работают 1 и 4, 2 и 3 не работают, хотя запросы, которые должны подпадать под правила в них, есть. Кто не попал в 1, оптом попадают в 4, как будто остальных пулов нет.

> 3. Порядок директив - и deny-и _везде.... Я как-то с этим морочался,
> припоминаю.
> -> добавь для последнего пула deny all в конце, или даже переписать
> в виде
> deny vip
> deny file_bad
> deny bad_url
> allow all

А вот это завтра попробую. По результату напишу.


"Настройка delay_pool в Squid. Помогите пожалуйста."
Отправлено Dan78 , 24-Июл-14 09:00 
> 3. Порядок директив - и deny-и _везде.... Я как-то с этим морочался,
> припоминаю.
> -> добавь для последнего пула deny all в конце,

Да, добавил, сквид рестарнул - тот же фаберже :( 1 и 4 работают, остальные  - нет.

>или даже переписать в виде
> deny vip
> deny file_bad
> deny bad_url
> allow all

Хм, запретить пользоваться этими классами? А смысл? Или я не так понял Ваш совет?


"Настройка delay_pool в Squid. Помогите пожалуйста."
Отправлено Andrey Mitrofanov , 24-Июл-14 11:17 
>[оверквотинг удален]
>> -> добавь для последнего пула deny all в конце,
> Да, добавил, сквид рестарнул - тот же фаберже :( 1 и 4
> работают, остальные  - нет.
>>или даже переписать в виде
>> deny vip
>> deny file_bad
>> deny bad_url
>> allow all
> Хм, запретить пользоваться этими классами? А смысл? Или я не так понял
> Ваш совет?

Я имел в виду последний

>>> delay_class 4 3
>>> delay_parameters 4 704000/50000000 -1/-1 38000/10000000
>>> delay_access 4 allow localnet

переписать, как

delay_class 4 3
delay_parameters 4 704000/50000000 -1/-1 38000/10000000
delay_access 4 deny vip
delay_access 4 deny file_bad
delay_access 4 deny bad_url
delay_access 4 allow all


"Настройка delay_pool в Squid. Помогите пожалуйста."
Отправлено Dan78 , 24-Июл-14 13:44 
>> Хм, запретить пользоваться этими классами? А смысл? Или я не так понял
>> Ваш совет?
> Я имел в виду последний

Да, спасибо за подсказку!

> переписать, как
> delay_class 4 3
> delay_parameters 4 704000/50000000 -1/-1 38000/10000000
> delay_access 4 deny vip
> delay_access 4 deny file_bad
> delay_access 4 deny bad_url
> delay_access 4 allow all

Переписал, перезапустил. Результат отрицательный. Мне не понятно почему работают только 1 и 4 пулы? Что в них такого "правильного"?


"Настройка delay_pool в Squid. Помогите пожалуйста."
Отправлено Сергей , 24-Июл-14 15:53 
>[оверквотинг удален]
> Да, спасибо за подсказку!
>> переписать, как
>> delay_class 4 3
>> delay_parameters 4 704000/50000000 -1/-1 38000/10000000
>> delay_access 4 deny vip
>> delay_access 4 deny file_bad
>> delay_access 4 deny bad_url
>> delay_access 4 allow all
> Переписал, перезапустил. Результат отрицательный. Мне не понятно почему работают только
> 1 и 4 пулы? Что в них такого "правильного"?

ЭТО есть
delay_access 2 allow file_bad

А вот этого
http_allow  file_bad  
нет


"Настройка delay_pool в Squid. Помогите пожалуйста."
Отправлено Andrey Mitrofanov , 24-Июл-14 17:19 
>[оверквотинг удален]
>>> delay_access 4 deny file_bad
>>> delay_access 4 deny bad_url
>>> delay_access 4 allow all
>> Переписал, перезапустил. Результат отрицательный. Мне не понятно почему работают только
>> 1 и 4 пулы? Что в них такого "правильного"?
> ЭТО есть
> delay_access 2 allow file_bad
> А вот этого
> http_allow  file_bad
> нет

Нормально там всё с этим. Есть http_access allow на manager (хотя это не совсем обычно, но не суть), vip, localnet и localhost.


"Настройка delay_pool в Squid. Помогите пожалуйста."
Отправлено Dan78 , 25-Июл-14 08:59 
>>> Переписал, перезапустил. Результат отрицательный. Мне не понятно почему работают только
>>> 1 и 4 пулы? Что в них такого "правильного"?
>> ЭТО есть
>> delay_access 2 allow file_bad
>> А вот этого
>> http_allow  file_bad
>> нет
> Нормально там всё с этим. Есть http_access allow на manager (хотя это
> не совсем обычно, но не суть), vip, localnet и localhost.

На всякий случай проверил - прописывание http_access для этих acl ничего не даёт...


"Настройка delay_pool в Squid. Помогите пожалуйста."
Отправлено Andrey Mitrofanov , 25-Июл-14 11:47 
> Переписал, перезапустил. Результат отрицательный. Мне не понятно почему работают только
> 1 и 4 пулы? Что в них такого "правильного"?

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


"Настройка delay_pool в Squid. Помогите пожалуйста."
Отправлено Dan78 , 25-Июл-14 14:34 
>> Переписал, перезапустил. Результат отрицательный. Мне не понятно почему работают только
>> 1 и 4 пулы? Что в них такого "правильного"?
> Я исчерпал предположения. Следующий шаг, приходящий в голову, взять кувалду побольше: debug
> 9 и расшифровывание больших-больщих логов. Но это не ко мне.

Спасибо Вам за помощь! Приёмами с кувалдой тоже не владею. Может быть кто-нибудь ещё что-то сможет подсказать. Проблема не стоит ребром, но хотелось бы её решить!


"Настройка delay_pool в Squid. Помогите пожалуйста."
Отправлено ipmanyak , 25-Июл-14 14:43 
>>> Переписал, перезапустил. Результат отрицательный. Мне не понятно почему работают только
>>> 1 и 4 пулы? Что в них такого "правильного"?
>> Я исчерпал предположения. Следующий шаг, приходящий в голову, взять кувалду побольше: debug
>> 9 и расшифровывание больших-больщих логов. Но это не ко мне.
> Спасибо Вам за помощь! Приёмами с кувалдой тоже не владею. Может быть
> кто-нибудь ещё что-то сможет подсказать. Проблема не стоит ребром, но хотелось
> бы её решить!

включи debug в конфиге сквида уровень побольше и смотри cache.log
увидишь какие правила срабатывают а какие нет


"Настройка delay_pool в Squid. Помогите пожалуйста."
Отправлено Dan78 , 25-Июл-14 15:40 
> включи debug в конфиге сквида уровень побольше и смотри cache.log
> увидишь какие правила срабатывают а какие нет

Спасибо, попробую, после выходных напишу.


"Настройка delay_pool в Squid. Помогите пожалуйста."
Отправлено Dan78 , 28-Июл-14 12:20 
И так, проблему решил сам. Всё было просто, дело в моём непонимании некоторых моментов и невнимательности:

Было:
> acl file_bad urlpath_regex -i \.mp3$ \.asf$ \.wma$ \.flv$
> acl bad_url dst "/etc/squid/lists/bad_url"

Стало:
acl file_bad urlpath_regex -i mp3$ asf$ wma$ flv$
acl bad_url dstdomain "/etc/squid/lists/bad_url"

Было:
>[оверквотинг удален]
> delay_parameters 2 64000/5000000 8000/1024000
> delay_access 2 allow file_bad
> delay_access 2 deny all
> delay_class 3 2
> delay_parameters 2 64000/5000000 16000/2048000
> delay_access 3 allow bad_url
> delay_access 3 deny all
> delay_class 4 3
> delay_parameters 4 704000/50000000 -1/-1 38000/10000000
> delay_access 4 allow localnet

Стало:
delay_pools 4

delay_class 1 1
delay_parameters 1 768000/768000
delay_access 1 allow vip
delay_access 1 deny all

delay_class 2 2
delay_parameters 2 64000/5000000 8000/1024000
delay_access 2 allow file_bad
delay_access 2 deny all

delay_class 3 2
delay_parameters 3 64000/5000000 16000/2048000
delay_access 3 allow bad_url
delay_access 3 deny all

delay_class 4 2
delay_parameters 4 704000/50000000 38000/10000000
delay_access 4 allow localnet
delay_access 4 deny all

Теперь это хозяйство работает нормально. Все попадают в нужные пулы с нужной скоростью. Всем принявшим участие в обсуждении большое спасибо за помощь!