POPTOP ограничение скорости

Технические вопросы по UTM 5.0
JAO
Сообщения: 1153
Зарегистрирован: Вт дек 11, 2007 08:17

Сообщение JAO »

Я обратил внимание на содержимое файла radattr. Там с этими атрибутами связаны только цифры. Потому и подумал, что единица скорости кроме цифры может быть нужна.

Аватара пользователя
kamae1ka
Сообщения: 142
Зарегистрирован: Пн окт 04, 2010 05:14

Сообщение kamae1ka »

имхо выставляется без единиц измерений, т.к. по мотивам топика viewtopic.php?t=5396&highlight=poptop

Код: Выделить всё

Vendor:0;Attr:230;Val:{Скорость UpStream в Кбитах/с} тип String
Vendor:0;Attr:230;Val:{Скрость DownStream в Кбитах/с} тип String
уже заложена в pptpd

Аватара пользователя
kamae1ka
Сообщения: 142
Зарегистрирован: Пн окт 04, 2010 05:14

Сообщение kamae1ka »

тема актуальна!

JAO
Сообщения: 1153
Зарегистрирован: Вт дек 11, 2007 08:17

Сообщение JAO »

Знаем, да только идеи кончились.

andrew_fobos
Сообщения: 1
Зарегистрирован: Чт дек 23, 2010 12:04

Сообщение andrew_fobos »

Я сделал, сейчас доберусь до второго компьютера, выложу скрипты с комментариями и правила фаерволла. Заморочка с аттрибутами радиуса не прокатила, как не бился, сделал так:

Конфигурация - Slackware Linux 12, pptpd v1.3.4, pppd version 2.4.5, UTM5

Скрипт /netup/utm5/scripts/pptp_up

Код: Выделить всё

#!/bin/sh
AWK=/bin/awk
CAT=/bin/cat
GREP=/bin/grep
KILL=/bin/kill
MYSQL="mysql -N --host=DBHOST --user=DBUSER --password=DBPASSWORD DBNAME"; #Задаем параметры базы данных
IP=${1} #Получаем ip подключившегося клиента
LIMIT=${3} #Получаем лимит входящей скорости
ACC_ID=${2} #Получаем ID аккаунта
PPP_ID=`/sbin/route -n|grep "$IP  "|awk {'print $8'}` #Определяем имя интерфейса который создался для клиента
BLOCK=`echo "select is_blocked from accounts where id=$ACC_ID;"|${MYSQL}`; #Проверяем, не заблокирован ли аккаунт.
    if [ "$BLOCK" -eq "0" ]; #Если не заблокирован, то
        then
            /sbin/tc qdisc add dev $PPP_ID root tbf rate ${LIMIT}Kbit latency 50ms burst $[${LIMIT}*1024]; #Ограничиваем пропускную способность на интерфейс
            iptables -A FORWARD -d $IP/32 -s 0/0 -j ACCEPT; #Разрешаем форвард к клиенту
            iptables -A FORWARD -d 0/0 -s $IP/32 -j ACCEPT; #Разрешаем форвард от клиента
        else #Если заблокировано
            echo "Account is blocked"; #выводим в лог
            exit 1 #Выходим
    fi
В правилах фаерволла:
При открытии сессии, для указанного тарифного плана:

Код: Выделить всё

/netup/utm5/scripts/pptp_up FRAMED_IP ACC_ID *Лимит скорости в килобитах*
И по такому правилу на каждый тарифный план.

При эвенте: закрытие сессии скрипт /netup/utm5/scripts/pptp_down

Код: Выделить всё

#!/bin/sh
AWK=/bin/awk
CAT=/bin/cat
GREP=/bin/grep
KILL=/bin/kill
IP=${1} #Получаем IP
PPP_ID=`/sbin/route -n|grep "$IP  "|awk {'print $8'}`#Узнаем название интерфейса
tc qdisc del dev $PPP_ID root tbf #Удаляем правило шейпера
iptables -D FORWARD -s 0/0 -d $IP/32 -j ACCEPT; # удаляем
iptables -D FORWARD -d 0/0 -s $IP/32 -j ACCEPT; # Форварды
Правило фаерволла для всех клиентов:

Код: Выделить всё

/netup/utm5/scripts/pptp_down FRAMED_IP
Политика FORWARD в iptables - DROP
Идеи по оптимизации и доработке приветствуются =)

Аватара пользователя
kamae1ka
Сообщения: 142
Зарегистрирован: Пн окт 04, 2010 05:14

Сообщение kamae1ka »

посидев-подумав, пришел к выводу что, не все то золото, что блестит!
ставлю MPD .... всем активным участникам спасибо большущее!

Ответить