К вышесказанному могу добавить, что можно еще включить использование ifb для шейпинга на входящем интерфейсе
Погуглите насчет ifb(скажу лишь что хорошее начало всего вопроса маршрутизации - LARTC http://www.opennet.dev/docs/RUS/LARTC/), в сети очень много про это написано. приведу в пример свой может и не очень удачный конфиг#!/bin/bash
DEV="ppp0"
modprobe ifb
ip link set dev ifb0 up
# Перенаправляем трафик с интерфейса, который смотрит в инет на ifb0
tc qdisc del dev $DEV handle ffff: ingress
tc qdisc add dev $DEV handle ffff: ingress
tc filter add dev $DEV parent ffff: protocol ip u32 match u32 0 0 action mirredegress redirect dev ifb0
# А дальше уже как хотим можем резать _входящий_ трафик.
tc qdisc del dev ifb0 root handle 1:
tc qdisc add dev ifb0 root handle 1: htb default 2 r2q 1
# Main class
tc class add dev ifb0 parent 1: classid 1:1 htb rate 100mbit quantum 6000
# For local traff, ssh etc
tc class add dev ifb0 parent 1:1 classid 1:2 htb rate 100mbit quantum 6000 burst 5k cburst 5k
# For ppp0
tc class add dev ifb0 parent 1:1 classid 1:3 htb rate 1024kbit ceil 1024kbit quantum 1600 burst 1k
# For 14k users
tc class add dev ifb0 parent 1:3 classid 1:31 htb rate 14kbps ceil 28kbps quantum 1600 burst 1k
# User=NoName, режем входящий и исходящий трафик пользователям
tc filter add dev ifb0 protocol ip parent 1:0 prio 0 u32 match ip dst 10.х.х.х/32 flowid 1:31
tc filter add dev ifb0 protocol ip parent 1:0 prio 0 u32 match ip src 10.х.х.х/32 flowid 1:31
tc filter add dev ifb0 protocol ip parent 1:0 prio 0 u32 match ip dst 192.168.у.у/32 flowid 1:31
tc filter add dev ifb0 protocol ip parent 1:0 prio 0 u32 match ip src 192.168.у.у/32 flowid 1:31
У меня сделан шейпер всего лишь на 2 компьютера по 14кбит каждому с возможностью "займа" до 28. Соотвественно он "подхватывает" только пакеты идущие через ppp0 интерфейс(у меня VPN), а интерфейсы eth0 eth1 итд не трогает, таким образом локальный трафик бежит свободно.
Аналогом ifb является imq, но в пределах маленькой сети разницы я не вижу, но ядро для поддержки ifb пересобирать не требуется, достаточно лишь modprobe ifb