Шейпинг в линуксе (vlan + nat + in/out)?
А в чем, собственно, проблема? Маркируйте через iptables в mangle::FORWARD, после чего обычный HTB на vlan* и eth1, через filter fw загоняйте трафик в соотв. классы.
Шейпить будете соответственно исход с интерфейса. NAT абсолютно не помеха поскольку раскраска трафика происходит до него.
Шейпер в линукс суров. Синтаксис tc этому только способствует. Особенно если нужно честно разделить входящую полосу, простого нативного способа это сделать я не знаю. Только с костылями в виде IFB или IMQ, лучше IFB он идеологически правилен, и даже вроде не надо патчить ядро и iptables. Исходящий трафик (идущий с роутера, к пользователям в виланы) я бы шейпил прям на их сетевых интрефейсах. Входящий от пользователей, маркировал и заворачивал в IFB. На IFB вешается дерево классов HTB и фильтрами по маркам пользователи попадают каждый на свой листик(leaf). У меня редиректится трафик вот этой чудесной командой
$TC filter add dev $VLAN parent ffff: protocol ip prio 1 u32 match u32 0 0 flowid 1:1 action ipt -j MARK --set-mark $VID action mirred egress redirect dev $IFB
Короче ставте фряху туда, если вы в ней разбираетесь, так будет и вам проще и пользователям надежней