Шейпер на NAT'е имеет некоторые особенности, которые надо учитывать.
Самое гдавное правило - шейпер работает ТОЛЬКО на трафик, являющийся ИСХОДЯЩИМ для конкретного интерфейса.
Пример. Интерфейс eth0 - WAN, eth1 - LAN.
tc qdisc del dev eth1 root
tc qdisc del dev eth1 ingress
tc qdisc add dev eth1 root handle 2: prio
# заворачиваем приходящие из локальной сети пакеты на виртуальный интерфейс
tc qdisc add dev eth1 ingress
tc filter add dev eth1 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0
#
В итоге, правила, задающие полосу для направления Интернет->локалка вешаем на интерфейс eth1, для локалка->Интернет - на ifb0
Ну и полисинг скорость регулирует так себе, в случае с ifb можно применять более аккуратные дисциплины, без дропов пакетов.