Мы — долго запрягаем, быстро ездим, и сильно тормозим.
|
||||||||||||||||||||||
www.lissyara.su
—> статьи
—> FreeBSD
|
|
ACL
Сперва небольшая шпаргалка по ACL:
acl aclname port 80 70 21 - ACL, описывающий порты. Вместо простого перечисления можно указать диапазон, например 1-1024.
acl aclname proto HTTP FTP - ACL, описывающий протокол, по которому клиент желает сделать запрос на сервер.
acl ftp url_regex -i ^ftp:// - использовать регулярки для отлова содержимого адресной строки.
"-i" игнорирует разницу между заглавн и строчными буквами
acl aclname method GET POST - метод, которым передаются данные клиента серверу.
acl aclname time [day-abbrevs] [h1:m1-h2:m2] - ACL, описывающий время.
Коды дней недели определяются так: S - Sunday - Воскресенье, M - Monday - Понедельник, T - Tuesday - Вторник, W - Wednesday - Среда, H - Thursday - Четверг, F - Friday - Пятница, A - Saturday - Суббота. Ну а вместо h1:m1 и h2:m2 вставляется время.
acl worktime time MTWHF 08:00-17:00 описывает рабочее время с понедельника по пятницу, с 8 утра до 5
вечера.
acl weekday time SA описывает целиком субботу с воскресеньем, а
acl evening time 17:00-23:59 описывает время до полуночи. Если необходимо описать всю ночь, то приходится
заводить два ACL- первый с вечера до полуночи, а второй с полуночи до утра.
Мои ACL в SAMS
Типичные ACL самса имеют вид
|
если пытаться что то ваять используя их, то будет большая вероятность что при следующем реконфиге самса вы свои строки больше не увидите, да и читать их не удобно, потому напишем свои и о чудо Самс их не тронет.
|
Интересно что в нашу acl sams_Buhi будет входить несколько списков (шаблонов) самса.
(Не забывайте создавать свои, анологичные ACL, по мере создания новых шаблонов в админке со списком IP, в самс. Также учитывайте в своих правилах, когда какой то IP вы перенесли в вэб админке в другой список.)
Запрещаем закачку файлов больше определенного размера
Запретим каждой группе превышать свой размер скачиваемого файла, себе ставим побольше :), а остальным кто не в группе (например вновь прибывшим) режем по максимуму. Можно вместо deny писать allow, но результат у меня получался не такой как мне хотелось.
|
Размер указывается в байтах. В реальности будет резать с небольшой погрешностью из-за служебной информации файла или еще чего-то там еще. Пишем внутрифирменную инструкцию, что все файлы большого размера качать запрещено. А если очень надо, то кидать ссылку на почту админу и приходить с пивом/кофем забирать. Админ качнет когда у него будет время :)
Можно делать исключения разрешив качать с определенных адресов, поместим в НАЧАЛЕ списка например:
|
Сперва разрешит качать большие файлы обновлений нода всем. Разрешит качать больше юзерам sams_Buhi с поддоменов .alkar.net (не забудте точку).
Пойдем дальше...
Запрещаем выгрузку(upload) файлов больше определенного размера
Данный пример показывает как это можно реализовать
|
Принцип работы основан на регулярках где [0-9]{6,} означает 6 цыфер от 0 до 9. Рекомендую сильно мало не ставить, иначе большой текст на на вэб формах (например, форумах) оно тоже будет тоже резать.
При желании можно блеснуть умом и придумать что то более заумное(жду ваших предложений).
В инете видел еще такое решение, оно мне не подошло.. для полного запрета выгрузки на html формах
|
Режем порты на примере борьбы с торентами.
Вышеперечисленные правила могут не сработать если юзер будет качать/раздавать из торентов. Дело в том, что
согласно этому протоколу, закачка будет мелкими кусочками по 16,32...4096 kb (смотря как задал размер то кто создавал торрент файл). Вот такая вот засада...Чешем репу и думаем что делать.... Активность торрента вычисляется в логах по коннектам к многочисленным хостам (как правило не имеющим статистического адреса) в широком диапазоне портов. Как вариант решения проблемы можно, глянув логи, бить такого юзера линейкой по голове...Глянем, что еще можно сделать...
Первое что приходит в голову порезать левые порты для такой категории юзеров:
|
Обратите внимание- строки надо ставить ПЕРЕД # TAG: http_access, иначе после реконфига, самс их поставит после своих строк и ничего не будет работать, так как предыдущие правила самса разрешат полный доступ по портам.
Более гуманный способ это порезать скорость на левых портах об этом расскажу ниже.
Есть еще такой вариант, может кому пригодится - резать для сети порты, только еще и запросы по методу CONNECT
|
Нарезаем скорость. Пример №1
Как известно в вэб интерфейсе Самса можно менять скорость.После реконфига самс уже за нас все прописует в squid.conf , попытаемся понять что там
|
Объясню как это работает.
В первую трубу 2 класса попадет некий перечень IP клиентов.
(acl _sams_4901c4f49225b src "/usr/local/etc/squid/4901c4f49225b.sams). Для всей группы скорость будет 100000 байт/с и 70000 байт/с для каждого в отдельности. Второе число после слеша задает размер буфера в который влазит файл(файлы), а первое число это и есть скорость ограничения. Можно указать "100000/100000 -1/-1", тогда будет без ограничения на клиента и скорость будет упираться в ограничение группы.
При одинаковых числах файлы приходят в буфер и уходят.
Во второй трубе группа имеет постоянное ограничение на 200100 байт/с, а у клиента при превышении размера файла 2300100 байт (2,1 мб) (который не влезет в буфер), скорость резко упадет до 15100 байт/с. Если после закачки большого файла дальше пойдут мелкие, то спустя некоторое время (по моим наблюдениям около 15-40 сек) скорость снова подымится и упрется в ограничение на группу. Как менять время восстановления скорости, я пока не нашел, жду ваших советов. 2,1 Мб в принципе хватает для просмотра без тормозов страниц с новостями, в которых много картинок. В примере параметры второй трубы указаны два раза, второй пример я дописал руками и наличие в конце решетки защищает его от удаления самсом, и как ни странно именно это значение применится в итоге.
Нарезаем скорость. Пример №2
Если хочется сделать что то более сложное, то придется все-таки отказаться от услуг самса (да и еще к сожалению строки delay_access с решеткой на конце сквид не понимает думая что там будет ACL). Делается это так, В вэб интерфейсе -Настройки Самс-"Включить ограничение скорости доступа пользователей (delaypool)" убрать галку. Можно не беспокоиться, если ее вернуть, то прежние числа скорости снова появятся. Скопируем правила самса и подрихтуем. Глянем, что я тут начудил:
|
|
Пользователи из трубы 1,2,3 будут на одинаковой скорости зимой и летом.
Для пользователей списка sams_menegeri и _sams_default обычный траф будет в трубах 4 и 5, а другой траф для них пойдет ночью в трубу 6, а траф по другим портам в трубу 7.
В принципе получилось довольно заумно, если можно сделать как-то попроще, то с радостью перепишу по-другому. Насколько упадет скорость сквида под очень большой нагрузкой не проверял,но у себя в конторе я разницы не заметил.
*****************************************
Забавно, что в этом примере, или если взять попроще пример (ниже),
если написать вместо труб 6 и 7 вот такую 6 трубу ,то траф к клиенту пойдет из двух труб-
-часть по портам 80,443 будет идти по трубе 4(5)
-часть по остальным портам или ночью по трубе 6
|
так что надо учесть, что суммарная скорость приходящего трафа будет больше.
Таким образом, можно сильно урезать работу торентов и прочего софта по левым портам. Не забываем, что есть еще acl по протоколу, так что вариантов много, как испортить юзерам сладкую жизнь, надеюсь эти примеры итак уже некисло это обеспечат... :))
Конец ...:)))
Ccылки на доп литературу:
http://forum.lissyara.su/viewtopic.php?f=3&t=20393 (для начинающих приблизительный пример конфига с русскими комментами)
http://linuxnews.ru/docs/squid.html (основы по ACL)
http://www.kernel-panic.it/openbsd/proxy/proxy3.html (ACL посложнее)
ppps.
Установка SqStat.
SqStat это скрипт на пыхе мониторинга того кто и на какой скорости качает через сквид в реальном времени.Официальный сайт. Скриншот.
При условии что у меня в squid.conf аутентификация ncsa и редиректор sams
|
Ставим
|
Рихтуем httpd.conf
|
config.inc.php
|
squid.conf
|
Если squid слушает на одном определенном ip, то можно вместо 127.0.0.1 его указать.
В пыхе не силен, допиливание:
-время в 12 часовом формате, но хочеться что было 24
/usr/local/share/sqstat/sqstat.class.php
|
-вместо Kбайт/с хочется Кбит/с
Поиск с заменой KB/s на Kb/s (в 4 местах) и умножить на 8 (в 3 местах):
|
_________________________________
столкнулся недавно с проблемой, что нарезка баннеров регулярками (Перенаправление запроса) резала нужный сайт(addons.mozilla.org), добавление в раздел Доступ разрешен не помогало.
Нашел в манах что можно делать исключения в регулярках вместо ^(ad.|k5ads.) написал
^((?!addons)ad.|k5ads.)
размещено: 2010-01-23,
последнее обновление: 2010-06-11,
автор: gonzo111
razor, 2010-01-25 в 9:13:32
могу посоветовать еще рассмотреть порты для риалтайм мониторинга происходящего.
открыл для себя недавно sqstat. много симпотней чем squidview
grey, 2010-01-28 в 10:10:00
интересно....попробую применить
gonzo111, 2010-01-28 в 11:01:27
фичи и баги-
Контролируем мгновенную загруженность канала SQUID
http://www.permlug.org/node/5369
Ошибка 2010 года в 1.0.4
http://sams.perm.ru/index.php?option=com_content&task=view&id=32&Itemid=1
baloon, 2010-02-04 в 13:43:16
Посоветуйте, как порезать скорость на одноклассников и др. соцсети, а остальное чтобы нормально работало?
По логике что-то в духе:
acl soc url_regex odnoklassniki
acl soc url_regex vkontakte
delay_pools 2
delay_class 1 2
delay_class 2 2
delay_parameters 1 1000/1000 700/100
delay_parameters 2 256000/256000 128000/128000
delay_access 1 allow soc
delay_access 1 deny
delay_access 2 allow !soc
delay_access 2 deny
gonzo111, 2010-02-05 в 11:03:24
Для вопросов есть форум!
vovan, 2010-02-18 в 17:07:33
ух! сам такими задачами заморачиваюсь периодически, а тут статья появилась, значит я не одинок, значит я не извращенец :)
Andr, 2010-03-26 в 7:53:51
>Нашел в манах что можно делать исключения в регулярках >вместо ^(ads.|ad.|adserver.|k5ads.) написал
>^(ads.|(?!addons)ad.|adserver.|k5ads.)
Вообще-то точка обозначает ЛЮБОЙ символ если слэшем не экранирована :)
Правильно вот так: ^(ads\.|ad\.|adserver\.|k5ads\.)
gonzo111, 2010-04-05 в 16:06:57
Andr дык мне и нужнен было любой символ, нафига мне просто точки в конце
azx987sa не буду из вредности, я специально и не указывал :)
сложность догадатся будет только у "студента"
Time, 2010-12-04 в 17:05:21
Почему не подписаны где лежат какие конфиги?
config.inc.php еле отрыл
mediamag, 2010-12-05 в 14:29:28
Существуют ли подобный мониторинг закачки с локальных хостов для ipfw ?
Федор, 2012-01-19 в 12:38:23
??????????????? ЛАЖА ?????????????????
acl auto_update dstdomain .eset.com
acl alkar_download dstdomain .alkar.net
reply_body_max_size 20000410000 deny eset.com
reply_body_max_size 20000410000 deny alkar_download sams_Buhi
Сперва разрешит качать большие файлы обновлений нода всем. Разрешит качать больше юзерам sams_Buhi с поддоменов .alkar.net (не забудте точку).
??????????????? ЛАЖА ?????????????????
Константин Брызгалов, 2014-02-28 в 17:37:36
в squid 3.3 изменилися вывод
peer теперь remote
me теперь local
Вследствие чего вылазит ошибка
undefined index: peer
Строки в файле /sqstat.class.php:
if(substr($v,0,5)=="peer:") $parsed["con"][$connection]["peer"]=substr($v,6);
if(substr($v,0,3)=="me:") $parsed["con"][$connection]["me"]=substr($v,4);
надо заменить на
if(substr($v,0,7)=="remote:") $parsed["con"][$connection]["peer"]=substr($v,6);
if(substr($v,0,6)=="local:") $parsed["con"][$connection]["me"]=substr($v,4);
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
Комментарии пользователей [12 шт.]