Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #local-net interface
- DEV=ku0
- #network: 10.50.1.0/24
- NET=10.50.1
- #========================================================================================
- spd="Kbit"
- ifb=ifb0
- #prepare and configure ifb
- modprobe ifb
- ifconfig ${ifb} up || (
- echo "ОШИБКА: Интерфейс ${ifb} не найден"
- exit
- )
- tc qdisc del dev ${DEV} root &>/dev/null
- tc qdisc del dev ${DEV} ingress &>/dev/null
- tc qdisc add dev ${DEV} ingress
- tc qdisc add dev ${DEV} root handle 1: htb
- tc qdisc del dev ifb0 root &>/dev/null
- tc qdisc del dev ifb0 ingress &>/dev/null
- tc qdisc add dev ifb0 root handle 1: htb
- tc filter add dev ${DEV} parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0
- ID=0
- #Для всех адресов от "1" до "254"
- for ((IP=1;IP<255;IP++)); do
- case $IP in
- # для некоторых адресов одна скорость
- 3 | 14 | 140 | 114 | 162 )
- RATE_D=2400
- RATE_U=460
- ;;
- # для всех остальных - другая
- *)
- RATE_D=530
- RATE_U=164
- ;;
- esac
- #downlink (internet->client)
- tc class add dev ${DEV} parent 1:0 classid 1:$[ID+IP] htb rate ${RATE_D}${spd} ceil ${RATE_D}${spd}
- tc filter add dev ${DEV} parent 1:0 protocol ip u32 match ip dst ${NET}.${IP}/32 flowid 1:$[ID+IP]
- #uplink (client->internet)
- tc class add dev ifb0 parent 1: classid 1:$[ID+IP] htb rate ${RATE_U}${spd} ceil ${RATE_U}${spd}
- tc filter add dev ifb0 parent 1: protocol ip u32 match ip src ${NET}.$IP/32 flowid 1:$[ID+IP]
- printf "IP: %0.15s / SPEED Download: %4d"${spd}" Upload: %4d"${spd}" \n" "${NET}.$IP" ${RATE_D} ${RATE_U}
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement