>в nibs в таблице users добавляешь столбец rate >Потом заменяешь /etc/ppp/ip-up на аналогичный но на перле >и через DBI вытягиваешь из базы нужный rate и шейпишь с поиощью >htb > >#!/usr/bin/perl > >$interface = $ARGV[0]; >$tty = $ARGV[1]; >$speed = $ARGV[2]; >$localip = $ARGV[3]; >$remoteip = $ARGV[4]; >$ipparam = $ARGV[5]; > >my $rate = "64kbit"; >my $burst = "4kb"; > >($a1, $a2, $a3, $a4) = split(/\./, $remoteip); > >if($a3 eq "6") { > if(($a4 >= 1) && ($a4 <= 62)) { > $rate = "64kbit"; > $burst = "4kb"; > } > if(($a4 >= 65) && ($a4 <= 126)) { > $rate = "128kbit"; > $burst = "6kb"; > } > if(($a4 >= 129) && ($a4 <= 190)) { > $rate = "256kbit"; > $burst = "8kb"; > } > if(($a4 >= 193) && ($a4 <= 254)) { > $rate = "512kbit"; > $burst = "16kb"; > } > system("/sbin/tc qdisc add dev $interface root handle 1: >htb"); > system("/sbin/tc class add dev $interface parent 1: classid >1:10 htb rate $rate ceil $rate burst $burst"); > system("/sbin/tc qdisc add dev $interface parent 1:10 handle >10:0 sfq perturb 10"); > system("/sbin/tc filter add dev $interface parent 1:0 protocol >ip prio 5 u32 match ip dst $remoteip flowid 1:10"); > >} > >У меня вариант без DBI так как я freenibs не использую, но >дописывается за минут 5. > > >ip-down выглядит так: > >#!/bin/sh > ># this is a script which is executed after disconnecting the ppp >interface. ># look at man pppd for details > ># the followings parameters are available: >interface=$1 ># $2 = tty-device ># $3 = speed ># $4 = local-IP-address ># $5 = remote-IP-address ># $6 = ipparam > >/sbin/tc qdisc del dev $interface root Пользуюсь freenibs, сделал, как написано, довавил таблицу "rate" заменил скрипты на те что тут, но всеравно не шейпится! скорость как была на максимуме, так и есть, помогите, по данному вопросу!
|