Инсталиране и конфигуриране на mod_cband Написана от Мартин Петров- amri[at]dhstudio.eu Благодарности на: www.dhstudio.eu В тази статия ще опишем как се инсталира и конфигурира mod_cband на Apache 2. mod_cband е модул за Apache 2 които предоставя възможност за определяне скоростта на виртуален хост(подобно на mod_bandwidth) , определяне брой заявки за секунда, броя на осъществените връзки (подобно на mod_limitipconn), ограничаване на трафика (подобно на mod_curb) и др. mod_cband се разработва от Lukasz Dembinski, Sergey V. Beduev, Kyle Poulter, J. Kendzorra и Adam Dawidowski. Модула се разпространява под GNU GPL лиценз. mod_cband намира най- често приложение в хостинг компании които ограничават трафика на техните потребители (пример: 5 GB за 1 месец.) . 1. Инсталиране на mod_cband под Дебиан 4.0 (Etch) 1.1 apt-get install libapache2-mod-cband 1.2 Излиза Ви прозорец в които трябва да изберете дали ще заредите mod_cband.Вие избирате „yes“ т.е. ще се зареди при рестартиране на Apache 2.Директиви на mod_cband Позволени единици при различните директиви: Трафик kbps, Mbps, Gbps - Измерват се в "Бит за секунда", респективно: 1024, 1024*1024 и 1024*1024*1024 бита за секунда kb/s, Mb/s, Gb/s - Измерват се в "Байт за секунда", респективно: 1024, 1024*1024 and 1024*1024*1024 байта за секунда По подразбиране kbps Скорост K, M, G - Измерват се в Байт, респективно: 1000, 1000*1000 and 1000*1000*1000 байта. Ki, Mi, Gi - Измерват се в Байт, респективно: 11024, 1024*1024 and 1024*1024*1024 байта. По подразбиране К Период S, M, H, D, W – Измерват се в секунди: Секунди, Минути, Часове, Дни, Седмици; респективно: 1, 60, 3600, 86400, 604800 секунди По подразбиране S Име: CBandDefaultExceededURL Описание: URL под подразбиране къде mod_cband ще пренасочва всички заявки до виртуалния хост или потребител когато конфигурирания трансфер е надвишен. Контекст: Server config Синтаксис: CBandDefaultExceededURL URL Пример: CbandDefaultExceededURL www.dhstudio.eu/exceeded.html Име: CbandDefaultExceededCode Описание: HTTP код които се изпраща до посетителя когато конфигурирания трафик е надвишен Контекст: Server config Синтаксис:CBandDefaultExceededCode HTTP_CODE Пример: CBandDefaultExceededCode 509 Име: CBandScoreFlushPeriod Описание: Определя периода след които данните за статистиката ще се записват. Може да се използва за подобряване бързодействието на mod_cband Подразбиране: 1 Контекст: Server config Синтаксис: CBandScoreFlushPeriod номер_на_заявки Пример: CBandScoreFlushPeriod 100 Данните за статистиката ще се записват след 100 заявки Име: CBandSpeed Описание: Определя максималната скрост за виртуалния хост Контекст: Синтаксис: CBandSpeed kbps rps max_conn kbps- максимална скорост за трансфер в [kMG]bps или [kMG]B/s rps- Максимален брой заявки за секунда max_conn- Максимален брой на едновременните връзки Пример: CBandSpeed 1024 10 30 Определя максимална скорост 1024kbps, максимално 10 заявки за секунда и максимално 30 едновременно осъществени връзки. Бележка: Тази характеристика е възможна от версия 0.9.6.0 Име: CBandRemoteSpeed Описание: Определя максималната скрост за други отдалечени клиенти Контекст: Синтаксис: CBandRemoteSpeed kbps rps max_conn kbps- максимална скорост за трансфер в [kMG]bps или [kMG]B/s rps- Максимален брой заявки за секунда max_conn- Максимален брой на едновременните връзки Пример: CBandRemoteSpeed 20kb/s 3 3 Определя максимална скорост 20kB/s, максимално 3 заявки за секунда и максимално 3 едновременно осъществени връзки от друг отдалечен клиент. Бележка: Тази характеристика е възможна от версия 0.9.6.1-rc2 Име: CBandClassRemoteSpeed Описание: Определя максималната скорост за други отдалечени клиенти от един клас. Контекст: Синтаксис: CBandClassRemoteSpeed class_name kbps rps class_name- име на дефинирания клас kbps- максимална скорост за трансфер в kbps или kB/s rps- Максимален брой заявки за секунда max_conn- Максимален брой на едновременните връзки Пример: CBandClassDst 66.249.64/24 CBandClassDst 66.249.65/24 CBandClassDst 66.249.79/24 CBandClassRemoteSpeed googlebot_class 20kb/s 2 3 Определя максимална скорост 20kB/s, максимално 2 заявки за секунда и максимално 3 едновременно осъществени връзки от друг отдалечен клиент клас googlebot_class. Бележка: Тази характеристика е възможна от версия 0.9.6.1-rc2 Име: CBandRandomPulse Описание: Спира или стартира произволния пулс генератор за изпращаната информяция. Случайния пулс генератор е част от осъществяването на ограничаване по скорост в mod_cband. Контекст: Global Синтаксис: CBandRandomPulse On/Off Име: CBandLimit Описание: Определя трафик за виртуален хост Контекст: Синтаксис: CBandLimit limit limit- Размер на позволения трафик, възможни единици: K (kilo), M (mega), G (giga), Ki (kibi), Mi (mebi), Gi (gibi) Пример: CBandLimit 10M Определя трафик от 10 * 1000 * 1000 bytes CBandLimit 10Mi Определя трафик от 10 * 1024 * 1024 bytes Бележка: Значението на К,М и G е променено с версия 0.9.6.0. Проверете вашия конфигурационен файл. Име: CBandClassLimit Описание: Определя трафик за виртуален хост чрез клас Контекст: Синтаксис: CBandClassLimit class_name limit class_name- име на дефиниран клас limit- Размер на позволения трафик, възможни единици: K (kilo), M (mega), G (giga), Ki (kibi), Mi (mebi), Gi (gibi) Бележка: Значението на К,М и G е променено с версия 0.9.6.0. Проверете вашия конфигурационен файл. Име: CBandExceededURL Описание: URL където mod_cband ще пренасочва всички заявки до виртуалния хост или потребител когато конфигурирания трансфер е надвишен. Ако не определите URL тогава ще бъде изпратен http код 503 (Service Unavailable) Контекст: Синтаксис: CBandExceededURL URL Пример: CbandDefaultExceededURL www.dhstudio.eu/exceeded.html Име: CBandExceededSpeed Описание: Определя максималната скорост на виртуалния хост когато конфигурирания трафик е надвишен. Контекст: Синтаксис: CBandExceededSpeed kbps rps max_conn kbps- максимална скорост за трансфер в kbps или kB/s rps- Максимален брой заявки за секунда max_conn- Максимален брой на едновременните връзки Бележка: Тази характеристика е възможна от версия 0.9.6.0 Име: CBandScoreboard Описание: Определя файл за записване на статистика Контекст: Синтаксис: CBandScoreboard path Бележка: Този файл трябва да има възможност за промяна от потребител apache Име: CBandPeriod Описание: Определя период след които да бъде изчистен файл със статистики за виртуалния хост. Контекст: Синтаксис: CBandPeriod period period – възможни единици: S (seconds), M (minutes), H (hours), D (days), W (weeks) Пример: CBandPeriod 1W CBandPeriod 14D CBandPeriod 60M Име: CBandPeriodSlice Описание: Определя период на разделяне Подразбиране: slice_len = limit Контекст: slice_len = limit Синтаксис: CBandPeriodSlice slice_length Пример: CBandLimit 100G CBandPeriod 4W CBandPeriodSlice 1W Периода ще бъде разделен на 4 малки парчета(4W/1W=4).Всяко парче има 100G/4=25G трафик.След една седмица ограничението ще бъде 50G, след две седмици 75W и т.н. Име: Описание: Дефинира нов cband потребител Контекст: Server config Синтаксис: Име: CBandUserSpeed Описание: Определя максимална скорост за cband потребител Контекст: Синтаксис: CBandUserSpeed kbps rps max_conn kbps- максимална скорост за трансфер в kbps или kB/s rps- Максимален брой заявки за секунда max_conn- Максимален брой на едновременните връзки Пример: CBandUserSpeed 100kb/s 10 5 Определя максимална скорост 100kB/s, максимално 10 заявки за секунда и максимално 5 едновременно осъществени връзки. Бележка: Тази характеристика е възможна от версия 0.9.6.0 Име: CBandUserLimit Описание: Определя максимален трафик за cband потребител Контекст: Синтаксис: CBandUserLimit limit limit- Размер на позволения трафик, възможни единици: K (kilo), M (mega), G (giga), Ki (kibi), Mi (mebi), Gi (gibi) Пример: CBandUserLimit 10M Определя 10 * 1000 * 1000 bytes трафик CBandUserLimit 10Mi Определя 10 * 1024 * 1024 bytes трафик Бележка: Значението на К,М и G е променено с версия 0.9.6.0. Проверете вашия конфигурационен файл. Име: CBandUserClassLimit Описание: Определя трафик за cband потребители чрез клас Контекст: Синтаксис: CBandUserClassLimit class_name limit class_name- име на дефиниран клас limit- Размер на позволения трафик, възможни единици: K (kilo), M (mega), G (giga), Ki (kibi), Mi (mebi), Gi (gibi) Бележка: Значението на К,М и G е променено с версия 0.9.6.0. Проверете вашия конфигурационен файл. Име: CBandUserExceededURL Описание: Определя URL където mod_cband ще пренасочва всички заявки до потребителски виртуални хостове които са с надвишен трафик. Ако не определите URL тогава ще бъде изпратен http код 503 (Service Unavailable) Контекст: Синтаксис: CBandUserExceededURL URL Име: CBandUserExceededSpeed Описание: Определя максималната скорост на виртуалния хост когато конфигурирания трафик е надвишен. При използване на тази директива не трябва да използвате CBandUserExceededURL. Контекст: Синтаксис: CBandUserExceededSpeed kbps rps max_conn kbps- максимална скорост за трансфер в kbps или kB/s rps- Максимален брой заявки за секунда max_conn- Максимален брой на едновременните връзки Бележка: Тази характеристика е възможна от версия 0.9.6.0 Име: CBandUserScoreboard Описание: Определя файл за записване на статистика Контекст: Синтаксис: CBandUserScoreboard path Бележка: Този файл трябва да има възможност за промяна от потребител apache Име: CBandUserPeriod Описание: Specifies a period after which a user's usages are cleared Контекст: Синтаксис: CBandUserPeriod period period – възможни единици: S (seconds), M (minutes), H (hours), D (days), W (weeks) Пример: CBandUserPeriod 1W CBandUserPeriod 14D CBandUserPeriod 60M Име: CBandUserPeriodSlice Описание: Specifies a period slice length Подразбиране: slice_len = limit Контекст: Синтаксис: CBandUserPeriodSlice slice_length Пример: CBandUserLimit 100G CBandUserPeriod 4W CBandUserPeriodSlice 1W Периода ще бъде разделен на 4 малки парчета(4W/1W=4).Всяко парче има 100G/4=25G трафик.След една седмица ограничението ще бъде 50G, след две седмици 75W и т.н. 3. Примери 3.1 Ограничаване по скорост #Дефиниране на клас CBandClassDst 172.16.0.0/16 CBandClassDst 192.168.0.0/16 ServerName dhstudio.eu ServerAlias www.dhstudio.eu DocumentRoot /var/www/ ErrorLog /var/www/error.log LogLevel warn CustomLog /var/www/access.log combined Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all #Максимална скорост 1024 kbps за този виртуален хост #Максимално 10 заявки за секунда за този виртуален хост #Максимално 30 отворени връзки за този хост CBandSpeed 1024 10 30 #Максимална скорост от 20kb/s, 2 заявки за секунда, 3 отворени връзки за клас local_traffic CBandClassRemoteSpeed local_traffic 20kb/s 2 3 Бележка: Когато създавате класове трябва да ги описвате преди директивата . Когато създавате ограничения на виртуален хост трябва да бъдат описани след директивата ServerName. 3.2 Ограничаване по трафик CBandDefaultExceededURL http://www.dhstudio.eu/bandwidth_exceeded.html ServerName dhstudio.eu ServerAlias www.dhstudio.eu DocumentRoot /var/www/ ErrorLog /var/www/error.log LogLevel warn CustomLog /var/www/access.log combined Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all #Възможен трафик за този виртуален хост 100 MB CBandLimit 100000 #Когато трафика е надвишен пренасочва към http://www.dhstudio.eu/bandwidth_exceeded.html CBandExceededURL http://abc.org/bandwidth_exceeded.html # Файл със статистика CBandScoreboard /var/www/cband/dhstudio.scoreboard # Период след които файла със статистика ще бъде занулен (30 минути) #(само във версии >=0.9.5-rc2) CBandPeriod 30M Бележка: Когато създавате класове трябва да ги описвате преди директивата . Когато създавате ограничения на виртуален хост трябва да бъдат описани след директивата ServerName. 4. Извеждане на уеб статистика При инсталирането в конфигурационния файл на mod_cband(/etc/apache2/mods-enabled/cband.conf) се описва от къде може да бъде изведена статистика за ограничените виртуални хостове: SetHandler cband-status SetHandler cband-status-me Може да видите статистиката от: http://www.site_cband.com/cband-status http://www.site_cband.com/cband-status-me Ако желаете статистиката да бъде представена под XML формат: http://www.site_cband.com/cband-status?xml http://www.site_cband.com/cband-status-me?xml В този си вид статистиката е свободна за гледане от абсолютно всеки. Ако желаете да има поне минимална защита може да използвате следния пример: Файл: /etc/apache2/mods-enabled/cband.conf Order allow,deny Allow from all SetHandler cband-status AuthType basic AuthName "Cband Authentication" Require valid-user AuthUserFile /var/www/.htpasswd SetHandler cband-status-me След като редактирахте конфигурационния файл на mod_cband е необходимо да създадете потребител: htpasswd -c /var/www/.htpasswd cband mod_cband е всичко което искате, лесен за инсталиране и конфигуриране, а освен това и работи чудесно. Той се ползва най- често от хостинг компании, но също и от всеки които има необходимост да ограничи скоростта или трафика на виртуален хост или хостове. Ако откриете грешка в mod_cband ще Ви помолим да бъде изпратена на : http://sourceforge.net/tracker/?group_id=154335&atid=791368 Библиография: 1.http://mod-cband.com 2.http://httpd.apache.org/docs/