The OpenNET Project
 
Поиск (ключи):    ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
  WIKI НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

Квотирование трафика на SQUID с поддержкой русскоязычных имен пользователей (squid rus proxy acl auth freebsd)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: squid, rus, proxy, acl, auth, freebsd,  (найти похожие документы)
From: Ильин Дмитрий, Калуга <dm80@kaluga21vek.ru.> Newsgroups: email Date: Mon, 6 Dec 2007 14:31:37 +0000 (UTC) Subject: Квотирование трафика на SQUID с поддержкой русскоязычных имен пользователей Выкладываю свое решение по управлению интернет-трафиком, прошедшим через SQUID. Задача: - Подсчет трафика. - Суточное квотирование трафика по пользователю или по IP адресу. - Возможность изменения квот "на лету". - Поддержка русскоязычных имен пользователей (относится к пользователям домена NT). - Просмотр статистики и управление квотами через веб-интерфейс. Реализация: - ОС FreeBSD 6.1-RELEASE i386 - SQUID-2.5 - Apache-1.3 + PHP-5.1 + MySQL-5.1 Средства разработки: - perl-5.8.8 - P5::Mysql (/usr/ports/databases/p5-Mysql) - P5::DBI (/usr/ports/databases/p5-DBI) - PHP-5.1 Подробное описание решения находится в скрипте (вызов с ключом --help). Хотелось бы только отметить некоторые особенности, не описанные в справке: 1) Идея с записью данных сквида через FIFO канал в БД "на лету" была взята мною из squid2mysql. Соединение с БД происходит в момент веб-запроса, и если сервер БД недоступен, то скрипт пишет лог в резервный лог-файл, что повышает отказоустойчивость прокси сервера на случай недоступности БД. 2) Данные из резервного лог-файла периодически просматриваются скриптом и заносятся в БД, что предотвращает потерю данных при потере связи с БД. 3) Для авторизации пользователей в домене NT я использую SAMBA-3.0.26 + WINBIND, а точнее модуль ntlm_auth, который идет в комплекте с самбой. Это решает проблему русскоязычных имен пользователей, т к модуль проверяет членство пользователя в доменной группе, а не само имя пользователя. Пример squid.conf: auth_param ntlm program /usr/local/bin/ntlm_auth \ --require-membership-of=DOMAIN_GROUP_CHANGE_THIS --helper-protocol=squid-2.5-ntlmssp auth_param ntlm children 100 auth_param ntlm max_challenge_reuses 0 auth_param ntlm max_challenge_lifetime 20 minutes auth_param ntlm use_ntlm_negotiate on auth_param basic program /usr/local/bin/ntlm_auth --require-membership-of=DOMAIN_GROUP_CHANGE_THIS \ --helper-protocol=squid-2.5-basic auth_param basic children 100 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours auth_param basic casesensitive off authenticate_ttl 1 minutes вместо названия группы я использую GID (можно узнать с помощью wbinfo -n <group>) acl InternetUsers proxy_auth REQUIRED http_access allow InternetUsers 4) Если имя пользователя русскоязычное, в лог (а соответственно и в БД) оно попадает в url-кодировке, а при просмотре статистики или управлении квотой кодируется (декодируется) средствами PHP. В связи с этим я исключил возможность добавлять квоты вручную через веб-интерфейс. Они появляются автоматически при первом веб-запросе. 5) Алгоритм добавления пользователей/IP адресов в БД следующий: КЛИЕНТ - объект квотирования, если (ПОЛЬЗОВАТЕЛЬ АВТОРИЗОВАН) { КЛИЕНТ = имя пользователя } иначе { КЛИЕНТ = текущий IP адрес пользователя } АДРЕС = текущий IP адрес пользователя /* исключаем конфликт IP адресов и пользователей, при смешанном квотировании */ если (КЛИЕНТ = имя пользователя) { удаляем все записи, где КЛИЕНТ = АДРЕС } Скрипт скачать можно здесь: 1. http://sources.codenet.ru/file/1660/squidacc.tar.gz 2. http://www.opennet.ru/soft/squidacc.tar.gz Буду рад замечаниям и предложениям.

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.1, PbI6a, 15:27, 06/12/2007 [ответить] [смотреть все]
  • +/
    Как я понял по написаному для учёта по именам пользователей, а не по IP, клиенты должны использовать прокси не прозрачно?
     
     
  • 2.2, Dmitry, 16:58, 06/12/2007 [^] [ответить] [смотреть все] [показать ветку]
  • +/
    При прозрачном проксировании авторизаия пользователей неработает... весь текст скрыт [показать] [показать ветку]
     
  • 2.3, dm80, 17:54, 06/12/2007 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Само собой При прозрачном проксировании аутентификация пользователей не проходи... весь текст скрыт [показать] [показать ветку]
     
  • 2.7, ten, 06:52, 07/12/2007 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Что вам мешает использовать external_acl_type Можете фильтровать и по src и по d... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.8, PbI6a, 08:32, 07/12/2007 [^] [ответить] [смотреть все]  
  • +/
    Ни что не мешает, и, собственно говоря, это и использую Просто все не оставляет... весь текст скрыт [показать]
     
  • 1.4, sdm, 18:17, 06/12/2007 [ответить] [смотреть все]  
  • +/
    > назначение скрипта:
    > 1) запись лог-данных SQUID в БД MySQL ("на >лету", посредством pipe);

    имхо, из-за использования FIFO,
    это творение не стоит юзать при более-менее серьезной нагрузке, скорее всего возможны потери.

     
  • 1.5, Аноним, 23:23, 06/12/2007 [ответить] [смотреть все]  
  • +/
    очередной велосипед Сколько этих скриптов для подсчёта трафика в squid И с MyS... весь текст скрыт [показать]
     
     
  • 2.6, Дмитрий, 01:46, 07/12/2007 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    По поводу потерь при нагруженной системы, можно было бы привести к примеру цифры... весь текст скрыт [показать] [показать ветку]
     
  • 1.10, www.andr.ru, 09:33, 07/12/2007 [ответить] [смотреть все]  
  • +/
    IMHO для ограничения трафика лучше пропатчить сам сквид. он легко может на старте пропарсить свой лог, составить табличку с юзерами и трафиком и при каждом запросе юзера её апдейтить и контролировать трафик. Будет работать гораздо быстрее, особенно если заюзать Oracle Berkeley DB и табличку хранить в ОЗУ. Совсем не понимаю, почему разработчики не включили эту фичу в кальмара - она нужна буквально всем
     
     
  • 2.11, Dvar, 10:55, 07/12/2007 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    А есть ли возможность в squid аутентифицировать пользователей, если они в инете ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.14, coroner, 14:58, 07/12/2007 [^] [ответить] [смотреть все]  
  • +/
    сквид это http-proxy соотвесна делаем вывод, что radmin,rdp,pop3,imap,smtp,icq,... весь текст скрыт [показать]
     
     
  • 4.16, Dvar, 15:38, 07/12/2007 [^] [ответить] [смотреть все]  
  • +/
    а есть другие решения для этого ... весь текст скрыт [показать]
     
     
  • 5.17, coroner, 16:31, 07/12/2007 [^] [ответить] [смотреть все]  
  • +/
    Исходя из целей 1 Статистика посещений страниц-squid 2 Статистика по другим про... весь текст скрыт [показать]
     
  • 1.12, coroner, 14:38, 07/12/2007 [ответить] [смотреть все]  
  • +/
    Много развлекался с такими подсчетами Могу сказать что тоже не встретил ни одног... весь текст скрыт [показать]
     
  • 1.13, coroner, 14:56, 07/12/2007 [ответить] [смотреть все]  
  • +/
    да и еще после всяческих развлекух, пришел к выводу, что нужно делать связку fre... весь текст скрыт [показать]
     
  • 1.15, coroner, 15:22, 07/12/2007 [ответить] [смотреть все]  
  • +/
    ну и последнее по поводу fifo
    падает демон сбора-падает и сквид.
    да и потери будут.
     
     
  • 2.18, sprite, 13:30, 08/12/2007 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Еще как. У меня скрипт не успевал считывать и всё валилось. Единственное рабочее решение парсить лог. Поставил  syslog-ng, squid кидает лог в него, а syslog-ng squid-овские логи оформляет ежеминутно в новый файл YYYY/MM/DD/HH-MM.log далее через cron каждую минуту скрипт парсит лог сформированный в предыдущую минуту.
     
  • 2.22, dm80, 18:54, 14/12/2007 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    >ну и последнее по поводу fifo
    >падает демон сбора-падает и сквид.
    >да и потери будут.

    Речь идет о моей разработке? Смотри лог сквида, очень частая проблема - параметр
    redirect_children. Если количество пользователей превышает его значение, то сквид
    аварийно завершит работу. Это можно обойти, установив параметр redirector_bypass on
    (по умолчанию стоит off), но в этом случае если не будет хватать количества запущенных
    процессов редиректора, сквид просто пропустит клиента, а не остановится. Ну или, если позволяет ОЗУ, увеличить redirect_children до максимально возможноо количества клиентов :)
    PS: Если не так понял, и речь шла о другом, пардон :)

     
     
  • 3.23, coroner, 11:18, 17/12/2007 [^] [ответить] [смотреть все]  
  • +/
    не..я не про это
    я говорю про недостаток пропускания лога сквида через трубу...
    если коллектор, который читает этот pipe перестанет по каким-нить причинам читать, то соотвесно завалится и сам сквид..
    про пользователей в курсе и опытным путем выяснил что выставлять количество аутентификаторов нужно примерно в 4-5 раз больше, нежели пользователей присутствует в сети..ибо вот
     
  • 1.19, ntimmy, 14:17, 08/12/2007 [ответить] [смотреть все]  
  • +/
    Попробуйте SAMS  в паре с ipcad отлично работает.
    Сделал подобное с авторизацией в домене NT4 на самбе. На ней же и файловый сервер понял. переделки в sams минимальные. добавляется один пункт меню для просмотра внешнего не http трафа по ip. в базу Sams одну таблицу с привязкой ip доменное имя. от прозрачного проксирования пришлось отказаться.
    Просто прикрыл доступ наружу на 20-21, 80 порт все хостам кроме ip пркси.
     
     
  • 2.20, bytestore, 23:10, 09/12/2007 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    зачем все это делать через сквид? этоже cache engine %)
    для квотирования ну если нет циски то средствами фильтров
    в любом случае способа узнать пользователя на транспортном уровне нет :(
    нужно придумывать схему и тд, сквид тут не причем
    да и его способ вытаскивать пользователя не всегда работает
    это только экплорер и вроде мозила опера выдают от кого запущены
    а таже icq через проксю или например винамп уже не скажет кто его запустил
     
  • 1.21, Аноним, 09:51, 10/12/2007 [ответить] [смотреть все]  
  • +/
    все смотрим в сторону nufw после этова ищем агент под венду ... весь текст скрыт [показать]
     
     
  • 2.24, nnmn, 11:46, 28/12/2007 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    >все смотрим в сторону nufw после этова ищем агент под венду =)
    >

    угу, в том то и проблема что агент под винду платный :( впору брать самому их lib и писать :/ а так штука конечно прикольная

     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:



    АКЦИЯ! ПОДПИШИСЬ на журнал Linux Format до 31 января 2012 года и выиграй СУПЕРПРИЗ!

    Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке, посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.

    Каждый, кто оформит подписку, получает бонус- объёмные наклейки на системный блок и подарки: с одним из первых выпусков журнала в 2012 году- диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную версию журнала в pdf-формате.

    Подробнее о проведении акции вы можете прочитать на странице сайта.


      Закладки на сайте
      Проследить за страницей
    Created 1996-2012 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    RUNNet TopList