проблему я свою решил, не так красиво как хотелось бы, но решил(время поджимает)
если вдруг кому пригодится, то так сказать для потомков:
адреса выдаются в сети класса А, поскольку в моей сети данный диапазон задействован слабо(10.1.х.х 10.2.х.х) то я решил на авторизаторе воспользоваться вторым байтом IP адреса для ограничения скорости, как это все выглядит
грубо говоря. у нас есть несколько тарифов, дадим им условные цифры 3 6 8 и 12
соответственно в радуисе параметр Framed-IP-Address задавать в соответствии с тарифом 10.
12.1.2 или там 10.
6.5.76
далее этот адрес передается нами на авторизатор и попадает в upiface.sh:
Код:
#!/bin/sh
echo `date` $5 connected to $1 with $4 >> /var/log/mpd.stat
echo $1 > /var/log/mpd.ifaces/$5.$1
echo $4 >> /var/log/mpd.ifaces/$5.$1
date "+DATE: %Y-%m-%d%nTIME: %H:%M:%S" >> /var/log/mpd.ifaces/$5.$1
rulen=`echo $1| awk -Fng '{ print $2 }'`
# номер правила будет равняться номеру интерфейса + 1, то есть если у нас ng0 то номер правила будет 1 и так далее
rulen=$(($rulen+1))
# записываем номер правила в файлик
echo $rulen>>/var/log/mpd.ifaces/$5.$1
# вытаскиваем скорость из 2 байта полученного с Радиус-сервера IP адреса
speed=`echo $4| awk -F. '{ print $2 }'`
# расставляем условия, на какой тариф какую скорость выставить и какая скорость будет по умолчанию
if [ "$speed" = "12" ]; then
echo "512Kbit/sec"
/sbin/ipfw pipe $rulen config bw 512Kbits/sec
/sbin/ipfw add $rulen pipe $rulen ip from any to any via $1
elif [ "$speed" = "8" ]; then
/sbin/ipfw pipe $rulen config bw 256Kbits/sec
/sbin/ipfw add $rulen pipe $rulen ip from any to any via $1
elif [ "$speed" = "6" ]; then
/sbin/ipfw pipe $rulen config bw 128Kbits/sec
/sbin/ipfw add $rulen pipe $rulen ip from any to any via $1
elif [ "$speed" = "3" ]; then echo
/sbin/ipfw pipe $rulen config bw 56Kbits/sec queue 50 gred 0.002/10/30/0.1
/sbin/ipfw add $rulen pipe $rulen ip from any to any via $1
elif [ "$speed" = "20" ]; then echo "2048Kbit/sec"
/sbin/ipfw pipe $rulen config bw 2048Kbits/sec
/sbin/ipfw add $rulen pipe $rulen ip from any to any via $1
else echo "56Kbit/sec"
/sbin/ipfw pipe $rulen config bw 56Kbits/sec queue 50 gred 0.002/10/30/0.1
/sbin/ipfw add $rulen pipe $rulen ip from any to any via $1
fi
и downiface.sh
Код:
#!/bin/sh
echo `date` $3 close connection on $1 >> /var/log/mpd.stat
rulen=`tail -1 /var/log/mpd.ifaces/$3.$1`
/sbin/ipfw delete $rulen
/sbin/ipfw -q pipe del $rulen
rm -f /var/log/mpd.ifaces/$3.$1
если у кого-либо есть более элегантное решение, я буду очень рад