Можно ли как-то в настройках сквида прописать лимитированную расдачу инета. Например по 1,2,3 часа в день суммарно, независимо от обьема. Если да. то подскажите как сделать можно.
>Можно ли как-то в настройках сквида прописать лимитированную расдачу инета. Например по
>1,2,3 часа в день суммарно, независимо от обьема. Если да. то
>подскажите как сделать можно.
а как ты предлагаешь измерять эти часы? хотя бы теоретически?
если по времени скачивания файлов, то на хорошем канале обычный пользователь при обычном серфинге за день тратит всего несколько минут суммарно...
>>Можно ли как-то в настройках сквида прописать лимитированную расдачу инета. Например по
>>1,2,3 часа в день суммарно, независимо от обьема. Если да. то
>>подскажите как сделать можно.
>а как ты предлагаешь измерять эти часы? хотя бы теоретически?
>если по времени скачивания файлов, то на хорошем канале обычный пользователь при
>обычном серфинге за день тратит всего несколько минут суммарно...Я хочу что бы пользователю выдавалось какое-то фиксированное время работы в сети в сутки (2,3,4 часа). Независимо от объема. Как он будет тратить это время - его дело. На следующие сутки остаток времени не переходит.
>>>Можно ли как-то в настройках сквида прописать лимитированную расдачу инета. Например по
>>>1,2,3 часа в день суммарно, независимо от обьема. Если да. то
>>>подскажите как сделать можно.
>>а как ты предлагаешь измерять эти часы? хотя бы теоретически?
>>если по времени скачивания файлов, то на хорошем канале обычный пользователь при
>>обычном серфинге за день тратит всего несколько минут суммарно...
>
>Я хочу что бы пользователю выдавалось какое-то фиксированное время работы в сети
>в сутки (2,3,4 часа). Независимо от объема. Как он будет тратить
>это время - его дело. На следующие сутки остаток времени не
>переходит.так он же и не тратит часы!
он тратит секунды или минуты...опять же, что ты подразумеваешь под термином "время работы в сети"?
если клиент открыл за 2 секунды страничку в браузере, а потом два часа ее читает, то сколько он "работал в сети"?имхо, подход изначально неверен. если клиент в сети постоянно, то учитывается и ограничивается либо трафик, либо полоса пропускания...
>>>>Можно ли как-то в настройках сквида прописать лимитированную расдачу инета. Например по
>>>>1,2,3 часа в день суммарно, независимо от обьема. Если да. то
>>>>подскажите как сделать можно.
>>>а как ты предлагаешь измерять эти часы? хотя бы теоретически?
>>>если по времени скачивания файлов, то на хорошем канале обычный пользователь при
>>>обычном серфинге за день тратит всего несколько минут суммарно...
>>
>>Я хочу что бы пользователю выдавалось какое-то фиксированное время работы в сети
>>в сутки (2,3,4 часа). Независимо от объема. Как он будет тратить
>>это время - его дело. На следующие сутки остаток времени не
>>переходит.
>
>так он же и не тратит часы!
>он тратит секунды или минуты...Плевать. Скажем так, аська у него проработает как? Ровно столько, сколько будет дано на это времени.
>
>опять же, что ты подразумеваешь под термином "время работы в сети"?
>если клиент открыл за 2 секунды страничку в браузере, а потом два
>часа ее читает, то сколько он "работал в сети"?2 секунды. Все от того, что он все 2 секунды использовал сеть. Остальное хранилось у него на компе. Поэтому суммарное время подключений не зависимо от объема - не должно превышать определенного лимита, 2-3-4 часа.
>
>имхо, подход изначально неверен. если клиент в сети постоянно, то учитывается и
>ограничивается либо трафик, либо полоса пропускания...Расскажи руководству моему:)
Вообщем идея какая, как считать время подключений в сквиде, и при превышении лимита - отключать от Сети. В какую сторону смотреть? Не подскажите?
>>так он же и не тратит часы!
>>он тратит секунды или минуты...
>
>Плевать. Скажем так, аська у него проработает как? Ровно столько, сколько будет
>дано на это времени.
имхо, бред полнейший...
я могу за полчаса выкачать здоровенный файл порнухи в Гиг весом, который для моей фирмы будет стоить $60, или буду 6 часов в день сидеть в аське и съесть за все это время 100 Кбайт трафика, который будет стоить 18 копеек. и предлагается первое разрешать, а второе запрещать???????>2 секунды. Все от того, что он все 2 секунды использовал сеть.
>Остальное хранилось у него на компе. Поэтому суммарное время подключений не
>зависимо от объема - не должно превышать определенного лимита, 2-3-4 часа.
при довольно активном серфинге за целый рабочий день я занимаю 10-20 минут работы канала , так что говорить у часах в большинстве случаев бессмысленно, так как пользователи далеко не каждый день скачивают что-то крупное...
если борьба с аськой - не лучше ли ее просто перекрыть?
иначе пользователи будут каждый десть минут подконнекчиваться и отконнекчиваться :)
>>имхо, подход изначально неверен. если клиент в сети постоянно, то учитывается и
>>ограничивается либо трафик, либо полоса пропускания...
>
>Расскажи руководству моему:)
нет, рассказывать предстоит тебе, иначе тебе воплощать в жизнь этот бред :)>Вообщем идея какая, как считать время подключений в сквиде, и при превышении
>лимита - отключать от Сети. В какую сторону смотреть? Не подскажите?
в логах сквид пишет время, потраченное, на запрос, но надо смотреть в доке что это за время.
как вариант это может быть полное время на обработку запроса, либо время на прием/передачу данных по этому запросу...есть системы (в том числе и у меня), которые ограничивают пользователю по объему трафика. можно их взять за основу и сделать свою...
>Расскажи руководству моему:)
в мягкой форме говоришь, что технически это нереализуемо(или нет софта, а писать придется год-два), если надешь что-то платное - напиши цену. и предложе свой альтернативный "нормальный" вариант.
что бы ни у кого не было головной боли
>>Расскажи руководству моему:)
>в мягкой форме говоришь, что технически это нереализуемо(или нет софта, а писать
>придется год-два), если надешь что-то платное - напиши цену. и предложе
>свой альтернативный "нормальный" вариант.
>что бы ни у кого не было головной болиПонимаешь ли, сейчас не то время что бы грить руководстку о долгосрочном писании некоего софта. Оно готово ввалить денег в то что скажет кто-то из нашего отдела один раз. Просто идея в том, что кто-то хочет принципиально строить политику на покупных решениях от сторонних производителей на платформе win32/64. А я ищю поиск решений на более надежной плаформе, на системах открытого кода, и так как понимаю что это в наще время более надежная систнема!
Сквид является самым продвинутым в вопросе доступа к инету по 3128, поэтому вопрос по этомй теме.зы! Я уже пьян :)
попробуй так:
через крон открывай для этой ИП порты на файрволе
(и так же закрывай) - помоему самое простое решение. :))
((пусть раздача по времени = бред, ну раз чел так хочет...))
>попробуй так:
>через крон открывай для этой ИП порты на файрволе
>(и так же закрывай) - помоему самое простое решение. :))
>((пусть раздача по времени = бред, ну раз чел так хочет...))
и что это даст?
надо же не по расписанию давать доступ, а по суммарному наработанному за день времени... а узнать его очень приблизительно можно либо измеряя и суммирую длительность tcp-коннектов на порт прокси, либо по логам сквида... оба эти способа довольно грубы, но другого я не вижу...
>Просто идея в том, что
>кто-то хочет принципиально строить политику на покупных решениях от сторонних производителей
>на платформе win32/64.
Сильно сомневаюсь, что на этой платформе найдется то, что от тебя хотят...
ставишь с 9 до 11 и все
Не напомните адресок где описывается лог сквида?
не анализаторы лога и именно описание лога?
>Не напомните адресок где описывается лог сквида?
>не анализаторы лога и именно описание лога?
ссылки классические:
http://www.squid-cache.org/Doc/FAQ/FAQ-6.html
http://www.bog.pp.ru/work/squid.html#stat
>Понимаешь ли, сейчас не то время что бы грить руководстку о долгосрочном
>писании некоего софта. Оно готово ввалить денег в то что скажет
>кто-то из нашего отдела один раз. Просто идея в том, что
>кто-то хочет принципиально строить политику на покупных решениях от сторонних производителей
>на платформе win32/64. А я ищю поиск решений на более надежной
>плаформе, на системах открытого кода, и так как понимаю что это
>в наще время более надежная систнема!
а что же злопыхатели предлагают под win такого?
мне кажется что под винду ничего такого нет. просто купят какой-то proxy-софт, а потом скажут "вы нас не правильно поняли".
но деньги уже будут потрачены...
p.s. сдается мне что это тупое заколачивание денег.
>p.s. сдается мне что это тупое заколачивание денег.
не удивлюсь, если не совсем тупое, а с откатами...
можно считать что юзер пользуеться инетом, если он переодически открывает страницы (тобишь с неким таймаутом).По идее можно анализировать лог так:
1. Инитим переменные для юзера:
время_в_сети=0 - Сколько пользоватль лазил в сети.
online=0 - юзверь сейчас не в сети.
while()
{
Если (юзверь зашел на страницу через сквид)
{
если (!online) {online=1; last_visit=сейчас; break;}время_в_сети-=сейчас-last_visit;
last_visit=сейчас;если (время_в_сети>3*60) {redirect("Ваше время истекло"); break;}
}Если (сейчас - last_visit >timeout) {online=0;}
}
--
Slava
http://www.rejik.ru>>>>Можно ли как-то в настройках сквида прописать лимитированную расдачу инета. Например по
>>>>1,2,3 часа в день суммарно, независимо от обьема. Если да. то
>>>>подскажите как сделать можно.
>>>а как ты предлагаешь измерять эти часы? хотя бы теоретически?
>>>если по времени скачивания файлов, то на хорошем канале обычный пользователь при
>>>обычном серфинге за день тратит всего несколько минут суммарно...
>>
>>Я хочу что бы пользователю выдавалось какое-то фиксированное время работы в сети
>>в сутки (2,3,4 часа). Независимо от объема. Как он будет тратить
>>это время - его дело. На следующие сутки остаток времени не
>>переходит.
>
>так он же и не тратит часы!
>он тратит секунды или минуты...
>
>опять же, что ты подразумеваешь под термином "время работы в сети"?
>если клиент открыл за 2 секунды страничку в браузере, а потом два
>часа ее читает, то сколько он "работал в сети"?
>
>имхо, подход изначально неверен. если клиент в сети постоянно, то учитывается и
>ограничивается либо трафик, либо полоса пропускания...
>можно считать что юзер пользуеться инетом, если он переодически открывает страницы (тобишь
>с неким таймаутом).
>
>По идее можно анализировать лог так:
>
>1. Инитим переменные для юзера:
> время_в_сети=0 - Сколько пользоватль лазил в сети.
> online=0 - юзверь сейчас не в сети.
>
>while()
>{
> Если (юзверь зашел на страницу через сквид)
> {
> если (!online) {online=1; last_visit=сейчас; break;}
>
> время_в_сети-=сейчас-last_visit;
> last_visit=сейчас;
>
> если (время_в_сети>3*60) {redirect("Ваше время истекло"); break;}
> }
>
> Если (сейчас - last_visit >timeout) {online=0;}
>
>}
>
>--
>Slava
>http://www.rejik.ruКак я понимаю, речь идет о редиректоре сквида?
Такой способ тоже не выход - он не защитит от долгих одиночных коннектов, например, я могу запустить закачку одновременно 10 файлов по Гигу каждый общей длительностью не на полчаса, а на 12 часов... Т.е. мне будет дозволено забить канал на весь день и потратить большую кучу денег на трафик...
Нет, не обязательно редиректор, хотя можно и через него извратиться.
А с длинными закачками проблема извечная, единственно что могу предложить, так это килять активные закачки длящиеся больше некоторого таймаута.--
Slava
http://www.rejik.ru>Как я понимаю, речь идет о редиректоре сквида?
>Такой способ тоже не выход - он не защитит от долгих одиночных
>коннектов, например, я могу запустить закачку одновременно 10 файлов по Гигу
>каждый общей длительностью не на полчаса, а на 12 часов... Т.е.
>мне будет дозволено забить канал на весь день и потратить большую
>кучу денег на трафик...
>Нет, не обязательно редиректор, хотя можно и через него извратиться.
тогда куда девать предложенный кусок кода?>А с длинными закачками проблема извечная, единственно что могу предложить, так это
>килять активные закачки длящиеся больше некоторого таймаута.
а если закачка совершенно законная?
и ведь бывает, что закачка не может быть возобновлена, например в случае одноразовых url-ов (таковые встречаются не так уж редко)могу предложить еще три варианта, которые так же не лишены кривости:
1) периодически (раз в 1-10 секунд) мониторить netstat -n -t|grep '192.168.0.254:3128'|grep established на предмет имеющихся соединений и соответственно наращивать счетчики по каждому ip-адресу.
2) настроить шейпер для клиентов, и принять, что занятая полоса для каждого из клиентов равна максимальной полосе. написать правила iptables для каждого клиентского ip-адреса и периодически снимать с них показания. делением трафика на скорость получаем время. при первышени порога правило iptables меняется с accept на reject.
3) написать свой модуль для iptables, мониторящий соединения и суммирующий их длительность.потенциально третий способ наиболее точный, но он же и наиболее трудновыполнимый...
>>Нет, не обязательно редиректор, хотя можно и через него извратиться.
>тогда куда девать предложенный кусок кода?
>
>>А с длинными закачками проблема извечная, единственно что могу предложить, так это
>>килять активные закачки длящиеся больше некоторого таймаута.
>а если закачка совершенно законная?
>и ведь бывает, что закачка не может быть возобновлена, например в случае
>одноразовых url-ов (таковые встречаются не так уж редко)
>
>могу предложить еще три варианта, которые так же не лишены кривости:
>1) периодически (раз в 1-10 секунд) мониторить netstat -n -t|grep '192.168.0.254:3128'|grep established
>на предмет имеющихся соединений и соответственно наращивать счетчики по каждому ip-адресу.
>
>2) настроить шейпер для клиентов, и принять, что занятая полоса для каждого
>из клиентов равна максимальной полосе. написать правила iptables для каждого клиентского
>ip-адреса и периодически снимать с них показания. делением трафика на скорость
>получаем время. при первышени порога правило iptables меняется с accept на
>reject.
>3) написать свой модуль для iptables, мониторящий соединения и суммирующий их длительность.
>
>
>потенциально третий способ наиболее точный, но он же и наиболее трудновыполнимый...Я как то трусил iptables раз в минуту. Правил там у меня много, вообщем получилось что машинка хорошо пригибалась LA был где то в районе 2.
Всетаки интересно как это наваять средствами сквиды. поидее наверное как-то можно по snmp снимать со сквиды данные и отталкиваясь от них - лупить на фаервол или в acl сквида.
>Я как то трусил iptables раз в минуту. Правил там у меня
>много, вообщем получилось что машинка хорошо пригибалась LA был где то
>в районе 2.
хм, не улавливаю... что такое LA?
кстати, счетчики можно снимать не вызовом команды iptables, а через API, так побыстрее будет...>Всетаки интересно как это наваять средствами сквиды. поидее наверное как-то можно по
>snmp снимать со сквиды данные и отталкиваясь от них - лупить
>на фаервол или в acl сквида.
т.е. периодически дергать сквид на предмет текущих соединений? уж тогда лучше nestat дергать...
>>Я как то трусил iptables раз в минуту. Правил там у меня
>>много, вообщем получилось что машинка хорошо пригибалась LA был где то
>>в районе 2.
>хм, не улавливаю... что такое LA?Load Average
>кстати, счетчики можно снимать не вызовом команды iptables, а через API, так
>побыстрее будет...Вот это не знаю. Наверное было бы, но просто не хочется как то связываться с нагромождением разных приблуд. Хочется сделать все на проксе, что бы она занималсь этим всем.
>
>>Всетаки интересно как это наваять средствами сквиды. поидее наверное как-то можно по
>>snmp снимать со сквиды данные и отталкиваясь от них - лупить
>>на фаервол или в acl сквида.
>т.е. периодически дергать сквид на предмет текущих соединений? уж тогда лучше nestat
>дергать...надо думать. Неужели там нет таких вещей?
>>Нет, не обязательно редиректор, хотя можно и через него извратиться.
>тогда куда девать предложенный кусок кода?
Например в трубу лога закачек сквиды.Хотя у редиректора свои плюсы, он получает запрос до начала закачки и может ограничивать кому можно качать.
>а если закачка совершенно законная?
>и ведь бывает, что закачка не может быть возобновлена, например в случае
>одноразовых url-ов (таковые встречаются не так уж редко)
Честно говоря ни разу не встречал...>могу предложить еще три варианта, которые так же не лишены кривости:
>1) периодически (раз в 1-10 секунд) мониторить netstat -n -t|grep '192.168.0.254:3128'|grep established
>на предмет имеющихся соединений и соответственно наращивать счетчики по каждому ip-адресу.
тогда лучше netstat -n -t -o
Но здесь есть вероятность посчитать одну и туже закачку два раза. Один через греп, другой через лог закачек.
>2) настроить шейпер для клиентов, и принять, что занятая полоса для каждого
>из клиентов равна максимальной полосе. написать правила iptables для каждого клиентского
>ip-адреса и периодически снимать с них показания. делением трафика на скорость получаем время. при первышени порога правило iptables меняется с accept на reject.
Тут будет неточным деление трафика на скорость, поскольку качаться все одно будет с разной скоростью. С разных сайтов качает по разному.кроме того надо учесть, что пользователь может взять дцать мегов из кеша сквиды и время посчитается неправильно.
>3) написать свой модуль для iptables, мониторящий соединения и суммирующий их длительность.
>потенциально третий способ наиболее точный, но он же и наиболее трудновыполнимый...Логично, так же можно написать модуль для сквиды или свою мини-проксю, прослойку между пользователем и сквидой, да сложно это.
>>а если закачка совершенно законная?
>>и ведь бывает, что закачка не может быть возобновлена, например в случае
>>одноразовых url-ов (таковые встречаются не так уж редко)
>Честно говоря ни разу не встречал...
например, скачиваний приаттаченых файлов через web-интерфейс бесплатных почтовиков... или, буквально сегодня попалось, сайт техподдержки ibm-овских и hiatchi-вских винтов...>>могу предложить еще три варианта, которые так же не лишены кривости:
>>1) периодически (раз в 1-10 секунд) мониторить netstat -n -t|grep '192.168.0.254:3128'|grep established
>>на предмет имеющихся соединений и соответственно наращивать счетчики по каждому ip-адресу.
>тогда лучше netstat -n -t -o
а смысл? таймеры у established соединений все равно нулевые...>Но здесь есть вероятность посчитать одну и туже закачку два раза. Один
>через греп, другой через лог закачек.
в смысле? через какой лог?>>2) настроить шейпер для клиентов, и принять, что занятая полоса для каждого
>>из клиентов равна максимальной полосе. написать правила iptables для каждого клиентского
>>ip-адреса и периодически снимать с них показания. делением трафика на скорость получаем время. при первышени порога правило iptables меняется с accept на reject.
>Тут будет неточным деление трафика на скорость, поскольку качаться все одно будет
>с разной скоростью. С разных сайтов качает по разному.
поэтому и говорю о шейпере, чтобы ограничит скорость соединений и сделать их грубо равными по скорости...>кроме того надо учесть, что пользователь может взять дцать мегов из кеша
>сквиды и время посчитается неправильно.
насчет кэша в исходных условиях не было...
и почему посчитается неправильно? шейпер отработает и отдаст на наужной скорсти эти дцать мегов -> получим нужное время.
но то, что способ очень грубый - согласен.>>3) написать свой модуль для iptables, мониторящий соединения и суммирующий их длительность.
>>потенциально третий способ наиболее точный, но он же и наиболее трудновыполнимый...
>
>Логично, так же можно написать модуль для сквиды или свою мини-проксю, прослойку
>между пользователем и сквидой, да сложно это.короче, извращенных вариантов напридумать можно...
имхо, извращенным они будут всегда, так как поставлена совершенно дурацкая задача!
самое лучшее - вообще отказаться от такой задачи, объяснив шефу ее неправильность и предложив более разумные способы ограничения аппетитов пользователей.
Тут в голову пришла мысля, собственно что мешает в предложенный мной вариант кода вставить проверку на наличие активных закачек для этого юзверя?В случае если таймаут истек и в сквид не было обращений, перед тем как решить, что юзверь в офлайне проверить, не качает ли он что-либо.
Только думаю для скорости проверять лучше не нетстатом, а как в менеджере, что в дистрибутиве сквиды идет. Он ведь показывает активные закачки?
Плюс убивать активные закачки через то-те манагер, когда время пользователя истечет.--
slava
http://www.rejik.ru
Вопрос к Славе
Как смотреть активные закачки я знаю
cache_object://localhost/active_requests -
меню Client-side Active Requestsа вот как можно прибивать активные закачки через cachemgr.cgi или напрямую обращаясь к объекту cache Squid-a ?
Честно говоря не помню.
Если сложности с убиванием через менеджер, то наверное можно добавлять правило в iptables для остановки текущих закачек конкретного юзверя.>Вопрос к Славе
>Как смотреть активные закачки я знаю
>cache_object://localhost/active_requests -
>меню Client-side Active Requests
>
>а вот как можно прибивать активные закачки через cachemgr.cgi или напрямую обращаясь
>к объекту cache Squid-a ?
>Можно ли как-то в настройках сквида прописать лимитированную расдачу инета. Например по
>1,2,3 часа в день суммарно, независимо от обьема. Если да. то
>подскажите как сделать можно.
Может быть проще раздавать inet по vpn?
>Можно ли как-то в настройках сквида прописать лимитированную расдачу инета. Например по
>1,2,3 часа в день суммарно, независимо от обьема. Если да. то
>подскажите как сделать можно.посмотри
http://www.opennet.me/prog/info/1795.shtml
http://sacc.westural.ru/
>>Можно ли как-то в настройках сквида прописать лимитированную расдачу инета. Например по
>>1,2,3 часа в день суммарно, независимо от обьема. Если да. то
>>подскажите как сделать можно.
>
>посмотри
>
>http://www.opennet.me/prog/info/1795.shtml
>http://sacc.westural.ru/это все не то :(
Хотя достойно внимания.
Посмотри http://www.netams.com, там есть решение подобное тому что ты хочешь. Именно ограничение по суммарному времени, однако к squid оно отношения не имеет.