26.11.2009

Лимитирование трафика средствами Squid. Часть I

Каждый сисадмин рано или поздно должен написать свою систему учёта трафика.
Дошёл до этой стадии и я. Причина проста — нужную мне функциональность не обеспечивает ни одно имеющееся решение, кроме SAMS, а SAMS мне не нравится.

Итак, вводная или как я дошёл до жизни такой.

Интернет в организации в которой я работаю доступен только и исключительно через прокси-сервер вышестоящей организации. Зарезан даже DNS. На всю организацию выдаётся довольно небольшой лимит трафика, соответственно, о бесконтрольной раздаче его пользователям и речи не идёт.

Вторым немаловажным фактором является то, что довольно большая часть трафика приходится на т.н. «внутренние» ресурсы (находящиеся во внутренней сети провайдера). Эти ресурсы не ограничены по объёму и учитываться не должны.

Третье требование — обязательная авторизация. Никакого учёта «по IP». Поскольку IP адреса раздаются посредством DHCP и переходить на статику я не вижу ни малейшего смысла.

Первоначально я собирался остановиться на 3proxy, который позволяет как авторизовывать пользователей, так и выставлять каждому пользователю лимиты, а на сладкое — прописывать сети, которые учитывать не надо. Казалось бы — вот он, идеал.
Увы, всё оказалось не так просто. В случае отсутствия DNS работает всё, кроме исключения из учёта «внутренних» сетей, т.к. URL на самом 3proxy не резолвятся.

Итак, передо мной в полный рост встала задача из разряда «берём Squid, напильник и делаем шедевр». Ознакомившись с опытом предшественников, я был сильно удивлён тем, что для анализа трафика использовались в основном два метода:
1. загоняем access.log через пайп в самописный скрипт и анализируем
2. запускаем по крону самописный скрипт и анализируем access.log

Недостатки очевидны. Трафик учитывается постфактум, т.е. если у пользователя стоит лимит в 10Mb, а он поставил на закачку образ DVD, то свои 4,7Gb он скачает и только потом будет отключен.

С учётом того, что Squid вполне поддерживает SNMP, а значит можно в любой момент получить живую статистику по любому IP, довольно странно, что никто им не пользуется.
Для любопытных — Squid MIB.

На этом я пока прервусь, продолжение следует…

7 прокомментировало:

  1. С нетерпением буду ждать продолжения, ибо тема для меня очень актуальна. На работе тоже стоит сквид, для раздачи инета.

    ОтветитьУдалить
  2. Я тоже очень жду продолжение. 6 проксиков под упралением САМСА. А он мне не нравится.
    Может быть во второй версии будет лучше.

    ОтветитьУдалить
  3. Анонимный27 Ноябрь, 2009 03:36

    Ну кроме САМСа есть еще traffpro?
    Его не пробовали? сделан на основе сквида

    ОтветитьУдалить
  4. Недостатки очевидны. Трафик учитывается постфактум, т.е. если у пользователя стоит лимит в 10Mb, а он поставил на закачку образ DVD, то свои 4,7Gb он скачает и только потом будет отключен.

    Чет не понятно проблема решилась или нет?

    ОтветитьУдалить
  5. И что будет с пользователями работающими на всяких цитриксах? Они все от одного ip идут.

    ОтветитьУдалить
  6. Да и на винде его нужно пересобирать в некоторых случаях...

    ОтветитьУдалить
  7. а можно как нить приспособить его к учету трафика, который роутером раздается на все компы сети?

    ОтветитьУдалить