Добро пожаловать на форум, Гость!
Войдите или зарегистрируйтесь!
Имя пользователя:   Пароль:  
Запомнить меня 




Начать новую тему Ответить на тему   [ Сообщений: 2 ] 
Автор Сообщение
СообщениеДобавлено: 31 мар 2010, 11:10 
Бородатый сис
Аватар пользователя
Статус: Не в сети

GeoIP: Kyrgyzstan

Сообщений: 2898
Откуда: Из серверной
Зарегистрирован: 03 мар 2010, 15:12
Благодарил (а): 19 раз.
Поблагодарили: 121 раз.
ОС: RHEL 6.7
Самый простой скриптик для ограничения объема скачанного траффика.
Модификация и предложения за вами. Единственно, по-моему нет смысла ставить ограничение на маки, поскольку маки для этого нужно знать, во-вторых, при подключении нового компа его нужно прописывать и в конце концов, юзеры не должны сами менять себе айпи. Предложения и улучшения в студию!
Синтаксис: [ Загрузить ] [ Скрыть ]
Используется подсветка синтаксиса bash
#!/bin/bash
#
#  Что Делает: на роутере при превышении траффика вырубает доступ!


#  Суть в чем: в таблицу mangle цепочки FORWARD добавляются правило ACCEPT для каждого IP  сети
# это делается командой `./tlimiter.sh on` и делается это для того,чтобы траффик каждого IP считался
# с этого момента. Раз в 5 минут я (cronom) запускаю скрипт `./tlimiter.sh limit`. Эта часть скрипта
# проверяет, не превысил ли кто-нить лимит в 200Мб(счетчик работает от 10Мб до 999Мб ТОЧНО верх.предел не проверял)
# Если кто-нибудь превысил лимит, его переадресует на апач(сами можете сделать что угодно, можете даже нах послать,
#такие сайты есть)
##############
##############
# Установка:
#  cp ./tlimiter.sh /root/bin/tlimiter.sh
# chmod +x /root/bin/tlimiter.sh
# for crontab:
#  crontab crontab
#  где cronfab -  файл со строками (Добавляете эти строки)
#########################################
#*/5 * * * * /root/bin/tlimiter.sh limit  1>/dev/null 2>&1
#1 1 * * * /root/bin/tlimiter.sh set0 1>/dev/null 2>&1
#########################################
# все
##############
##############
# Автор Алексей Тарасов
#
#iptables v 1.3.3
#bash v 3.00
#grep v 2.5.1
#awk v 3.1.4
ipt="/usr/sbin/iptables"
#путь до айпитейблс

unlim="192.168.5.25 \
      192.168.5.131 \
  192.168.5.189 \
  192.168.5.81 \
  192.168.5.229"

#айпи, на которые лимит не распространяется

apach=9999;
#  куда я переадресую превысивших лимит (у меня апач на роутере на 9999 порту, а там страница: В превісили лимит!)
case "$1" in
    on)
    i=1
    while [ $i -le 254 ]
   do
        $ipt -t mangle -A FORWARD -d 192.168.5.$i -j ACCEPT
   i=`expr $i + 1`
        done
   # создаю свою цепочку каждому айпи в сети
   for i1 in $unlim;
   do
   $ipt -t mangle -D FORWARD -d $i1 -j ACCEPT
   done
   # убираю цепочки для не облагающихся лимитом
   # эти 2 цепочки д.б. одинаковы с разницей  -D в последней -A в первой
   ;;
   
   
    set0)
    $ipt -t mangle -Z
    i=1
    while [ $i -le 254 ]
    do
    $ipt -t nat -D PREROUTING  -s 192.168.5.$i -p tcp --dport 80 -j REDIRECT --to $apach
    i=`expr $i + 1`
    done
    # ночью все таблицы мангл обнуляются и все лимиты сбрасываются
    #  то же, что в последней секции
   ;;
   
   
    off)
    i=1
    while [ $i -le 254 ]
   do
   $ipt -t mangle -D FORWARD -d 192.168.5.$i -j ACCEPT
        i=`expr $i + 1`
   done
   # удаляет все контрольные записи
   # д,б, той же что и в секции ON
   ;;
   
   
    status)
    echo "#########################################################################"
    echo "##########   Таблица Манглы здесь счетчики   ########################"
    echo "#########################################################################"

    $ipt -L -v -n -t mangle |grep 192.168.5|less
    #печатает контрольную таблицу
    echo "#########################################################################"
    echo "##########   Таблица Нат здесь переадресация заблоченных   ########"
    echo "#########################################################################"
    $ipt -t nat -L -v -n |grep $apach |less
    #печатает проштрафифшихся на данный момент
   ;;
   
   
    limit)
    #######################################################################  HERE LIMIT IN MB ##########
blocked=`$ipt -L -n -v -t mangle |grep 192.168.5 |awk '{if($2~/M$/){gsub(/M/,x);if($2>200){print $9}}}'`
# здесь вычисляется массив превысивших лимит цифрка 200 здеееееееееееееееееееееееееесь^ это и обозначает
for each in $blocked;
do
$ipt -t nat -D PREROUTING  -s $each -p tcp --dport 80 -j REDIRECT --to $apach
# эта строка здесь нужна для того,чтобы не множить это правило, удаляет примененное(если не было выдает ошибку,но робает дальше)
# потом применяет правило строки д.б. одинаковы с точностью до -D -A
$ipt -t nat -A PREROUTING  -s $each -p tcp --dport 80 -j REDIRECT --to $apach

#і$ipt -A INPUT -s $each -j DROP
#і$ipt -A FORWARD -s $each -j DROP
# как варианты
done
#проверяет, не превзошел ли кто лимит и если превзошел, то для него применяется правило, его айпи в массиве "blocked"
   ;;
   
   
    *)
    echo "Usage `basename $0` (on|off|set0|status|limit)"
   
    exit 1
        ;;

esac
Обработано за 0.019 секунд, используется GeSHi 1.0.8.4


Я не злопамятный, я просто часто ковыряю логи
Изображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 03 май 2010, 22:44 
Эникейщик
Аватар пользователя
Статус: Не в сети

GeoIP: Kyrgyzstan

Сообщений: 256
Откуда: с марса
Зарегистрирован: 16 мар 2010, 21:01
Благодарил (а): 18 раз.
Поблагодарили: 3 раз.
спасибо


SSD хочу


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
   Похожие темы   Автор   Ответов   Просмотров   Последнее сообщение 
Перенесенная ^_^

в форуме Linux

root

3

38

02 мар 2010, 16:15

Gen1us2k Перейти к последнему сообщению

Перенесенная Документация по Gentoo

в форуме Linux

Gen1us2k

0

4

05 мар 2010, 18:54

Gen1us2k Перейти к последнему сообщению



Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Собрано Raven. Русская поддержка phpBB
phpBB SEO